在ASP.NETMVC中的web.config中,TargetFramework设置意味着什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (109)

我们的一个ASP.NET MVC 5 Web应用程序具有以下web.config设置:

<system.web>
  <compilation debug="true" targetFramework="4.6" />
  <httpRuntime targetFramework="4.5" />
  <!--... many other things -->
</system.web>

目前还不清楚为什么两个targetFramework设置,编译目标4.6然后试图在4.5下运行似乎是错误的......

显然我错过了一些东西,但是什么?

提问于
用户回答回答于

targetFramework存在的原因web.config是保持每个.NET Framework版本的重大更改之间的兼容性问题。targetFrameworkon compilationhttpRuntime属于每个开发和部署环境之间的区别。

根据MSDN博客

<compilation targetFramework="4.6" /> 选择执行编译时使用哪个版本的.NET Framework的引用程序集。(注意:即使我们自动推断它,Visual Studio也要求这个元素存在于Web.config中。)

此元素确定编译期间使用的程序集版本,以从当前项目创建依赖项和相关程序集。

<httpRuntime targetFramework="4.5" /> 意味着当前项目旨在使用.NET 4.5运行时程序集,而无需在将其加载到内存之前重新编译部署机器中的现有项目程序集。

因此,我们可以得出结论,targetFrameworkhttpRuntime元素中定义的版本号旨在维护编译项目和可用程序集在运行时的使用情况之间的兼容性,具体取决于目标机器中使用哪个版本的运行时文件。

因此,在你的情况下,这不是一个错误的行为,项目创建者只是希望保持运行时兼容性,使其具有类似特性的目标机器(即4.5版本)中可用的最低运行时版本,即使是使用较新版本的.NET程序集。版本4.5和4.6之间的差异相对较小,因此在此上下文中将运行时版本降低到4.5仍然可以接受。

相关参考:

https://msdn.microsoft.com/en-us/library/dn833123(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx

扫码关注云+社区