.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 ...
随机推荐
- Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段
在上一篇 "管理沙盒(定制化)小细节1" 的随笔中,我们使用公式法在 "业务机会" 对象(单头)上建立了 "利润合计" 字段,并将它等于 & ...
- View and Data API Tips : Conversion between DbId and node
By Daniel Du In View and Data client side API, The assets in the Autodesk Viewer have an object tree ...
- Windows Server 2003安装方法
1. 设置BIOS,从光驱引导启动.光盘放入光驱,自动读盘,选择第一项“安装Windows Server 2003,Enterprise Bdition”: 2. 弹出加载安装文件界面. 3. 出现安 ...
- android Canvas 和 Paint用法
自定义view里面的onDraw方法,在这里我们可以绘制各种图形,onDraw里面有两个API我们需要了解清楚他们的用法:Canvas 和 Paint. Canvas翻译成中文就是画布的意思,Canv ...
- 【转】深入浅出JavaScript之this
JavaScript中的this比较灵活,根据在不同环境下,或者同一个函数在不同方式调用下,this都有可能是不同的.但是有一个总的原则,那就是this指的是,调用函数的那个对象. 下面是我的学习笔记 ...
- iOS系列 基础篇 06 标签和按钮 (Label & Button)
iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...
- 尝试解析js面试题(一)【转发】
解析: 1.Foo.getName(); //2 1)结果执行的是Foo对象的一个叫做getName()的属性,而1.4.5中的getName都是作为函数存在,所以可以排除1.4.5 2)剩下两个中, ...
- After the exam
离散数学考完啦!!!自我感觉还行,或许得不到高分,但是过的话是没问题了.(但愿成绩出来后不打脸) 持续了两周的复习,告一段落了.那么,今天就休息休息吧. 今天阴有雨,走过的地儿都是湿漉漉.滑溜溜的.这 ...
- Azure机器学习入门(二)创建Azure机器学习工作区
我们将开始深入了解如何使用Azure机器学习的基本功能,帮助您开始迈向Azure机器学习的数据科学家之路. Azure ML Studio (Azure Machine Learning Studio ...
- Linux进程学习
进程与进程管理: 清屏:system("clear"); //#include <signal.h> 进程环境与进程属性: 什么是进程:简单的说,进程就是程序的一次执行 ...