The uigen.exe config file is the configuration file for uigen.exe. It specifies "placeholders" and their values, which uigen.exe uses in the templates. You can find the sample uigen.exe config file here: sample uigen.exe configuration file. As always, it assumes canonical project structure, and that the re-motion framework is located in a sub-directory of the solution, as explained here: PhoneBook project structure.

There is also a settings node with path information to uigen.exe templates.

Settings and <applicationGenerator template...>

The template attribute contains the path to the uigen.exe master file, always TabbedEditor.xml.

For re-motion version 1.13.6. and lower, these directories are located under the Remotion directory, the root directory of the re-motion distribution. Since uigen.exe can only handle absolute paths, you must adapt them to your particular location of that directory.

Just as the name suggests, the namespace settings are namespaces, NOT paths:

Visual Studio mildly enforces that the directory name of a project is the same as the namespace, so this might not matter if you follow this convention. However, if you don't, make sure that you specified the namespace.

Instead of a listing with complicated syntactic variables, here is an illustration of what is which, with the PhoneBook project as example:


The placeholder entries are key-value pairs of the form

<replace from="$key$" to="value" />

You might be tempted to nest such declarations, as in

<replace from="$RemotionAssembly$" to="\PhoneBook\Remotion\net-3.5\bin\Debug" />
<!-- RemotionAssembly and WxeEngine are always the same, so... !-->
<replace from="$WebClientAssembly$" to="$RemotionAssembly$" />

However, this won't work. uigen.exe can't resolve placeholders in value strings. This is the reason why it can't handle relative paths, by the way.

Please note that these placeholders are not the only ones that exist. Placeholders are also extracted from the domain assemblies as well. You can find a list of these extracted placeholders at in the SVN source

What's more, the values of settings are mirrored by placeholders, but those placeholders have slightly different names:

  • projectNamespaceRoot is mirrored by $PROJECT_ROOTNAMESPACE$
  • domainNamespaceRoot is mirrored by $DOMAIN_ROOTNAMESPACE$
  • templateRoot is mirrored by $ROOT_TEMPLATE_DIR$
  • targetRoot is mirrored by $ROOT_TARGET_DIR$
See also

This tech-note explains what uigen.exe does: What uigen.exe does