【问题标题】:How to use .Net Framework 3.5 or 4.5 depending on which ever is available如何使用 .Net Framework 3.5 或 4.5,具体取决于哪个可用
【发布时间】:2012-09-12 12:00:08
【问题描述】:

我的应用使用 .net 3.5,并且在 4.5 下成功编译,无需任何修改,因此显然我的应用使用的库在 3.5 和 4.5 中都存在。但 windows 8 明确要求 3.5,即使 4.5 可用。

如何(以编程方式)让我的应用在 windows7 上运行时使用 3.5,在 windows8 上运行时使用 4.5?

PS:理想情况下,我想避免使用 app.config 文件

【问题讨论】:

  • "PS: 理想情况下我想避免使用 app.config 文件" 为什么会这样?因为这正是您想要的(使用<supportedRuntime>
  • 如果 Windows 8 需要 3.5,而您的应用仍然使用 3.5,您为什么要使用 4.5?
  • Windows 8 没有明确要求 3.5,默认情况下甚至没有安装。但只是程序 + 功能、Windows 设置中的一个复选框。以 3.5 为目标很好,但您需要打开该复选框或使用 .config 文件告诉 .NET 在 CLR 版本 4 上运行很好。
  • @hvd 已努力将应用程序保持为一个没有安装程序的单个程序集
  • @ChristianSpecht v3.5 在 Windows 8 上默认未启用,首先必须下载并安装它

标签: c# .net windows-8 .net-framework-version


【解决方案1】:

我唯一能想到的就是为这两个框架编译。并将两者都包含在您的安装程序包中,使用它根据您在系统上找到的内容安装正确的一个。

【讨论】:

  • 这将是一种不需要 app.config 文件的方法。但是在没有基于编译时/清单的解决方案的情况下,我现在将使用 元素。感谢您的帮助
  • 请注意,根据this question 中的答案,Windows 8 中包含 3.5 框架,但不会自动安装。如果您的程序需要它,它将是它。
【解决方案2】:

对于应用程序开发人员(和 IT 管理员): IT 管理员可以将 .NET 3.5 应用程序配置为在 .NET 3.5 或 .NET 4.5 上运行(取决于已安装的内容)。要在 3.5 或 4.5 上运行托管应用程序,只需在应用程序配置文件中添加一个部分。这将确保如果安装了 .NET 3.5,应用程序将在 .NET 3.5 上运行;否则应用程序将在 .NET 4.5 上运行。下面提供了配置文件中附加部分的示例:

<configuration>
   <startup>
      <supportedRuntime version="v2.0.50727"/>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
   </startup>
</configuration>

【讨论】:

    【解决方案3】:

    我没有找到不依赖于附加文件的解决方案。但是让我的 .net 3.5 应用程序在 windows 8 上运行的最简单方法是创建一个 app.config 文件(我想避免)并添加“&lt;supportedRuntime&gt;”元素。

    <configuration>
      <startup>
        <supportedRuntime version="v4.0" /> 
      </startup>
    </configuration> 
    

    【讨论】:

    • 配置文件的名称是什么。我有一个名为 mydll.dll 的 dll
    【解决方案4】:

    Win8 将检测到对 3.5 的需求并无缝提示用户安装它。不值得为了进一步精简而跳槽

    【讨论】:

    • 嗯,我已经测试过一次,到目前为止有 100% 的失败率。安装程序先运行。
    • 在我的场景中,重要的是我让用户免于下载和安装 .NET 框架的麻烦。
    猜你喜欢
    • 2014-08-18
    • 2017-06-03
    • 1970-01-01
    • 2013-10-06
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多