4

簡単な問題があります。セットアッププロジェクトで(検出された依存関係フォルダー内の)dll依存関係の一部を除外して、ユーザーのインストールフォルダーにコピーされないようにします。不要なアセンブリで「exclude」プロパティをtrueに設定してから、msiファイルを作成することで解決しました。正常に動作し、アセンブリは除外されます。

ただし、Visual Studioを閉じて再ロードすると、「exclude」プロパティの1つ(私が設定した場合は4つ)だけがtrueに設定されたままになります。vdprojファイルを確認したところ、次のように4行あります。

"Exclude" = "11:TRUE"

...除外したいアセンブリごとに1つ。

そのため、VS2010がvdprojファイルから設定を正しくロードしていないようです。不思議です。誰かが回避策を持っていますか?

4

2 に答える 2

4

これは、ローカルコピープロパティがtrueに設定されている場合、依存関係アナライザーが常にDLLをデプロイメントプロジェクトに追加するためです。MSDNの記事「セットアップおよび展開プロジェクトのトラブルシューティング」の「以前に除外されたファイルは、ソリューションを再度開いたときに再び含まれる」というタイトルのセクションを参照してください。特に複雑なソリューションでは、Visual Studioのローカルコピーを使用するか、展開プロジェクトを使用して適切な場所にファイルをインストールするかを選択する必要があります。

于 2012-10-16T15:56:57.570 に答える
1

これは、解決策を探してここに来るすべての人々のためのものです!

上記と同じ問題が発生しましたが、回避したいDLLは検出された依存関係です(私のプロジェクトAはC.Dll(2.0.0.0)に依存するB.dllに依存しています)が、Cは必要ありませんMSIの.dll(2.0.0.0)(別のバージョンのC.dll(1.0.0.0)に直接依存しているため)。DLLを除外しようとしましたが、プロジェクトをリロードするたびにVDProjが依存関係を更新し、検出された依存関係を追加し直すため、機能しません。

Microsoftの解決策は、参照されるDLLの「CopyLocal」プロパティをfalseにすることでした。これらのDLLが非常に多く、各プロジェクトに移動してこれを更新する必要はありませんでした(これにより、テスト作業が急増するため)テスターに​​よると、多くのプロジェクトのコードが事実上変更されているためです)。そこで、特定のDLL(C.Dll(1.0.0.0))をセットアッププロジェクトに手動で追加することで、これを回避しました。セットアッププロジェクトを右クリックして、[ファイルの追加]を選択します。

ここに画像の説明を入力してください

また、ファイルを展開する場所を設定することも忘れないでください。私の場合は、ファイルはBInフォルダーに移動します。

ここに画像の説明を入力してください

このファイルは、検出された他のすべての依存関係(同様の名前)をオーバーライドし、指定した場所にデプロイされます。

于 2013-11-13T15:31:17.503 に答える