【问题标题】:An Asp.NET MVC application is built with .net framework version 4.5, I want to run the application on a higher .net framework that is 4.7.2Asp.NET MVC 应用程序是使用 .net 框架版本 4.5 构建的,我想在更高版本的 .net 框架上运行该应用程序,即 4.7.2
【发布时间】:2018-09-05 14:38:17
【问题描述】:

您能帮我解决以下问题吗? Asp.NET MVC 应用程序是使用 .net 框架版本 4.5 构建的,我想在更高版本的 .Net Framework 版本(即 v4.7.2)上运行该应用程序。

如果我只更改 web.config 文件中的版本,它会起作用吗? 或者我也必须在 Visual Studio 中构建更高版本的应用程序?

提前致谢。

【问题讨论】:

  • 您可以在项目的设置中更改框架版本。右键单击项目,单击设置,到应用程序选项卡,您可以在那里选择框架。

标签: c# asp.net asp.net-mvc .net-framework-version


【解决方案1】:

目标框架

除了与运行时直接相关的 CLR 之外,targetFramework 会告诉 .NET 它应该针对哪些程序集。

<compilation targetFramework="4.x.x"/>

选择 .NET Framework 参考程序集的版本 执行编译时使用。 (注意:Visual Studio 要求 这个元素存在于 Web.config 中,即使我们自动推断它。)

<httpRuntime targetFramework="4.x.x"/>

这是为了做你想做的事情而引入的:选择 4.7 的行为和 4.5 开发的应用程序。请注意,您可能有一些行为,这不是魔术:)(即使在您的情况下 4.5 到 4.7 不会成为问题,恕我直言)。

这个属性的作用是双重的。首先,它控制 CLR 的 quirks 模式行为,就像在控制台应用程序中的 &lt;supportedRuntime&gt; 元素一样。 其次,&lt;httpRuntime targetFramework="4.5" /&gt; 是允许 ASP.NET 运行时推断大量配置设置的快捷方式。

查看https://blogs.msdn.microsoft.com/webdev/2012/11/19/all-about-httpruntime-targetframework/

程序集绑定

web.config 中还有assembling binding,其目的是将一系列程序集版本绑定到特定版本。

问题是 .NET Framework 程序集(不是 .NET Core 程序集)基于 CLR 版本。据我所知,框架中包含的所有程序集(不是像 MVC 这样的附属程序)都将是4.0.0.0。因此,您不能将 4.x Framework 程序集绑定到 4.7 framework,因为它们将具有相同的程序集版本。

但您可以绑定外部 (NuGet) 依赖项。

无论如何,除非您有不同的 Web 服务器配置并安装了不同的框架,否则最简洁的方法是通过更改 Visual Studio 项目属性中的目标框架来重新编译您的应用程序,如前所述。

【讨论】:

    【解决方案2】:

    我强烈建议在 Visual Studio 中更改 PROJECT 属性(在解决方案资源管理器中,右键单击项目 | 属性 | 目标框架(下拉菜单);

    如果您查看项目文件 (.csproj) 的标记,您将看到那里引用的目标框架(作为项目设置的结果)。来自 4.6.1-targeted *.csproj 文件的代码 sn-p 在这里:

        **<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>**
    <MvcBuildViews>false</MvcBuildViews>
    <UseIISExpress>false</UseIISExpress>
    

    进行 web.config 更改可能/不会,AFAIK,以任何方式影响此值(以及因此任何生成的程序集)。

    【讨论】:

      猜你喜欢
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      相关资源
      最近更新 更多