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...>
template attribute contains the path to the
uigen.exe master file, always
templateRoot: which set of templates to use for generating the web application project.
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.
targetRoot: This is the solution root, not the root directory for the web project, i.e. the top-level directory for all your Visual Studio sub-projects.
Just as the name suggests, the namespace settings are namespaces, NOT paths:
projectNameSpaceRoot: namespace of the web application project
domainNameSpaceRoot: namespace of the domain project
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
You might be tempted to nest such declarations, as in
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.
$ReferencesDir$: the name of the directory in the web application project for storing the references to the domain- and re-motion assemblies. By convention, this node is named "References" in Visual Studio, so that's probably what you will use for the placeholder value.
$DomainProjectName$: the name of the directory with the domain project in Visual Studio (not to be confused with the namespace)
$DomainProjectAssembly$: The name of the domain assembly that shall be inspected by
uigen.exe(i.e. where to find the domain object classes, without ".dll")
$WebProjectName$: the name of the directory with the web application project in Visual Studio. (generated by
$WebClientAssembly$: the name of the assembly that is the target of the web project's target. (i.e. the
.dll-product showing up in
bin\Releaseafter a compile and link).
$RemotionAssembly$: a better name would be
$RemotionAssemblyDirectories$. It is the path to the
bin\Releasedirectory where the re-motion framework's binary assemblies can be found.
$WxeEngine$: where the re-call code generator
WxeGen.execan be found. This has been introduced for developers who might want to use an alternative
WxeGen.exeis part of the re-motion framework, its location is always the same as that of the other re-motion assemblies (see previous item,
$STRONG_SUPPLEMENT$: a VERY important placeholder for specifying the framework's version. re-motion, and by extension,
uigen.exeinsist on complete strong names.
- NOT ENOUGH:
- USE STRONG NAME:
Remotion.dll, Version=22.214.171.124, Culture=neutral, PublicKeyToken=fee00910d6e5f53b
- NOT ENOUGH:
$DomainProjectGuid$: The project GUID you find in the domain project's
.csprojfile. This GUID is included in the web project's (web client's)
.csprojfile, but not checked by anyone. Use a syntactically valid Guid, nobody will bother you.
$USER_APPNAME$: a string with the display name of the generated web application
$USER_DEFAULT_ASPX_TOPIC$: a string to be shown on the
default.aspxpage showing the Start link to aid the user (the string usually says "To start the application, just click 'Start'") This is harder to explain than to demonstrate. Click here and you will easily understand it: FIXME
$USER_DEFAULT_STARTPAGES$: an invocation of the re-call function to be called when the user clicks "Start" (or equivalent). (Try it out with the online PhoneBook)
$USER_STORAGEPROVIDER$: the name of the storage-provider, as declared in the web project's
Web.configfile (generated by
$USER_CATALOGNAME$: the name of the database (and the identifier for the connection string) in the web project's
Web.configfile (generated by
uigen.exe) – this should be the same as specified for
App.Config, explained here: using dbschema.exe
$USER_STATUSBAR$: legacy placeholder, always set to "yes"
$USER_CLASSIC_APPSTYLE$: legacy placeholder, always set to "no"
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:
projectNamespaceRootis mirrored by
domainNamespaceRootis mirrored by
templateRootis mirrored by
targetRootis mirrored by
This tech-note explains what
uigen.exe does: What uigen.exe does