部署强命名程序集到GAC

上文私有部署应用程序升级策略中我们制作了SomeMethodLib.dll文件并通过私有部署方式应用,那么如何部署到GAC并使用呢。

1、通过VS命令提示工具中的Gacutil工具将SomeMethodLib.dll安装到GAC

gacutil /i SomeMethodLib.dll

部署强命名程序集到GAC

2、查看是否正确部署

gacutil /l SomeMethodLib

部署强命名程序集到GAC

3、更改.config文件,让CLR从GAC中尝试加载SomeMethodLib,注意已将CodeBase屏蔽掉了。

<configuration>
	<runtime>
		<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
			<probing privatePath="NoSN;V1;V2;V3"/>

			<!--确定相关程序集 查找公钥为1217633aa9436597,语言文化为中性的版本号在1.0.0.1到1.0.0.2
			的程序集SomeMethodLib,定位为相同公钥相同程序集名称且版本号为1.0.0.3的程序集-->
			<dependentAssembly>
				<assemblyIdentity type="win32"
							  name="SomeMethodLib"
							  publicKeyToken="1217633aa9436597" culture="neutral"/>
				<!--<bindingRedirect oldVersion="1.0.0.1" newVersion="1.0.0.2"/>
				<codeBase version="1.0.0.2" href="V2/SomeMethodLib.dll"/>-->
				<bindingRedirect oldVersion="1.0.0.1-1.0.0.2" newVersion="1.0.0.3"/>
				
				<!--<codeBase version="1.0.0.3" href="V3/SomeMethodLib.dll"/>-->
				
				<publisherPolicy apply="no"/>
			</dependentAssembly>

		</assemblyBinding>
	</runtime>
</configuration>

4、运行DeployTest.exe,查看是否调用了SomeMethodLib

部署强命名程序集到GAC

从运行结果上可以看到的确调用了版本1.0.0.3

5、从GAC中卸载SomeMethodLib

gacutil /u assemblyname

部署强命名程序集到GAC

6、继续运行DeployTest.exe查看运行结果,查看我们是否调用的GAC中的SomeMethodLib

部署强命名程序集到GAC

从运行结果可以看出,当SomeMethodLib被卸载后应用程序会抛出System.IO.FileLoadException异常。

使用Gacutil.exe的细节可查看MSDN文档:

Gacutil.exe

在给用户部署时会用到Gacutil.exe,可以在有VS的机器上查找Gacutil.exe很容易找到文件位置:C:\ProgramFiles\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools


部署强命名程序集到GAC

上一篇:Training a deep autoencoder or a classifier on MNIST digits_Rbm训练(Matlab)


下一篇:如何使用浏览器缓存来加快站点的访问速度