博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为什么GAC和VS引用的程序集不一致?
阅读量:7038 次
发布时间:2019-06-28

本文共 980 字,大约阅读时间需要 3 分钟。

我们知道VS开发中引用的程序集和运行时的程序集来源于不同的地方,前者来源于%ProgramFiles%\Reference Assemblies\Microsoft\Framework\.NETFramework\v{version},后者则来源于GAC。这可以从VS的添加引用对话框看出来。照理说两者应该一直才对,但是你是否发现了它们之间存在着差异吗?

这个问题是我昨天研究ASP.NET的路由系统时发现的,表示路由对象集合的RouteCollection原本如下两个属性AppendTrailingSlash 和LowercaseUrls,表示在对生成能够的URL进行规范化时是否需要添加一个额外的“/”字符(如果不存在)以及是否需要将URL转化成小写。

1: public class RouteCollection : Collection
2: {
3:     //其他成员
4:     public bool AppendTrailingSlash {  get;  set; }
5:     public bool LowercaseUrls {  get;  set; }
6: }

但是当我试图在代码中使用这两个属性的时候,却发生变异错误,提示RouteCollection并不具有这两属性。

那么唯一的解释是VS引用的System.Web.dll中的该类型并不包含这两个属性,为此我通过Reflector从%ProgramFiles%\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0中加载了该程序集。

其RouteCollection属性确实不包括上述的两个属性。

然后我又从GAC中加载了System.Web.dll程序集。

这里定义的RouteCollection是具有上述的两个属性的:

作者:蒋金楠
微信公众账号:大内老A
微博:
如果你想及时得到个人撰写文章以及著作的消息推送,或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号(原来公众帐号
蒋金楠的自媒体将会停用)。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
你可能感兴趣的文章
前端进阶 -js数据结构类型扩展:immutable-js(10)
查看>>
centos5.10NFS服务的配置
查看>>
有关二分查找的边界思考
查看>>
phpvirtualbox访问Ubuntu虚拟机134-配置详情
查看>>
Java 单元测试利器之 Junit
查看>>
我的友情链接
查看>>
媒体关注OSV智能桌面虚拟化平台
查看>>
安装VMware Workstation提示the msi failed的解决办法
查看>>
MongoDB安装配置
查看>>
使程序在Linux下后台运行
查看>>
webpack构建h5plus多页面移动app
查看>>
Varnish缓存更新策略调试过程
查看>>
unix bsd linux gun 粗略解释
查看>>
shell中特殊符号的用法
查看>>
我的友情链接
查看>>
上传贴图
查看>>
Spring Cloud各组件重试总结
查看>>
【面试题】C语言:模拟实现内存放置函数memset()
查看>>
桌面虚拟化 | 同VDI扭打,IDV要如何补齐短板?
查看>>
CSS Modules 详解及 React 中实践
查看>>