.net app.config<;supportedRuntime>;

.net app.config<;supportedRuntime>;,.net,configuration,.net,Configuration,假设我有一个WinForms应用程序,它是使用VS2008根据.NET2.0构建和编译的 我的理解是,在运行时,应用程序将首先尝试加载.NET 2.0 CLR(因为这是它编译的依据),而不管app.config文件的任何“supportedRuntime”元素中列出的任何内容 如果找不到它,那么它将通过检查app.config等来决定另一个版本 例如,如果.NET 2/3/3.5和.NET 4.0安装在计算机上,我有: <supportedRuntime>V4.0</suppo

假设我有一个WinForms应用程序,它是使用VS2008根据.NET2.0构建和编译的

我的理解是,在运行时,应用程序将首先尝试加载.NET 2.0 CLR(因为这是它编译的依据),而不管app.config文件的任何“supportedRuntime”元素中列出的任何内容

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

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

<supportedRuntime>V4.0</supportedRuntime>
V4.0
在app.config中,应用程序仍将选择加载并运行.NET 2.0

对吗


谢谢。

MSDN页面似乎很清楚,用于构建的只是回退案例:

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


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

顺便说一句,作为一个数据点,当我需要加载一些4.0程序集时,我使用supportedRuntime强制我的powershell进程在4.0下加载,并且对我来说效果很好。嗯,这个链接似乎表明,首先要做的事情是检查应用程序是根据什么构建的,如果存在CLR,就使用它。这是一个基于前一页的文档错误。除了我过去的PowerShell经验(PS v2似乎有问题),它还可以通过创建一个新的控制台应用程序来测试,该应用程序的目标是2.0(我在VS2010中这样做了),只需一行console.WriteLine(“CLR版本:{0}”,Environment.version);-如果没有一个exe.config(默认情况下),并且从命令行运行构建的exe,我会得到:CLR version:2.0.50727.4927(这是我们所期望的)。如果我添加了支持v4.0版本的配置(仅通过记事本,无VS操作),我将获得CLR版本:4.0.30319.1如何:配置应用程序以支持.NET Framework 4或4.5“配置文件按照条目列出的顺序读取条目,并使用列出的第一个.NET Framework版本”“但是,.NET Framework 1.0、1.1、2.0、3.0和3.5应用程序不会自动在.NET Framework 4或更高版本上运行,在某些情况下,用户可能会收到错误并提示安装.NET Framework 3.5。激活行为也可能取决于用户的操作系统“