.NET FRAMEWORK版本:4.0.30319; ASP.NET版本:4.6.118.0

https://gqqnbig.me/2015/11/23/net-framework%e7%89%88%e6%9c%ac4-0-30319-asp-net%e7%89%88%e6%9c%ac4-6-118-0/?utm_source=tuicool&utm_medium=referral

.net framework 4.5是一个就地升级,直接升级了.net 4.0;而不是与.net 4.0并存。[1]

.net framework 4.5由公共语言运行时(CLR)4.0、一些新的类和老的类的补丁组成,所以Environment.Version仍然返回4.0.30319.42000。

安装Visual Studio 2015时也会一起安装.net 4.6,同样4.6也是一个就地升级。[2]

在目标版本为4.0的项目里,按常识肯定不能访问4.6引入的类和方法。

IReadOnlyCollection<>泛型接口是.net 4.5引入的,当然不能在4.0里使用

但是你如果用反射的方法搜索程序集,会发现IReadOnlyCollection其实加载进来了。

如果你安装了.net 4.5,即使目标版本为4.0,4.5的新类型也会加载进来

另外,4.5和4.6的升级,都包括对4.0类型的修改,如System.Web.UI.Control新增了BeginRenderTracing()方法。

所以,在目标版本为4.0的项目里不能访问4.5的类型,其实只是visual studio做的一个限制。就是说你的程序明明是运行于4.5版本,但你还是欺骗自己说你运行的是4.0。

所以,如果你已经升级到了.net framework 4.5或4.6,建议同时把你的4.0项目升级成最高版本,避免自欺欺人,使用更多的新类型和方法,并且排查问题也知道这是4.5或4.6的问题,而不是4.0,除非你有一台没升级4.5的机器。

本文所用的测试代码如下

[code lang="vb"]
Private Sub Default_Load(sender As Object, e As EventArgs) Handles Me.Load
Response.Write(".NET Framework版本是" & Environment.Version.ToString & "。<br/>")

‘Dim a As System.Collections.Generic.IReadOnlyCollection(Of String)

Dim allLoadedTypes = AppDomain.CurrentDomain.GetAssemblies().SelectMany(Function(x) x.GetTypes())

Dim typeofIReadOnlyCollection = allLoadedTypes.FirstOrDefault(Function(x) x.Name.Contains("IReadOnlyCollection"))
If typeofIReadOnlyCollection IsNot Nothing Then
Response.Write("找到了IReadOnlyCollection,它有" & typeofIReadOnlyCollection.GetMethods().Count & "个方法和" _
& typeofIReadOnlyCollection.GetProperties().Count & "个属性。")
End If

‘For Each type In allLoadedTypes
‘ Response.Write(type.AssemblyQualifiedName & "<br/>")
‘Next
End Sub
[/code]

时间: 2024-10-25 20:41:38

.NET FRAMEWORK版本:4.0.30319; ASP.NET版本:4.6.118.0的相关文章

编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\b1b124ac\2fb984fc\App_global.asax.vbtifrrw.dll”--“拒绝访问。 ”

"/"应用程序中的服务器错误. 运行时错误 说明: 处理您的请求时发生异常.此外,对第一个异常执行自定义错误页时发生另一异常.已终止请求. "/"应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS0016: 未能写入输出文件"c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP

IIS网站不可用:同一 IIS 进程中运行两个不同的 ASP.NET 版本问题

出错现象: 在IIS中的网站刚部署的网站可以用,过一段时间就不能用了.然后出现网站不可用的提示. 查看系统日志: 发现在系统日志中有这么一条信息:"在同一 IIS 进程中不可能运行两个不同的 ASP.NET 版本.请使用 IIS 管理工具重新配置服务器以在一个单独的进程中运行应用程序." 解决方案: 因为在同一个IIS应用程序池中不能运行两个asp.net的版本.将不同asp.net版本的网站分配不同的应用程序池就好了

[.net] 关于CS0016: Could not write to output file ‘c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files… ‘Access is denied.’ 的解决办法

[.net] 关于CS0016: Could not write to output file ‘c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files… ‘Access is denied.’ 的解决办法 1.添加用户"Network Service” 和 “IIS_IUSERS” 读下面目录的读写权限 a) C:\Windows\Temp b) C:\Windows\Microsoft.NET\Framewo

未能写入输出文件 “c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\6ee8fd15\5fc973dd\App_Web_default.aspx.cdcab7d2.e1voeq0d.dll”--“拒绝访问

在本地开发环境没问题,但是发布到服务器出现:未能写入输出文件"c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\106f9ae8\cc0e1169\App_global.asax.haz99mum.dll"--"拒绝访问. "错误 解决方法: 1,通常的解决方法:原因是由于系统目录下的Temp目录无相应的权限所致,具体操作如下:C:\Windows\temp--&

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files这个文件找不到

在C:\Windows\Microsoft.NET\Framework64\v4.0.30319文件夹下面建立Temporary ASP.NET Files 文件夹(Framework64 注意64,这个可能是我们用的64位系统,但是vs2010不分32位还是64位,所以在C:\Windows\Microsoft.NET\Framework\v4.0.30319下面有这个文件夹,而在C:\Windows\Microsoft.NET\Framework64\v4.0.30319下面却没有这个,没有

调用 GetProcAddress 失败,在 ISAPI 筛选器 &quot;C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll&quot; 上

1.选择网站的ISAPI筛选器,设置ASP.NET的 aspnet_filter.dll右键恢复为父项 如果问题还未解决,执行第2步: 2.是否注册了asp.net,打开cmd运行:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i (64位系统同理) 3.查看ISAPI和CGI限制是否允许asp.net4.0的执行

开始安装 ASP.NET (4.0.30319.18408)。 出现了错误: 0x8007b799 必须具有此计算机的管理员权限才能运行此工具

在Visual Studio命令提示符安装ASP.NET .出现了错误: 0x8007b799 必须具有此计算机的管理员权限才能运行此工具:如下图: 解决方案如下: 1.打开“C:\Windows\System32” 用管理员权限打开cmd.exe 2.在打开的cmd.exe 输入 “C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis.exe -i”点击回车即可安装成功 3.如果没有用管理员权限打开cmd.exe可能会出现如下错

没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限 的解决方案

问题情况: 在64位机器上运行Web服务,然后在配置好之后测试访问的时候出现如下提示: 具体查看了一下,在C:\Windows\Microsoft.NET\Framework64\v4.0.30319目录下确实没这个文件或目录,试了能找到的别人给的方法,各种改权限之类,没用. 关键一点,这个是在64位运行时,\Framework64\v4.0.30319和\Framework\v4.0.30319目录下结构不一样,把32位目录下的Temporary ASP.NET Files文件夹拷贝到Fram

IIS6 2.0 4.0 冲突解决 &#39;c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\xxx&#39; -- &#39;Access is denied. &#39;

今天在阿里云虚拟机上部署新站点后出现下面的错误: Compiler Error Message: CS0016: Could not write to output file 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\xx' -- 'Access is denied. ' 找遍了网上的资料最后总结为以下几步:: Cleaned the "C:\Windows\Microsoft.NE