相关疑难解决方法(0)

在.net 4.0上执行应用程序时,在.net 2.0下编译

假如说:

  1. 下面的C#源代码是在.NET 2.0(CLR 2.0)下编译的; 和
  2. 以上申请使用app.config下面列出的; 和
  3. 只有.NET 4.0(CLR 4.0)安装在执行应用程序的客户端的环境中,

然后在内部加载哪个版本的.NET来在客户端环境中执行应用程序?

描述

下面的控制台应用程序将只显示其CLR版本v4.0.30319在控制台中,但@Reed Copsey对堆栈的回答(CLR 2.0与4.0性能?)表明在这种情况下加载了.NET 2.0.此外,在MSDN上,它表示何时useLegacyV2RuntimeActivationPolicy设置为false false:

使用.NET Framework 4及更高版本的默认激活策略, 即允许旧版运行时激活技术将CLR版本1.1或2.0加载到该过程中.

尽管app.config有.NET 4.0配置,但听起来像是加载了.NET 2.0 .我误解了什么吗?

资源

C#源代码

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string version = Environment.Version.ToString();
            Console.WriteLine(version);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

app.config

<?xml version="1.0"?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="false">
        <supportedRuntime version="v4.0.30319"/>
    </startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)

.net c# version .net-4.0 .net-2.0

20
推荐指数
1
解决办法
7127
查看次数

标签 统计

.net ×1

.net-2.0 ×1

.net-4.0 ×1

c# ×1

version ×1