2012-02-28 6 views
4

多くの類似の投稿が、これは私が信じる重複ではありません。 Visual Studioで参照を追加すると、一部のDLLはローカルにコピーされ、一部はコピーされません。「ローカルにコピーする」参照がどのように決定されるべきですか?

他の場所から取得した外部DLLにローカル参照があることを理解していますが、Visual Studioの長い参照リスト(.NETおよびCOM)からローカルにコピーする必要はありません。私はしません。

今私は、COM DLLからShell32を選択すると、ローカルにコピーされていることに気付きました。デフォルトでは、 "ローカルコピー"はtrueに設定されています。だから私は、COMが持っている必要がありますが、ローカル参照を必要としないものと仮定しました。しかし、私がOffice Interopオブジェクト(COM)を参照すると、ローカルにコピーされていないことがわかります。

  1. どのようにいくつかは、ローカルおよび一部のないコピーされるということです。 (何かいいことを知ろうとする)

  2. 一般的に参照用の「ローカルコピー」プロパティを設定するにはどうすればよいですか? Visual Studioがデフォルトで行うことだけをお勧めしますか?

ありがとう。

答えて

1

VSがデフォルトで間違っている確率は非常に小さいです。あなたの開発マシンは、(通常は)あなたのユーザーのマシンと違いはありませんが、あなたのGACにあるものが重要です。 .NETをユーザーのようにインストールして、フレームワークアセンブリをGACに入れるだけでなく、ユーザーがローカルにコピーしないようにします。任意のサードパーティの.NETアセンブリは、自分自身を含め、ローカルコピーされます。

唯一のコーナーケースは、COM pias、Primary Interop Asssemblesです。あなたはあなたのdevマシンにインストールされている傾向があります.OfficeとInternet Explorerはかなり一般的です。誰かがインストールしない限り、ユーザーのマシンでは利用できません。実際ににはが必要であることはよくありません。自分のアセンブリがタイプを公開している場合にのみ必要です。 LocalをTrueに反転させるだけです。そうでなければ急速に消える問題です。VS2010によって構築されたプロジェクトは、Inter-Interp Types機能をサポートしています。

最後に、必ずインストーラをテストする必要があります。万一、あなたが何かを見逃した場合、そのテストはすぐにそれを洗い流します。

+0

私が探していた正確なもの。ありがとう – nawfal

0

ビルド出力に公開する内容を制御するために使用します。参照が私的に展開される必要があるものなら、私はそれを真に設定します。それ以外の場合はfalseに設定します。

関連する問題