4

多くの同様の投稿ですが、これは私が信じている重複ではありません。Visual Studioで参照を追加すると、一部のdllはローカルにコピーされますが、一部はコピーされません。

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

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

  1. 一部はローカルにコピーされ、一部はコピーされないのはどうしてですか。(何かいいことを知りたい)

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

ありがとう。

4

2 に答える 2

1

VSがデフォルトでこれを間違える可能性は非常に低いです。開発マシンは(通常)ユーザーのマシンとそれほど違いはありません。重要なのはGACの内容です。.NETはユーザーと同じようにインストールされるため、フレームワークアセンブリはユーザーのGACと同様にGACに含まれるため、ローカルにコピーしないでください。サードパーティの.NETアセンブリは、自分のものも含めてローカルにコピーされます。

唯一のコーナーケースは、COMピア、プライマリ相互運用機能アセンブリです。開発マシンにいくつかインストールする傾向があります。OfficeとInternetExplorerのピアはかなり一般的です。誰かがそれらをインストールする世話をしない限り、それらはユーザーのマシンで利用できません。実際にピアが必要になることはめったにありません。ピアは、独自のアセンブリがそれらからタイプを公開する場合にのみ必要です。[ローカルコピー]を[True]に切り替えるだけです。それ以外の場合、これは急速に解消される問題です。VS2010によって構築されたプロジェクトは、「no-pia」グッズとしても知られる、EmbedInteropTypes機能をサポートします。

最後になりましたが、常にインストーラーをテストする必要があります。万が一、何かを見逃した場合、そのテストによってすぐにフラッシュされます。

于 2012-02-29T01:20:49.807 に答える
0

これを使用して、ビルド出力に公開される内容を制御します。参照がプライベートにデプロイする必要があるものである場合、私はそれをtrueに設定します。それ以外の場合は、falseに設定します。

于 2012-02-29T00:02:07.643 に答える