前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么GAC和VS引用的程序集不一致?

为什么GAC和VS引用的程序集不一致?

作者头像
蒋金楠
发布2018-01-15 14:58:09
6420
发布2018-01-15 14:58:09
举报
文章被收录于专栏:大内老A大内老A

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

image
image

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

代码语言:js
复制
   1: public class RouteCollection : Collection<RouteBase>
   2: {    
   3:     //其他成员         
   4:     public bool AppendTrailingSlash {  get;  set; }
   5:     public bool LowercaseUrls {  get;  set; }  
   6: }

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

image
image

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

image
image

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

image
image

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

image
image

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

image
image
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012-03-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档