C# 将ASP.NET更改为4.0是否会使用CLR 4运行虚拟目录?
我们计划在我们的一个Web服务中使用.NET4,因为它可以更好地处理线程池 这让我想到,如果我将虚拟目录下运行的ASP.NET版本更改为4.0,我甚至不必使用.NET 4重新编译我的库,因为IIS将使用.NET CLR 4生成新的w3process,我的所有库都将加载到该版本中 这意味着它将在我的.NET2库中使用新的线程池。有些事情听起来不太对劲 有些东西听起来不对 不,是的。将虚拟目录配置为使用ASP.NET 4时,应用程序将使用CLR 4.0运行,即使所有程序集都是根据.NET 2.0编译的C# 将ASP.NET更改为4.0是否会使用CLR 4运行虚拟目录?,c#,asp.net,.net-4.0,iis-6,clr,C#,Asp.net,.net 4.0,Iis 6,Clr,我们计划在我们的一个Web服务中使用.NET4,因为它可以更好地处理线程池 这让我想到,如果我将虚拟目录下运行的ASP.NET版本更改为4.0,我甚至不必使用.NET 4重新编译我的库,因为IIS将使用.NET CLR 4生成新的w3process,我的所有库都将加载到该版本中 这意味着它将在我的.NET2库中使用新的线程池。有些事情听起来不太对劲 有些东西听起来不对 不,是的。将虚拟目录配置为使用ASP.NET 4时,应用程序将使用CLR 4.0运行,即使所有程序集都是根据.NET 2.0编译
更新: 要验证这一点,您可以创建以下
Test.aspx
页面:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Threading" %>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<%= typeof(ThreadPool).Assembly.FullName %>
</body>
</html>
然后将虚拟目录ASP.NET版本交换回2.0,并生成以下内容:
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
因此,我们可以通过在虚拟目录中更改目标框架版本看到,我们可以在CLR 4.0中运行应用程序。为什么您认为加载.NET 2.0库很奇怪?奇怪的是,我没有针对.Net4重新编译我的Web服务,因为它将使用.NET 4 CLR来运行它。这意味着我只需更改ASP.NET版本就可以获得.NET 4的好处。是吗?我还是不明白你为什么觉得奇怪。.NET4.0是为加载.NET2.0程序集而设计的。是的,这是否意味着我可以在不重新编译.NET2库的情况下在.NET4中快速使用新的线程池?