zoukankan      html  css  js  c++  java
  • GAC和VS引用的程序集不一致?

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

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

    image

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

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

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

    image

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

    image

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

    image

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

    image

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

    image

    作者:Artech
    出处:http://artech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    用mkdirs创建目录
    关于布局(Layout)的一切
    用HTTP操作和文件操作把网页下载到sd卡
    OpenStack计费项目Cloudkitty系列详解(一)
    OpenStack/Gnocchi简介——时间序列数据聚合操作提前计算并存储起来,先算后取的理念
    python-RabbitMQ
    1go基本语法
    openstack多region配置
    cinder 挂载卷和 iSCSI原理
    Host aggregate分区
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2403910.html
Copyright © 2011-2022 走看看