首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ASP .NET MVC的web.config中,TargetFramework设置是什么意思?

在ASP .NET MVC的web.config中,TargetFramework设置是什么意思?
EN

Stack Overflow用户
提问于 2016-10-21 15:16:33
回答 2查看 78.4K关注 0票数 96

我们的其中一个ASP.NET MVC5 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下运行似乎是错误的……

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

EN

回答 2

Stack Overflow用户

发布于 2016-10-21 16:21:43

web.config中存在targetFramework的原因是为了避免每个版本的.NET框架的重大更改之间的兼容性问题。compilationhttpRuntime上的targetFramework的不同之处在于不同的开发和部署环境。

根据MSDN blog的说法

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

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

因此,根据目标计算机中使用运行时文件的版本,我们可以得出在httpRuntime元素中的targetFramework上定义的版本号,该版本号旨在维护运行时使用中已编译项目和可用程序集之间的兼容性。

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

相关参考文献:

票数 65
EN

Stack Overflow用户

发布于 2018-05-03 10:02:18

根据我的理解,<compilation debug="true" targetFramework="4.6" />正在被<httpRuntime targetFramework="4.5" />抑制,因为httpRuntime被翻译成了以下内容

<compilation targetFramework="4.5" />
<machineKey compatibilityMode="Framework45" />
<pages controlRenderingCompatibilityVersion="4.5" />

因此,上面的设置可能是由于一些误解或错误,如果是由VS直接完成的,我不相信这是真的。

为了理解这个设置和所有其他相关内容意味着什么,这篇由微软员工撰写的名为All about 的博客可能会对你有所帮助。但它的主旨是;

.NET框架(包括ASP.NET)致力于在机器上更新现有框架时保持接近100%的兼容性。我们试图尽可能地确保,如果一个应用程序是在.NET框架4上开发和部署的,那么它将继续在4.5上工作。这通常意味着在两个版本之间保持产品中的古怪、错误或不受欢迎的行为,因为修复它们可能会对依赖这些行为的应用程序产生负面影响。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40170567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档