.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]
.NET FRAMEWORK版本:4.0.30319; ASP.NET版本:4.6.118.0的更多相关文章
- 当前标识(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 ...
- 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. ...
- 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 ...
- 未能写入输出文件 “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 ...
- 没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限 的解决方案
问题情况: 在64位机器上运行Web服务,然后在配置好之后测试访问的时候出现如下提示:
- 开始安装 ASP.NET (4.0.30319.18408)。 出现了错误: 0x8007b799 必须具有此计算机的管理员权限才能运行此工具
在Visual Studio命令提示符安装ASP.NET .出现了错误: 0x8007b799 必须具有此计算机的管理员权限才能运行此工具:如下图: 解决方案如下: 1.打开“C:\Windows\S ...
- 调用 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 ...
- [转帖]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 ...
- 关于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 ...
随机推荐
- 函数的使用顺序---TABLES,USING,CHANGING
SAP使用PERFORM的时候: ... [TABLES itab1 itab2 ...] [USING a1 a2 ...] [CHANGING a1 a2 ...]. E ...
- Navicat软件中mysql中int、bigint、smallint和tinyint的区别、布尔类型存储以及乱码问题的解决
很长时间不写博客了,最近一直在忙这学校的比赛都忘记更新博客了.新的任务又要开始了,我们要准备<2017年中国大学生计算机设计大赛软件服务外包竞赛>.这次不能再想像之前那样有PC端的功能作为 ...
- 一些Titanium学习的地方
利用titanium兑现外汇兑换计算的ios代码 http://rensanning.iteye.com/blog/1325011 Titanium兑现相关的报表功能 http://www.s ...
- dyld 加载 Mach-O
➠更多技术干货请戳:听云博客 前言 最近看 ObjC的runtime 是怎么实现 +load 钩子函数的实现.进而引申分析了 dyld 处理 Mach-O 的这部分机制. 1.简单分析 Mach-O ...
- Lucene 单域多条件查询
在Lucene 中 BooleanClause用于表示布尔查询子句关系的类,包括:BooleanClause.Occur.MUST表示and,BooleanClause.Occur.MUST_NOT表 ...
- bitnami redmine版本由2.3.1升级至3.2.2过程
环境: 操作系统为ubuntu13.**版本,非长期支持版. 安装目录:/opt/redmine-2.3.1-0/ 所有者用户:root 安装过程: 1. 备份2.3.1数据库 sudo /opt/r ...
- 排序 order by 的用法
order by 跟在select* from 后面 order by 默认的是升序, asc 升序 desc 降序 select * from 表名 order by 字段名 asc 在带有 ...
- Oracle数据字典
数据字典-简介 Oracle数据字典的名称由前缀和后缀组成,使用下划线"_"连接,其代表的含义如下: ● DBA_:包含数据库实例的所有对象信息. ● V$_:当前实例的动态视图, ...
- 【FLUENT案例】03:冲蚀
1 引子2 问题描述3 模型准备4网格5模型设置6 材料设置7 设定注入器8 修改材料9 Cell zone Conditions设置10 边界条件设置10.1 inlet入口设置10.2 出口设置1 ...
- [转]Writing Custom Middleware in ASP.NET Core 1.0
本文转自:https://www.exceptionnotfound.net/writing-custom-middleware-in-asp-net-core-1-0/ One of the new ...