0

展開しようとしている C# アプリケーションには、A.dll と B.dll という 2 つの重要な参照があります。

最初に、リリース フォルダー内のすべて (.dll および .pdb) をアプリケーション ファイルに含む InstallShield LE を使用しました。アプリケーションは問題なく別のコンピューターにデプロイされます。アプリはインストール後約6Mです。

次に、「プライマリ出力」をアプリケーションフォルダーに含めて、VSインストーラーを使用し始めました。A.dll と B.dll の両方が含まれていることがわかります。アプリを別のコンピューターにインストールすると、インストール ディレクトリにも A と B が存在します。アプリケーションを実行すると、「ファイルまたはアセンブリ "B.dll" またはその依存関係の 1 つを読み込めませんでした」というエラーが表示されます。B.dll は .NET フレームワークのみに依存します。インストール ディレクトリには .dll しかない (.pdb がない) ため、アプリはインストール後わずか 3M です。

ここで何か見逃しましたか?どんなアイデアでも役に立ちます、ありがとう。

編集: A.dll と B.dll の違いは、B.dll は C++/cli プログラムからコンパイルされ、A.dll は C# からコンパイルされることです。これにより、展開が異なりますか?

4

1 に答える 1

0

ターゲット マシンで Fusion ログ ビューアーを使用して、DLL が見つからない理由を特定することをお勧めします。

http://msdn.microsoft.com/en-us/library/e74a18c4.aspx

場合によっては、Fuslogvw が機能しなくなることがあります。その場合は、マシンを再起動するか、それに関するブログ投稿を参照してください。

https://www.google.ca/search?q=fuslogvw.exe&oq=fuslog

(ログで) 理由を見つけたら、MSI に問題があることは明らかですが、そうでない場合は、調査結果を投稿してください。

于 2013-05-23T19:35:44.997 に答える