【问题标题】:Why is program compiled with .NET 3.5, can't run with .NET 4?为什么程序用 .NET 3.5 编译,不能用 .NET 4 运行?
【发布时间】:2018-12-24 01:17:19
【问题描述】:

我有一个使用 .NET 3.5 编译的程序,当我将它复制到仅安装了 .NET 4.X 的 Windows Server 2016 机器时,它就无法运行。

它提示我安装 .NET 3.5 框架。

.NET 不向后兼容吗?有没有办法直接使用 .NET 4 运行该程序?

【问题讨论】:

  • 虽然你的分数比我多得多,但我认为这个问题是题外话。你已经收到了告诉你一切的信息。微软的某个人决定是这样的,StackOverflow 可以添加或解释什么?
  • 你需要一个 app.config 文件来说明使用 v4.0 运行时运行程序是可以的。但实际上,只要遵循“不能自动安装”的准则即可。可能读起来像 gobbledygook,但服务器管理员不应该被它难倒。

标签: .net


【解决方案1】:

.NET 4.x 版本是早期 .NET 4.x 版本的就地升级(例如,4.6.2 是 4.6.1、4.6、4.5.2、4.5.1 等的就地升级。 )。这样,您可以让应用程序以(例如).NET 4.6.2 和 .NET 4.5.2 并排运行 - 框架会处理它。但是,对于 .NET 4.x 版本而言,这是这样的。

对于早期版本,请参阅 MSDN 上的 Version Compatibility in the .NET Framework,尤其是“兼容性和并行执行”部分(强调我的):

如果您找不到适合您的问题的解决方法,请记住 .NET Framework 4.5(或其中一个关键版本)与版本 1.1、2.0 和 3.5 并行运行,并且是就地更新替换版本 4。对于针对版本 1.1、2.0 和 3.5 的应用,您可以在目标计算机上安装适当版本的 .NET Framework,以在最佳环境中运行应用。了解更多信息关于并行执行,请参阅Side-by-Side Execution


您提到您“有一个使用 .NET 3.5 编译的程序” - 如果这意味着您可以访问源代码,您可以尝试将其更改为 target a more recent version of the .NET framework(例如, Windows 10 的 1809 版本支持 .NET 4.7.2 built-in;Windows Server 2016 支持 .NET 4.6.2 built-in)。如果这不可能(您将不得不处理一些重大更改),那么您似乎必须在您希望运行应用程序的每台机器上安装 .NET Framework 3.5。


如果做不到这一点,您可以尝试编辑/添加 app.config 文件以强制应用程序使用 .NET 4.6 运行 - 有关详细信息,请参阅 How to: Configure an App to Support .NET Framework 4 or 4.5,但要点是:

将您的应用配置为在 .NET Framework 4 或 4.5 上运行

1) 添加或定位 .NET Framework 项目的配置文件。应用程序的配置文件与应用程序位于同一目录中,名称相同,但扩展名为 .config。例如,对于名为 MyExecutable.exe 的应用,应用配置文件名为 MyExecutable.exe.config。

要添加配置文件,请在 Visual Studio 菜单栏上选择“项目”、“添加新项”。从左侧窗格中选择常规,然后选择配置文件。将配置文件命名为 appName.exe.config。这些菜单选项不适用于 Windows Store 应用或 Windows phone 应用项目,因为您无法在这些平台上更改激活策略。

2) 在应用配置文件中添加<supportedRuntime> element如下:

<configuration>  
  <startup>  
    <supportedRuntime version="<version>"/>  
  </startup>  
</configuration>  

其中指定与您的应用支持的 .NET Framework 版本一致的 CLR 版本。使用以下字符串:

  • .NET 框架 1.0:"v1.0.3705"
  • .NET 框架 1.1:"v1.1.4322"
  • .NET Framework 2.0、3.0 和 3.5:"v2.0.50727"
  • .NET Framework 4 和 4.5(包括 4.5.1 等单点版本):"v4.0"

【讨论】:

    猜你喜欢
    • 2012-07-13
    • 2012-03-22
    • 2011-08-06
    • 2012-04-15
    • 2011-08-10
    • 2011-05-20
    • 2011-05-01
    • 2011-09-07
    • 2013-01-14
    相关资源
    最近更新 更多