Unfortunately, the .NET Framework does not support modifications on the existing
AppDomains. Therefore a wrapper is necessary in case someone wants to configure
AppDomain settings for an executable. This article gives a brief overview how such a wrapper might look like.
With the release of .NET Framework 2.0, Microsoft introduced a new philosophy regarding the configuration of created
AppDomains. The idea is that existing
AppDomain configurations must not be altered anymore. Thus, if you use methods that affect the configuration (e.g.
ShadowCopyFiles) of an existing
AppDomain, Visual Studio shows a warning, informing that this method is marked obsolete.
So far so good, problems occur in case you want to change the configuration of the default
AppDomain of an application. One might expect support from the app.config file. Unfortunately, the framework does not contain such settings yet.
That's where the wrapper described in this article comes in.
Using the Code
The wrapper class is a very small, independent console application. It hosts a custom
AppDomain in which the configured application is executed with the given settings.
internal class ExecutableWrapper
private static void Main(string commandLineArguments)
executableDomainSetup = new AppDomainSetup();
executableDomain = AppDomain.CreateDomain
("", AppDomain.CurrentDomain.Evidence, executableDomainSetup);
The App.config file contains the following
<add key="ShadowCopyFiles" value="true"/>
<add key="ApplicationFullPath" value="C:\AnyPath\MyExecutable.exe"/>
Points of Interest
As you might have recognized, command line arguments are directly passed through to the executed application. In some cases, this needs to be changed.
The example above covers only the
ShadowCopyFiles property of the
AppDomainSetup. However, this approach can be expanded with any property or method being part of the
- 22nd December, 2007 - Initial post