【问题标题】:app.config <supportedRuntime>app.config <supportedRuntime>
【发布时间】:2010-06-02 21:07:02
【问题描述】:

假设我有一个使用 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>

在 app.config 中,应用仍然会选择加载和运行 .NET 2.0。

对吗?

谢谢。

【问题讨论】:

    标签: .net configuration


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 顺便说一句,作为一个数据点,当我需要加载一些 4.0 程序集时,我使用 supportedRuntime 强制我的 powershell 进程加载到 4.0 以下,它对我来说工作得很好。
    • 嗯,这个链接msdn.microsoft.com/en-us/library/9w519wzk.aspx 似乎表明首先要检查应用程序的构建对象,如果存在则使用该 CLR。​​
    • 好点-恕我直言,这是基于前一页的文档错误。除了我过去的 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
    • 如何:配置应用程序以支持 .NET Framework 4 或 4.5 msdn.microsoft.com/en-us/library/jj152935.aspx "配置文件按照列出的顺序读取 条目,并使用列出的第一个 .NET Framework 版本" HOWEVER "但是,.NET Framework 1.0、1.1、2.0、3.0 和 3.5 应用程序不会自动在 .NET Framework 4 或更高版本上运行,在某些情况下,用户可能会收到错误消息并可能会提示安装.NET Framework 3.5。激活行为也可能取决于用户的操作系统"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2018-05-08
    相关资源
    最近更新 更多