app.config <supportedRuntime>

And*_*ndy 3 .net configuration

假设我有一个使用VS2008针对.NET 2.0构建和编译的WinForms应用程序.

我的理解是,在运行时,应用程序将首先尝试加载.NET 2.0 CLR(因为这是针对它编译的),无论 app.config的任何"supportedRuntime"元素中是否列出任何内容.文件.

如果找不到它,那么它将通过检查app.config等进行决定另一个版本的过程.

例如,如果在机器上安装了.NET 2/3/3.5和.NET 4.0,我有:

<supportedRuntime>V4.0</supportedRuntime>
Run Code Online (Sandbox Code Playgroud)

在app.config中,应用程序仍将选择加载并运行.NET 2.0.

那是对的吗?

谢谢.

Jam*_*ing 9

MSDN页面似乎很清楚,用于构建的页面只是后备情况:

http://msdn.microsoft.com/en-us/library/w4atty68.aspx

如果应用程序配置文件中不存在<supportedRuntime>元素,则使用用于构建应用程序的运行时版本.

您是否看到与此MSDN页面不匹配的行为?

  • 好点 - 恕我直言,这是一个基于前一页的文档错误.除了我过去的PowerShell体验(PS v2似乎有问题),通过创建一个针对2.0的新控制台应用程序(我在VS 2010中做到这一点)只需1行Console.WriteLine(" CLR版本:{0}",Environment.Version); - 没有exe.config(默认情况下),并从命令行运行构建的exe,我得到:CLR版本:2.0.50727.4927(这是我们所期望的).如果我添加一个支持v4.0的配置(只通过记事本,没有VS动作)我得到CLR版本:4.0.30319.1 (4认同)