5

次のマニフェストが埋め込まれたアセンブリがあります。

<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).

同じアセンブリが別のマシンで正常に動作し、依存関係ウォーカーでエラーが発生しません。

私が解決できる限り、問題は最初のマシンに何らかの依存関係 (MSVCR 再頒布可能パッケージなど) がないことが原因ですが、既に確認済みで、Microsoft Visual C++ 2005 再頒布可能パッケージは両方のマシンに正常にインストールされています。

不足している依存関係を特定するにはどうすればよいですか?

私が気付いた唯一のことは、作業中のマシンの WinSxS ディレクトリに追加のエントリがあることです。

x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_473666fd
4

3 に答える 3

2

同じ問題に苦しんだ後、Visual Studio のインストールの開発に適用された更新プログラムが、ターゲット マシンの更新プログラムに対処している可能性があることに気付きました。

ビジュアル スタジオの更新

たとえば、上記の強調表示された更新は、この特定の問題に対処しています。

于 2011-02-17T15:49:28.840 に答える
2

並びました!

誰かが親切に、Dependency Walker で言及されている '"SomeAssembly.dll"' は、実際には Dependency Walker で開いたものとは異なる dll であると指摘してくれました。(おっと!)

このアセンブリのマニフェストを見ると、問題は Microsoft.VC80.CRT v8.0.50727.4053 がターゲットにされているが、このマシンには存在しないことが原因であることがわかります。(セキュリティ更新プログラムを介してインストールされます)。

于 2009-09-14T10:28:32.347 に答える
2

並べてリレーする代わりに、アセンブリ内に「マニフェスト ファイル」を含めないことをお勧めします。特に、ソフトウェアをインストールしようとしている PC がマニフェストに含まれているバージョンに更新されているかどうかを確認できないためです。

プロジェクト プロパティ "Linker\Manifest File\Generate Manifest" を "No" に設定して無効にすることができます。

これが役立つことを願っています。幸運を

于 2011-06-29T09:11:57.507 に答える