关于vc2005应用程序部署发行的若干问题

1。使用微软的vcredist_x86(大概不到3M)和应用程序一块儿打包发布到客户机。

2。不采用微软的方式,只将应用程序所依赖的库打包。此种方式经常会运行程序时,出现程序集不匹配的问题(side by side issue),那肯定是嵌入在应用程序中的程序集(运行库,包括atl,mfc,crt等)在客户机上找不到对应的版本(不论是在windows\winsxs中,还是在应用程序所在目录中)。这个时候,应将应用程序中所依赖的某个版本的程序集的清单文manifest件和DLL拷贝到应用程序所在目录中。如果微软的运行库升级,则应用程序所依赖的库也会升级,因为应用程序运行时,会检测winsxs中对应版本的策略清单文件,会将应用程序对低版本的依赖重定向到高版本。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright ? 1981-2001 Microsoft Corporation -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity type="win32-policy" name="policy.8.0.Microsoft.VC80.CRT" version="8.0.50727.42" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/>
<bindingRedirect oldVersion="8.0.41204.256-8.0.50608.0" newVersion="8.0.50727.42"/>

</dependentAssembly>
</dependency>

</assembly>

3。如果你使用第三方的库所依赖的程序集开发机上不存在,或者同一个dll依赖不同版本的运行库,如a.dll即依赖于vc80.crt(版本8.0.50727.762)又依赖于vc80.crt(版本8.0.50608.0),为了避免side by side问题,在a.dll的 项目属性→配置属性→链接器→清单文件→生成清单,设置为“否”;项目属性→配置属性→清单工具→输入和输出→附加清单文件(a.dll.manifest),在工程源程序目录中添加a.dll.manifest文件,内容为仅依赖于vc80.crt 版本8.0.50727.762,生成解决方案即可。另一种方法没经过测试,即在应用程序目录下加入策略文件,让低版本的重定向到高版本,只依赖高版本。


4。仅在可执行文件中嵌入manifest来指明依赖的运行库,不要在任何dll中采用manifest。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值