サイドバイサイド構成エラー(Microsoft.VC80.CRT v8.0.50608.0)
-
07-07-2019 - |
質問
次のマニフェストが埋め込まれたアセンブリがあります:
<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>
私のマシンの1つでは、このアセンブリは機能しません(アセンブリの読み込みに失敗します)。依存関係ウォーカーでこれを開くと、次のエラーメッセージが表示されます。
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).
同じアセンブリは別のマシンで正常に動作し、Dependency Walkerでエラーは発生しません。
問題を解決できる限り、最初のマシンで何らかの依存関係(MSVCR再頒布可能パッケージなど)が欠落しているためですが、すでにチェックを行っており、両方にMicrosoft Visual C ++ 2005再頒布可能パッケージが正常にインストールされていますマシン。
不足している依存関係を把握するにはどうすればよいですか
私が気づいた唯一のことは、作業中のマシンのWinSxSディレクトリに追加のエントリがあることです:
x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_473666fd
解決
ソート済み!
誰かが「&quot; SomeAssembly.dll&quot;」を親切に指摘してくれましたDependency Walkerで言及されているのは、実際にはDependency Walkerで開いたものとは異なるdllでした! (うわー!)
このアセンブリのマニフェストを見ると、Microsoft.VC80.CRT v8.0.50727.4053がターゲットになっているが、このマシンには存在しないという事実が原因であることがわかります。 (セキュリティ更新プログラムを介してインストールされます)。
他のヒント
同じ問題に苦労した後、開発用Visual Studioのインストールに適用された更新がターゲットマシンの更新に対処する可能性があることに気付きました:
たとえば、上記の強調表示された更新は、この特定の質問に対応しています。
サイドバイサイドでのリレーの開始「マニフェストファイル」を含めないことをお勧めします。アセンブリ内。 特に、ソフトウェアをインストールするPCがマニフェストに含まれているバージョンに更新されていることを確認できないためです。
プロジェクトプロパティ&quot; Linker \ Manifest File \ Generate Manifest&quot;を設定して無効にすることができます。 「いいえ」に。
これが役立つことを願っています。 がんばろう