我有一个嵌入了以下清单的程序集:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
在我的一台机器上,此程序集不起作用(程序集无法加载)。在依赖walker中打开它会给我以下错误消息:
Error: The Side-by-Side configuration information for "SomeAssembly.dll" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001).
相同的程序集在另一台机器上工作正常,并且我没有得到依赖walker的错误。
据我可以解决的问题是由于第一台机器缺少某种依赖关系(例如MSVCR可再发行组件),但是我已经检查过并且两者都安装了Microsoft Visual C ++ 2005 Redistributable。机等。
如何确定遗漏的依赖是什么?
我唯一注意到的是工作机器上的WinSxS目录还有一个额外的条目:
x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_473666fd
答案 0 :(得分:2)
排序!
有人向我指出,Dependency Walker中提到的'“SomeAssembly.dll”实际上是与我在Dependency Walker中打开的dll不同的dll! (糟糕!)
查看此程序集的清单,我可以看到问题是由于Microsoft.VC80.CRT v8.0.50727.4053是目标,但在此计算机上不存在。 (通过安全更新安装)。
答案 1 :(得分:2)
在遇到同样的问题之后,我注意到应用于开发Visual Studio安装的更新可能会解决一些目标机器更新:
例如,上面突出显示的更新解决了这个具体问题。
答案 2 :(得分:2)
并行转发的内容我建议你不要在程序集中包含“清单文件”。 特别是因为您无法确定要安装软件的PC是否已更新为清单中包含的版本。
您可以禁用它将项目属性“Linker \ Manifest File \ Generate Manifest”设置为“No”。
我希望这可以提供帮助。 祝你好运