把程序移植到另外一台电脑上运行,问题多多,让我始料未及,
我以为在目标机器上安装了VC2005分发包:vcredist_x86.exe 就可以万事大吉了,
结果牛B的微软再一次让我领教到了他的厉害...再一次被折磨.
本来分发包的版本都是762:
文件名: | vcredist_x86.exe |
版本: | 8.0.50727.762 |
发布日期: | 2007/11/15
|
但是我打开清单文件一看:
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.4053" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
发现嵌入的清单文件都是version="8.0.50727.4053"这个版本,难怪在目标机器上运行不了,
目标机器安装了vcredist_x86.exe只有"8.0.50727.762"版本的库.
难道windows什么时候偷偷更新了我的依赖库文件?
上网查了下,果然这样,2009/7/12号的时候微软更新了一个什么漏洞,顺便帮我增加了最新的库
你多一个新版本的库没有关系,反正可以并行运行的,但是万恶的微软强行我们使用最新的库~~~4043版本
真是流氓
要解决,办法2个:
一是屈服微软,在目标机器上也安装最新的库
二是干掉微软,卸载相关补丁...这个有点狠,
不过我用了一个不错的办法,就是找一个没有更新到4043的机器,上面只有762版本的库,在上面生成好可执行程序exe和dll文件,就都是762版本的了,再发布到其他机器上,