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]

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

  1. 当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“C:\WINDOWS2\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files”的写访问权限。

    卸载了域控制器之后,IIS出现“当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“C:\WINDOWS2\Microsoft.NET\Framework\v4.0.30319 ...

  2. Local IIS 7.0 - CS0016: Could not write to output file / Microsoft.Net > Framework > v4.0.30319 > Temporary ASP.NET Files

    This week I went nuts over my local IIS. I have never swore to a machine that much in my whole life. ...

  3. The current identity ( XXXX) does not have write access to ‘C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files’.解决办法

    环境windows 2008+IIS 7 找到 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET FilesTempora ...

  4. 未能写入输出文件 “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 Fil ...

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

    问题情况: 在64位机器上运行Web服务,然后在配置好之后测试访问的时候出现如下提示:

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

    在Visual Studio命令提示符安装ASP.NET .出现了错误: 0x8007b799 必须具有此计算机的管理员权限才能运行此工具:如下图: 解决方案如下: 1.打开“C:\Windows\S ...

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

    1.选择网站的ISAPI筛选器,设置ASP.NET的 aspnet_filter.dll右键恢复为父项 如果问题还未解决,执行第2步: 2.是否注册了asp.net,打开cmd运行:C:\Window ...

  8. [转帖]2016年时的新闻:ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0

    ASP.NET Core 1.0.ASP.NET MVC Core 1.0和Entity Framework Core 1.0 http://www.cnblogs.com/webapi/p/5673 ...

  9. 关于CS0016: Could not write to output file ‘c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary AS

    1.添加用户"Network Service” 和 “IIS_IUSERS” 读下面目录的读写权限 a) C:\Windows\Temp b) C:\Windows\Microsoft.NE ...

随机推荐

  1. sqlite索引的原理

    引言 这篇文章,里面讲到对于一个41G大小.包含百万条记录的数据库进行查询操作,如果利用了索引,可以把操作耗时从37s降到0.2s. 那么什么是索引呢?利用索引可以加快数据库查询操作的原理是什么呢? ...

  2. iOS:frame访问、设置简化

    看到一些程序都有这种写法,也不知道原创者是谁了.先在博客保存下. 在.m文件 #import "UIView+MyFrameCategory.h" @implementation ...

  3. Android View的绘制流程

    写得太好了,本来还想自己写的,奈何肚里墨水有限,直接转吧.正所谓前人种树,后人乘凉.. View的绘制和事件处理是两个重要的主题,上一篇<图解 Android事件分发机制>已经把事件的分发 ...

  4. Android入门(一)

    原文链接:http://www.orlion.ga/387/ 一.安卓的系统架构 1. linux内核层,这一层为安卓设备提供底层的驱动 系统运行库层,这一层通过一些C/C++库来为Android系统 ...

  5. python基础(1) 变量类型

    变量赋值: python中的变量不需要类型声明 每个变量在使用前必须赋值,变量赋值以后才会被创建 变量在内存中创建时,包括变量的标识.名称和数据这些信息. EX: #!/usr/bin/python ...

  6. yii2 modal弹窗之ActiveForm ajax表单异步验证

    作者:白狼 出处:http://www.manks.top/yii2_modal_activeform_ajax.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位 ...

  7. [Erlang 0112] Elixir Protocols

    Why Elixir   为什么要学习Elixir?答案很简单,为了更好的学习Erlang.这么无厘头的理由? Erlang语法设计几乎没有考虑过取悦开发者,所以学习之初的门槛略高.对于已经克服了最初 ...

  8. (五)什么是RDD-Java&Python版Spark

    什么是RDD 视频教程: 1.优酷 2.YouTube RDD是个抽象类,全称为Resilient Distributed Datasets,是一个容错的.并行的数据结构,可以让用户显式地将数据存储到 ...

  9. hadoop程序问题:java.lang.IllegalArgumentException: Wrong FS: hdfs:/ expected file:///

    Java代码如下: FileSystem fs = FileSystem.get(conf); in = fs.open(new Path("hdfs://192.168.130.54:19 ...

  10. swfupload 相关配置

    部署在IIS上出现404: 修改 C:\Windows\System32\inetsrv\config\applicationHost.config 文件 连续查找requestFiltering,往 ...