vs2005很强大,很邪恶。从vc6慢慢过渡到了vs2005,这款ide确实做得很体贴,也非常好用。但是美中不足的是,在它上面写一个程序,哪怕你是用release模式生成的程序,到了第三方没有安装vs插件的机器上仍然无法运行。最直接的错误就是“应用程序配置不正确,程序无法启动”,这一点跟vc6相比就差的很多了,尤其是当你希望开发一些用于验证性的演示程序的时候,通过简单的拷贝粘贴到其它没有安装过vs2005的机器上测试运行基本上都无法通过。我想很多人会有同感,不想每次哪怕弄个简单的hello world也生成一个setup工程吧?!
这很让人恼火,可是怎么解决这个问题呢?配置不正确,想办法让它配置正确了不就行了。于是逐个研究vs2005产生的文件,就找到了exe.manifest,不知道微软弄这个东西做什么的。
打开一看原来是一个xml文件,如下所示:
打开一看原来是一个xml文件,如下所示:
<code>
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.MFC' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*' />
</dependentAssembly>
</dependency>
</assembly>
</code>
乱糟糟的一堆,但是这个name比较有趣,似乎是应用程序所依赖的一些库的名字。
好,搜索一下,果然,找到了这些东西。这些依赖文件位于:
C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86
这个目录下面,你会找到上面xml的item中列出来的Microsoft.VC80.CRT和Microsoft.VC80.MFC这两个目录。剩下的那个Microsoft.Windows.Common-Controls应该是所有win32环境都有的。
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.MFC' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*' />
</dependentAssembly>
</dependency>
</assembly>
</code>
乱糟糟的一堆,但是这个name比较有趣,似乎是应用程序所依赖的一些库的名字。
好,搜索一下,果然,找到了这些东西。这些依赖文件位于:
C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86
这个目录下面,你会找到上面xml的item中列出来的Microsoft.VC80.CRT和Microsoft.VC80.MFC这两个目录。剩下的那个Microsoft.Windows.Common-Controls应该是所有win32环境都有的。
现在需要做的就是建立一个目录,把上面的Microsoft.VC80.CRT和Microsoft.VC80.MFC目录下的的所有文件都拷贝进去,然后把你的release版的应用程序也拷贝进去。然后把整个目录压缩一下拷贝到没有安装过vs2005的机器上,解压缩,运行。
不知道微软是如何思考这个问题的,为什么每次都要把明明很简单的工作给复杂化,让人郁闷。