C# 基础系列--程序集三
接着前面的一和二的内容。程序集版本控制
运行时执行以下几步来解析程序集绑定请求:检查原程序集引用,以确定该程序集的版本是否被绑定。检查所有适用的配置文件以应用版本策略。通过原程序集引用和配置文件中指定的任何重定向来确定正确的程序集,并且确定应绑定到调用程序集的版本。检查全局程序集缓存和在配置文件中指定的基本代码,然后使用在运行时如何定位程序集中解释的探测规则检查该应用程序的目录和子目录。
我找到了两个关键字 ”指定程序集的位置“和”重定向程序集版本“
节约大家的时间,我就挑部分出来
”重定向程序集版本
即使是自称向后兼容的新版本程序集,也会中断应用程序。 在发生这种情况时,可以在应用程序配置文件中使用下列设置,以使运行时跳过发行者策略:<publisherPolicy apply="no" />
重定向程序集版本若要将一个版本重定向到另一个版本,请使用 <bindingRedirect> 元素。 oldVersion 特性可以指定单个版本,也可以指定多个版本范围。 例如,<bindingRedirect oldVersion="1.1.0.0-1.2.0.0" newVersion="2.0.0.0"/> 指定运行时应使用版本 2.0.0.0 代替 1.1.0.0 和 1.2.0.0 之间的程序集版本。
这个貌似在那里看到过类似的,翻了下代码,果然mvc中出现过
<runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"><dependentAssembly><assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /></dependentAssembly></assemblyBinding></runtime>
指定程序集的位置
只有在计算机配置文件或也重定向程序集版本的发行者策略文件中,才可以使用 <codeBase> 元素。 在运行时确定要使用哪一程序集版本时,它应用确定版本的文件中的基本代码设置。 如果未指出基本代码,那么运行时就以通常的方法探测程序集。 有关详细信息,请参见运行时如何定位程序集。下面的示例说明如何指定程序集的位置。<configuration><runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"><dependentAssembly><assemblyIdentity name="myAssembly"publicKeyToken="32ab4ba45e0a69a1"culture="en-us" /><codeBase version="2.0.0.0"href="http://www.litwareinc.com/myAssembly.dll"/></dependentAssembly></assemblyBinding></runtime>
</configuration>
运行时通过探测的方法来查找没有基本代码的程序集。 有关探测的更多信息,请参见运行时如何定位程序集。可以在应用程序配置文件中使用 <probing> 元素,来指定在查找程序集时运行时应搜索的子目录。 下面的示例说明如何指定运行时应搜索的目录。<configuration><runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"><probing privatePath="bin;bin2\subbin;bin3"/></assemblyBinding></runtime>
</configuration>
我承认我又开始无聊了,准备对之前的项目继续搞搞。
新建App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration><runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"><dependentAssembly><assemblyIdentity name="AssemblyLibrary"culture="neutral"publicKeyToken="525b694786e1bcdf" /><!--<publisherPolicy apply="no" />--><!--<codeBase version="1.0.0.2"href="D:\documents\visual studio 2010\Projects\ConsolTest\ConsolTest\bin\Debug\AssemblyLibrary.dll"/>--><!--<bindingRedirect oldVersion="1.0.0.0-1.0.0.1" newVersion="1.0.0.2" />--></dependentAssembly></assemblyBinding></runtime>
</configuration>
昨天晚上的实验内容我先删掉了,早上到公司修改了上一遍的内容,不好意思,其实很早的时候用ILSpy反编译的时候,就可以看得出程序集的信息是不一样。不过通过一系列实验,更能验证程序集信息这点。
上班~~晚上要加班。。。有空,就对这篇进行更新
晚上随便试了下,注释点的3个,有效的只有
<bindingRedirect oldVersion="1.0.0.0-1.0.0.1" newVersion="1.0.0.2" />其他的为什么写和没有好像没有多大关系,不得而知。
昨天晚上睡觉前,查了下资料,才明白codeBase 这个关键字只用用于公有程序集,probing 私有程序集和公有程序集 -----2012年7月13日 星期五修改
各位朋友程序集这个章就到这里了。下一章就是很基础的 类 。如果对程序集还有意思的朋友,可以看看的什么程序集全局等等,个人觉得用到可能性很低就不写这些了
转载于:https://www.cnblogs.com/qionghua/archive/2012/07/13/2587146.html
C# 基础系列--程序集三相关推荐
- Unity 水、流体、波纹基础系列(三)——波浪(Waves)
目录 1 正弦波 1.1 调整顶点 1.2 调整Y 1.3 振幅 1.4 波长 1.5 速度 1.6 法线向量 1.7 Mesh分辨率 1.8 阴影 2 格斯特纳波(Gerstner) 2.1 来回移 ...
- Unity Mesh基础系列(三)立方体球(更好更圆)
目录 1 适配圆角立方体 2 检查映射 3 用数学来玩 4 调整映射 本章重点: 1.把立方体变为球体 2.在Unity中可视化映射 3.分析换算的损耗 4.用数学优化算法 在本教程中,我们将创建一个 ...
- shel脚本基础系列(三)for-while循环
一.背景 虽然自己是一名java程序员,做后端的,但是最近工作中经常需要看别人写的脚本去运行项目,所以作为后端程序员,我们也需要了解一下shell语法,会读懂一些基本的shell脚本. 二.for循环 ...
- 算法基础系列第三章——层层推进的BFS
最基础的穷竭搜索--宽度优先搜索 小试牛刀--走迷宫 ✒ 问题描述 ✒ 参考代码(C++版本) 知识储备
- 算法基础系列第三章——图论之最小生成树问题
- Java基础系列(三十):局部内部类
What 局部内部类就是定义在某个方法内部的内部类,它的作用域仅限于这个方法. Why 当我们在外围类中定义的内部类仅仅在某个方法中使用了一次,这种情况下,我们就可以选择去使用局部内部类. How 以 ...
- Informatica基础系列(一)——Helloworld
目录: Informatica基础系列(零)--前言 Informatica基础系列(一)--Helloworld Informatica基础系列(二)--更新策略转换组件 Informatica基础 ...
- Informatica基础系列(二)——更新策略转换组件
目录: Informatica基础系列(零)--前言 Informatica基础系列(一)--Helloworld Informatica基础系列(二)--更新策略转换组件 Informatica基础 ...
- Java基础系列【导读】
Java基础系列导读 Java基础 JaveWEB Java基础 基础系列[一]-- Java语言介绍 基础系列[二]-- 环境搭建 基础系列[三]-- Java基础语法 基础系列[四]-- 面向对象 ...
- 【计算机基础系列文章(一)】计算机简介
什么是计算机 计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能.是能够按照程序运行,自动.高速处理海量数据的现代化智能 ...
最新文章
- Windows server 2008 R2 登录密码恢复
- 5-510寝室课后习题4.35
- 一步一步学Silverlight 2系列(22):在Silverlight中如何用JavaScript调用.NET代码
- 用友元函数重载乘法,用成员函数重载除法
- if 组件是否存在_LeetCode 817. 链表组件 题解
- Maven打jar发布包的常用配置
- 多线程、多核技术是什么技术?
- 触摸屏:屏幕键盘(虚拟键盘)解决方案
- postgres数据库表空间收缩之pg_squeeze,pg_repack
- python如何定义函数k_Python 函数
- 网易大数据面试题试解
- bas64图片加密解密
- K8S探索之Service+Flannel本机及跨主机网络访问原理详解
- 上海计算机专业哪个中专最好,上海有什么比较好的中专?
- unity3d 摄像机跟随角色时被物体遮挡解决方案
- 内外兼修,从增速到增质的触宝新时代
- 【Unity】关于 InputManager 以及改键功能的制作
- 杰理之麦克风(混响)无法调数字音量解决方法【篇】
- 攻城狮生活-3 奇怪的司机
- [指标公式]LY机构基金买卖大波段指标公式源码 可以用来预测波段顶部和底部