我有一个基于 .NET 2 运行时的应用程序。我想添加一点对 .NET 4 的支持,但不想(在短期内)将整个应用程序(非常大)转换为目标 .NET 4。
我尝试了创建应用程序 .config 文件的“明显”方法,具有以下内容:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
但我遇到了一些我在这里注意到的问题。
我想到了创建一个单独的应用程序域。为了测试它,我创建了一个面向 .NET 2 的 WinForm 项目。然后我创建了一个面向 .NET 4 的类库。在我的 WinForm 项目中,我添加了以下代码:
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = "path to .NET 4 assembly";
setup.ConfigurationFile = System.Environment.CurrentDirectory +
"\\DotNet4AppDomain.exe.config";
// Set up the Evidence
Evidence baseEvidence = AppDomain.CurrentDomain.Evidence;
Evidence evidence = new Evidence(baseEvidence);
// Create the AppDomain
AppDomain dotNet4AppDomain = AppDomain.CreateDomain("DotNet4AppDomain", evidence, setup);
try
{
Assembly doNet4Assembly = dotNet4AppDomain.Load(
new AssemblyName("MyDotNet4Assembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=66f0dac1b575e793"));
MessageBox.Show(doNet4Assembly.FullName);
}
finally
{
AppDomain.Unload(dotNet4AppDomain);
}
我的 DotNet4AppDomain.exe.config 文件如下所示:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
不幸的是,这会在执行 dotNet4AppDomain.Load 时引发 BadImageFormatException。我在我的代码中做错了什么,还是我试图做的只是不起作用?
谢谢!