为什么用.NET 3.5编译程序,而不能用.NET 4运行?

时间:2018-12-24 01:17:19

标签: .net

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

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

enter image description here

.NET不向后兼容吗?有没有一种方法可以直接在.NET 4中运行该程序?

1 个答案:

答案 0 :(得分:4)

.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>  
     

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

     
      
  • .NET Framework 1.0:"v1.0.3705"
  •   
  • .NET Framework 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"
  •