2

根据微软的文档,false是“useLegacyV2RuntimeActivationPolicy”配置的默认值:

http://msdn.microsoft.com/en-us/library/bbx34a2h.aspx

使用 .NET Framework 4 及更高版本的默认激活策略,即允许旧运行时激活技术将 CLR 版本 1.1 或 2.0 加载到进程中。设置此值可防止混合模式程序集加载到 .NET Framework 4 或更高版本中,除非它们是使用 .NET Framework 4 或更高版本构建的。此值[false]是默认值。

桌面应用程序以及自动或手动添加到项目中的任何配置文件似乎就是这种情况。默认情况下它没有设置为true也是有道理的,因为微软试图保持 .Net 4.0 无影响

引用: http: //www.marklio.com/marklio/PermaLink,guid,ecc34c3c-be44-4422-86b7-900900e451f9.aspx)。

我希望这同样适用于 Web 应用程序,但似乎并非如此。web.config 看起来像预期的那样,但 aspnet.config 文件(即位于 Microsoft.NET 目录中的全局设置文件)实际上将此值设置为true

有谁知道这个决定背后的理由?也就是说,决定阻止 ASP.Net 的进程内 SxS。

我非常感谢对此的任何见解。(特别是在最后一天把我的头撞到墙上之后。)

4

1 回答 1

1

[我的回答是从运行时团队成员的角度与合作伙伴一起帮助理解进程内 SxS 将如何塑造他们的产品]

使 .NET Framework 进程内 SxS 兼容是一项相当大的工作,涉及通过 mscoree 更新大量内部调用(显式或隐式,如 COM 激活模式)。团队必须选择从场景角度和成本角度都有意义的默认设置。作为一个已经对选择使用哪个运行时来托管站点具有丰富支持的托管平台,ASP.net 选择留在单一运行时世界。桌面应用程序通过灵活组合不同技术(第 3 方扩展、插件等)而受益,并受益于新运行时版本的高兼容性 in-proc SxS 模式,这使得 in-proc SxS 的缺点并不那么糟糕(如果它不好,你总是可以选择回到单个运行时)。对于网站,

对于许多团队来说,最有用的选择框架是“当我们发现自己处于意外的进程内 SxS 场景中时,我们想要什么行为”。对于 ASP.net,答案是,我们希望尽可能保持高性能和可扩展性,而这一决定在此版本中释放了我们更多的资源来专注于 ASP.net 的重大改进,这一事实是锦上添花。

于 2013-03-05T16:46:51.763 回答