2017-10-24 8 views
1

私は依存しているいくつかのプロジェクト参照でアプリケーションを管理しています。さらに、同じソリューションには、アプリケーションをコンパイルするためには必要ないが実行時には読み込まれる「アドイン」プロジェクトがいくつかあります。それにもかかわらず、「アドイン」プロジェクトは、アプリケーションがその作業を行う上で不可欠です。つまり、彼らはの必須ですアドインです。Visual Studioでアドインライブラリを使用してF5を展開する方法は?

私のチームは、アドインライブラリをアプリケーションにデプロイして、必要に応じてインクリメンタルビルドを行い、Visual Studioを使用してアプリケーションを起動できるようにしなければなりません。

アドインプロジェクトは、アドインプロジェクトがAnyCPUであり、アプリケーションがx86およびx64プラットフォーム用にビルドされているため、出力ディレクトリをアプリケーションプロジェクトと共有しません。

アドインプロジェクトにP2P参照を追加することを躊躇します。 P2Pの参照を持たないのは、これらのプロジェクトのアドイン文字を伝える良い方法であるだけでなく、IntelliSenseが圧倒的にならないように支援します。

私はuse P2P references with ReferenceOutputAssembly set to falseを試しましたが、これはVisual Studio内の増分ビルドをサポートしていないようです。

したがって、上記の現実の制約がある場合、どのように満足のいくF5体験を提供できますか?

答えて

1

したがって、上記の現実の制約がある場合、どのように満足のいくF5体験を提供できますか?

私があなたのことを正しく理解していれば、誤解されているようです。 ReferenceOutputAssemblyのP2P参照をfalseに設定すると、Visual Studio/MSBuildはその参照ライブラリを参照プロジェクトの出力にコピーしませんが、参照されるプロジェクトは引き続きコンパイルされます。

「アドイン」プロジェクトを同じソリューションでコンパイルするのではなく、実行時に読み込む場合は、「アドイン」プロジェクトから直接.dllファイルを参照できます。または、ライブラリアセンブリをNuGetでパッケージ化することもできます。 Visual StudioでNuGetを使用して、これらのすべての参照を処理することができます。そのような場合、「アドイン」プロジェクトはコンパイルされませんが、実行時にロードされます。

"アドイン"プロジェクトのライブラリを参照プロジェクトの出力ディレクトリにコピーしたくない場合は、これらの参照のプロパティ "Copy Local"をfalseに設定することができます。コメントを

更新:

私は同じ溶液中で「アドイン」のプロジェクトを展開したいと思います。このワークフローに対してアドバイスしますか?

簡単な答えははいです。同じソリューションで「アドイン」プロジェクトを開発する場合、参照プロジェクトで変更を加えた場合、参照プロジェクトが再コンパイルされ、以前の展開が破棄されます。 同じソリューションで「アドイン」プロジェクトを開発することはお勧めしません。新しいソリューションに移行できます。 NuGetを使用してライブラリアセンブリをパッケージ化すると、Visual StudioでNuGetを使用してこれらの参照をすべて処理することができます。 "この場合、アドインプロジェクトを開発すると、以前のデプロイメントは破棄されません。

これが役に立ちます。

+0

ありがとうございます。 'ReferenceOutputAssembly'を' false'に設定することは、プロジェクトとリンクしないという効果があります。それをコピーするには、私の質問で言及したブログエントリで説明されているように、2つの追加のメタデータを指定する必要があります。しかし、アドオンプロジェクトで何かを変更すると、まだコピーされずにコンパイルされます。 – tm1

+0

「アドイン」プロジェクトを同じソリューションで開発したいと思います。このワークフローに対してアドバイスしますか? – tm1

+0

@ tm1、私はあなたのコメントのために私の答えを更新しました、それはあなたにいくつかの助けを与えるかどうかを確認することができます。はいの場合は、回答としてマークすることができますので、同じ問題を抱える他のコミュニティメンバーに役立つ可能性があります。そうでない場合は、私に無料で知らせてください、私はそれに従うつもりです。 –

0

動作させるには、どこにでもP2Pリファレンスを使用してください。つまり、「アドイン」プロジェクトを直接参照していない化粧品よりも作業ビルドシステムを優先します。

+0

ここであなたのソリューションを共有してくれてありがとうございました。答えとしてマークすることができ、同じ問題を抱えている他のコミュニティメンバーに役立つかもしれません。 –

+0

@ Leo-MSFTコミュニティのフィードバックに基づいて回答をマークしたいと思います。それが立てば、[this](https://stackoverflow.com/a/47132155/806690)の回答は私のためにうまくいくが、他の人は異なる経験をしている可能性がある。 – tm1

2
falseから ReferenceOutputAssemblyセットで

使用P2Pの参照が、次の-落ちるピット考える:

  • 物事は、Visual Studio 2017バージョン15.4.2およびそれ以前と今であるため、高速な日付チェックまで」doesnのこの機能をサポートしていません。したがって、the docsで説明されているように、DisableFastUpToDateCheckプロパティをアプリケーションプロジェクトのtrueに設定してチェックを無効にします。これにより、ビルド時間が大幅に増加する可能性があります。
  • applicationとreferプロジェクトの出力ディレクトリが一致する場合、プロジェクト参照にCopyToOutputDirectoryメタデータを指定しないでください。それ以外の場合、これはRebuildターゲットを制動します。
関連する問題