A couple weeks ago, I blogged about the Loader Framework. One of the key components of that framework is the .vcet.config. It’s basically the file that tells the Loader what to load and how to load it. In the knowledgebase of the SDK is the specification for the XML syntax. It’s the v3 version of schema which was introduced in Vault 2014.
- Ability to provide name/value pairs for your extension.
- Different ways to locate referenced assemblies.
- Ability to load an extension only in an x86 and x64 environment.
- Different formats for identifying a .NET type.
Below is the full spec, copied from the SDK documentation.
This is the top-level tag. There should be one and only one of these tags.
Required element: 1 <connectivity.ExtensionSettings3>
This tag is a collection of extensions. It is directly below <configuration>. There should be one and only one of these tags.
Required elements: 1 to many <extension>
This tag defines a component to be loaded at runtime.
- interface - The "type name" of the interface implemented by the extension.
- type - The "type name" of the class that implements the extension interface. The assembly must be in the same folder as the .vcet.config file.
- runtime - The "runtime requirement" of the extension. The default value is "Any"
Optional elements: 0 to many <setting>, 0 to many <resolveFolder>
This tag provides meta-data for the extension in the form of a key/value pair.
- key - The name of the meta data. The value must be unique within an <extension>
- value - The value of the meta data.
This tag provides locations to look for referenced assemblies. This is useful if an extension references other assemblies that are not in the same folder as the extension.
- lookup - This is a "lookup type", which determines how folders are located.
- appendToPath - This is a Boolean value that determines of the resolve folder should be appended to the PATH environment variable. This is useful when loading Win32 and COM components. The default value is "false".
Lookup-specific attributes: These attributes may be required depending on the lookup type.
- path - The path relative to the extension assembly. Used only if the lookup value is "RelativeToExtension".
- regkey - The registry key name. Used only if the lookup value is "Registry".
- regname - The name of the registry key. Used only if the lookup value is "Registry".
This value specifies the algorithm to use when locating paths on disk.
There are 3 possible values:
- ExplorerClient - The resolve path is the directory where the Vault client EXE lives. If multiple clients are installed, it will the the highest tier product. For example, the Vault Professional path will be used over the Vault Basic path. If multiple client versions are installed, only the one matching the Vault framework are used. For example the Vault 2014 framework will only resolve paths for Vault 2014 clients.
- Registry - The resolve path is located by looking up a registry key. The registry value can be a folder path or a file path. In the case of a file path, the parent folder becomes the resolve path. The 'regkey' and 'regname' attributes are required for this lookup type.
- RelativeToExtension - The resolve path is defined relative to the assembly path.
This value specifies the runtime environment required for the extension to run.
There are 3 possible values:
- x86 - The extension can only be loaded if the running app is 32 bit.
- x64 - The extension can only be loaded if the running app is 64 bit.
- Any - The extension can be loaded regardless of whether the running app is 32 or 64 bit. This is the default option.
This is the identifier for a .NET type. It is based off of the .NET syntax. There are two possible formats.
- Simple format: FullClassName, AssemblyName
- Complex format: FullClassName, AssemblyName, Version=VersionNumber, Culture=CultureName, PublicKeyToken=PublicKeyTokenValue
If the complex format is used, then the version, culture and public key token must match the assembly in order for the extension to load.