如何将CLR 2应用程序作为CLR 4应用程序运行

zpr*_*oxy 8 .net clr

假设我有一个旧的应用程序,它将尝试加载外部程序集.

  • 旧的应用程序编译为CLR 2.
  • 新程序集将编译为CLR 4.

我希望能够在CLR 4中运行那个旧的应用程序.我记得有一些xml清单魔法涉及.

如何创建清单xml文件以告知oldapplication.exe应在CLR 4下运行?

我找到了一些建议,但它们似乎对我不起作用.

oldapplication.exe.config:

<?xml version ="1.0"?>
<configuration>
 <startup>
      <!--set the appropriate .net version-->
      <requiredRuntime version="4.0.0.0"/>
 </startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)

在给另一个镜头时,我发现这个文件作为我的模板:

C:\ WINDOWS\Microsoft.NET \框架\ v4.0.20506\Aspnet_regsql.exe.config

<?xml version ="1.0"?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0.20506"/>
        <requiredRuntime version="v4.0.20506" safemode="true"/>
    </startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我还更新了代码来报告当前的CLR:

Console.WriteLine(typeof(object).Assembly.ImageRuntimeVersion);
Run Code Online (Sandbox Code Playgroud)

它现在有效!

Jb *_*ain 8

您需要提供正确的版本号.请注意,这是beta 1版本,它将更改,直到RTM结算一个:

<configuration>
 <startup>
      <supportRuntime version="4.0.20506"/>
 </startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)