================1,指定程序集版本

 

例如:最开始发布的程序集有些BUG,或者该程序集需要新的功能,就需要发布新的版本。

就需要我们在配置文件里面指定

 

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<startup> 
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
</startup> 
<runtime> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
<dependentAssembly> 
<assemblyIdentity name="zhangdi" culture="neutral" publicKeyToken="c2b627ba3f19e9ae"/> 
<bindingRedirect oldVersion="1.0.0.0 - 1.0.0.1" newVersion="1.0.0.1"></bindingRedirect> 
</dependentAssembly> 
</assemblyBinding> 
</runtime> 
</configuration>

 

oldVersion:必须设置,oldVersion特性指定应把程序集的哪个版本重定向到新版本上 。使用oldVersion特性可以指定一个范围。

newVersion:必须设置,指定新版本

 

================2,发行者策略文件

给程序集发布新版本,如果需要引用此程序集的引用程序指向新的版本,可以不用一个一个的去配置应用程序配置文件。可以使用发行者策略文件。

 

发行者策略文件是一个把已有版本或某个版本范围重定向到新版本的XML文件。使用的语法与应用程序配置文件相同。

 

 步骤:

===========1,创建发行者策略文件(mypolicy.config)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="zhangdi" culture="neutral" publicKeyToken="c2b627ba3f19e9ae"/>
        <bindingRedirect oldVersion="1.0.0.0 - 1.0.0.3" newVersion="1.0.0.1"></bindingRedirect>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

指定程序集版本访问(1.0.0.0 - 1.0.0.3)重定向到1.0.0.1版本上

 

===========2,创建发行者策略程序集

al /linkresource:mypolicy.config /out:policy.1.0.zhangdi.dll /keyfile:e:/mykey.snk

 mypolicy.config: 配置文件所在的路径             

policy.1.0.zhangdi.dll       输出的程序集文件名(随便命名,一般命令需规范,1表示主版本好0表示次版本号)

e:/mykey.snk     公钥所在的路径

 

===========3,将发行者的策略程序集添加到全局程序集缓存中

gacutil -i policy.1.0.zhangdi.dll

 

现在所有引用(1.0.0.0 - 1.0.0.3)版本的此程序集的版本的应用程序,都重定向了此程序集的(1.0.0.1)版本上了。

 

现在,可能有的应用程序不需要用重定向程序集的版本,可以在该应用程序的配置文件中配置(不使用发行者策略文件)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="zhangdi" culture="neutral" publicKeyToken="c2b627ba3f19e9ae"/>

      <publisherPolicy apply="no"></publisherPolicy>
      
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

 <publisherPolicy apply="no"></publisherPolicy> 不使用发行者策略文件