Framework XML file format

A target framework definition file is a file with the extension .framework. To edit such a file, drag it onto the LLBLGen Pro designer from windows explorer. The .framework file is an XML file with the following format.

<?xml version="1.0" ?>
<framework xmlns="http://sd/llblgen/pro/frameworkDefinition.xsd" name="" dataFolder=""
    supportsImplicitEnumToNumericConversion="" supportsImplicitEnumToStringConversion=""
    supportsImplicitNumericConversions="" sortOrder="">
    <supportedDrivers>
        <driver id=""/>
        <!-- more -->
    </supportedDrivers>
    <supportedPlatforms>
        <platform name=""/>
        <!-- more -->
    </supportedPlatforms>
    <supportedTemplateGroups>
        <templateGroup name=""/>
        <!-- more -->
    </supportedTemplateGroups>
    <attributeDefaults>
        <attribute targetElement="" value=""/>
        <!-- more -->
    </attributeDefaults>
    <interfaceDefaults>
        <interface targetElement="" value=""/>
        <!-- more -->
    </interfaceDefaults>
    <namespaceDefaults>
        <namespace targetElement="" value=""/>
        <!-- more -->
    </namespaceDefaults>
    <validationAssembly filename="" path=""/>
    <systemTypeConverters>
        <systemTypeConverter typeName="" codeGeneratorData=''/>
        <!-- more -->
    </systemTypeConverters>
    <internalTypeMappings>
        <mappingSet forDatabase="">
            <typeMapping internalType="" externalType=""/>
            <!-- more -->
        </mappingSet>
        <!-- more -->
    </internalTypeMappings> 
</framework>

The framework element has the following attributes:

  • name, which is the name of the framework as it's known to the designer.
  • dataFolder, which is the name of the folder within Frameworks, which is the location of the framework's specific data, like tasks, templates and dlls.
  • supportsImplicitEnumToNumericConversion, Boolean. True: an implicit conversion from enum to byte/short/int/long/sbyte/ushort/uint/ulong is supported without a type converter. False: no implicit conversion support, a type converter is needed. Default is 'True', so defining this is only needed if the framework doesn't support the feature
  • supportsImplicitEnumToStringConversion, Boolean. True: an implicit conversion from enum to string is supported without a type converter. False: no implicit conversion support, a type converter is needed. Default is 'True', so defining this is only needed if the framework doesn't support the feature.
  • supportsImplicitNumericConversions, Boolean. True: implicit conversions between numeric types are supported without a type converter being present on the mapping. False: no implicit conversions between numeric types are supported, they all need a type converter. Default is 'false'.
  • sortOrder, Integer. If not specified, it resolves to 5. The lower the number, (minimum is 0) the higher the framework will be listed in the new project dialog. If multiple frameworks have the same sortOrder, they're sorted by name, ascending.

The following sub-elements are recognized:

  • supportedDrivers. This element is similar to the supportingDrivers element of a platform definition file. If no driver is specified, all drivers are considered supported.
  • supportedPlatforms. This element is similar to the supportedPlatforms element of a tasks definition file. If no platform is specified, all platforms are considered supported.
  • validationAssembly. This is the assembly which will perform additional validation of the project which is specific for the framework. filename is the name of the assembly file, path is either a relative path within dataFolder or an absolute path for the assembly.
  • supportedTemplateGroups. This element is similar to the supportedTemplateGroups element of a tasks definition file. Template groups are defined centrally, in the shared template groups folder or in the additional templates folders and can be used for filtering of available templates.
  • attributeDefaults. This section contains attribute defaults for various target elements. targetElement is the same as with setting definitions. Optional.
  • interfaceDefaults. This section contains additional interface defaults for various target elements. targetElement is the same as with setting definitions. Optional.
  • namespaceDefaults. This section contains additional namespace defaults for various target elements. targetElement is the same as with setting definitions. Optional.
  • systemTypeConverters. This section contains the relationships between a system type converter type, used by the designer, and the framework specific type converter used by the target framework. The typeName is the system type converter type and codeGeneratorData is the element emitted by the code generator where it runs into the specified system type converter.
  • internalTypeMappings. This section contains the relationships between a type used by the designer, e.g. geometry/geography types, and the external type, i.e. the equivalent type used by the target framework. These are stored per database as for the same internal type it might be the target framework uses different external types: one per database type.