C# Asp.NET MVC应用程序是用.NET framework版本4.5构建的,我想在更高的.NET framework版本4.7.2上运行该应用程序

C# Asp.NET MVC应用程序是用.NET framework版本4.5构建的,我想在更高的.NET framework版本4.7.2上运行该应用程序,c#,asp.net,asp.net-mvc,.net-framework-version,C#,Asp.net,Asp.net Mvc,.net Framework Version,你能帮我回答下面的问题吗? Asp.NET MVC应用程序是使用.NET framework版本4.5构建的,我想在更高的.NET framework版本v4.7.2上运行该应用程序 如果我只更改web.config文件中的版本,它会工作吗? 或者我也必须在Visual Studio中使用更高版本构建应用程序 提前感谢。我强烈建议在Visual Studio中更改项目属性(在解决方案资源管理器中,右键单击项目|属性|目标框架(下拉菜单) 如果查看项目文件(.csproj)的标记,您将看到此处引用

你能帮我回答下面的问题吗? Asp.NET MVC应用程序是使用.NET framework版本4.5构建的,我想在更高的.NET framework版本v4.7.2上运行该应用程序

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


提前感谢。

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

如果查看项目文件(.csproj)的标记,您将看到此处引用的目标框架(作为项目设置的结果)。以下是目标为4.6.1的*.csproj文件中的代码片段:

    **<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>**
<MvcBuildViews>false</MvcBuildViews>
<UseIISExpress>false</UseIISExpress>
**v4.6.1**
错误的
错误的

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

目标框架

除了与运行时直接相关的CLR之外,targetFramework还将告诉.NET它应该以哪些程序集为目标

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

选择要安装的.NET Framework引用程序集的版本 在执行编译时使用。(注意:VisualStudio要求 此元素可能存在于Web.config中,即使我们自动推断它。)


这是为了满足您的需要而引入的:在4.5开发的应用程序中选择4.7行为。请注意,您可能会有一些行为,这不是魔术:)(即使在您的情况下,4.5到4.7也不会是问题

这个属性的效果是双重的。首先,它控制CLR的怪癖模式行为,就像控制台应用程序中的
元素一样。 其次,
是一种快捷方式,允许ASP.NET运行时推断大量配置设置

检查

程序集绑定

web.config
中还有一个用于将一系列程序集版本绑定到特定版本的配置文件

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

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


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

您可以在项目设置中更改框架版本。右键单击项目,单击设置,转到应用程序选项卡,您可以在那里选择框架。
<httpRuntime targetFramework="4.x.x"/>