我有一个嵌入了以下清单的程序集:

<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
有帮助吗?

解决方案

排序!

有人向我指出'SomeAssembly.dll'''在Dependency Walker中提到的实际上是与我在Dependency Walker中打开的dll不同的dll! (糟糕!)

查看此程序集的清单,我可以看到问题是由于Microsoft.VC80.CRT v8.0.50727.4053是目标,但在此计算机上不存在。 (通过安全更新安装)。

其他提示

在遇到同样的问题之后,我注意到应用于开发Visual Studio安装的更新可能会解决一些目标机器更新:

例如,上面突出显示的更新解决了这个具体问题。

并行转发的内容我建议你不要包含“清单文件”。在你的集会内。 特别是因为您无法确定要安装软件的PC是否已更新为清单中包含的版本。

您可以禁用它,设置项目属性“Linker \ Manifest File \ Generate Manifest”。到“否”。

我希望这可以提供帮助。 祝你好运

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top