我们的 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 每个版本的重大更改之间出现兼容性问题。和...之间的不同targetFramework
on compilation
and httpRuntime
属于每个开发和部署环境。
根据MSDN 博客 https://blogs.msdn.microsoft.com/webdev/2012/11/19/all-about-httpruntime-targetframework/:
<compilation targetFramework="4.6" />
选择 .NET Framework 参考程序集的版本
执行编译时使用。 (注意:Visual Studio 要求
该元素出现在 Web.config 中,即使我们自动推断它。)
此元素确定编译期间使用的程序集版本,以从当前项目创建依赖项和相关程序集。
<httpRuntime targetFramework="4.5" />
意味着当前项目设计为使用 .NET 4.5 运行时程序集,而无需在将其加载到内存之前重新编译部署计算机中的现有项目程序集。
因此,我们可以得出结论,版本号定义在targetFramework
in httpRuntime
元素旨在维护运行时使用中已编译项目和可用程序集之间的兼容性,具体取决于目标计算机中使用的运行时文件版本。
因此,在您的情况下,这不是错误的行为,项目创建者只是希望保持运行时兼容性到具有类似特征的目标机器中可用的最低运行时版本(即版本 4.5),即使是使用较新版本编译的项目.NET 程序集。版本 4.5 和 4.6 之间的差异相对较小,因此在此上下文中将运行时版本保持为 4.5 仍然可以接受。
相关参考:
- .NET 中的应用程序兼容性
框架 https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/application-compatibility
- 从 .NET Framework 4.5 迁移到的重定向更改
4.6 https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/retargeting/4.5-4.6
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)