プロジェクトでオープンソースライブラリ(たとえば、SharpPcapやFakeItEasy)を使用する場合、ソースコードをソリューションに追加するか、DLLに対してコンパイルして、ソリューションのディレクトリに配置する必要がありますか?
6 に答える
バイナリを使用してコンパイルする必要があります。
理由は非常に単純です。あなたのプロジェクトとサードパーティ ライブラリは異なるプロジェクトであり、独自のビルド プロセス中に他のライブラリをコンパイルすると、不要な複雑さとプロジェクトの依存関係が生じる可能性があります。
一部のライブラリでは、環境にいくつかのツールとプラグインをインストールする必要があります。
ビルド プロセスにオープン ソース コードを含める代わりに、通常は Visual Studio ソリューションのルートにバイナリとソース コードの両方を含む依存関係またはlibディレクトリを用意します。サード パーティのコードをデバッグする場合は、Visual Studio の別のインスタンスを開き、デバッガーをプロセス全体にアタッチします。
一部のサードパーティのオープン ソース ライブラリは非常に太く、おそらく独自のコード ベースは小さいと考えてください。多くのソース コードを追加すると、役に立たないもの (コード、プラグイン. ...)。
私はビルド プロセスをライブラリの作成者に委任するという原則を好みます。私の場合、自分自身をそのようなライブラリの消費者と考えています。毎回再コンパイルする必要はありません。
ソース コードを変更する予定がある場合は、作者に連絡してパッチを送信し、公式ディストリビューションに含めるようにすることをお勧めします。そうでない場合は、作成者が新しいバージョンをリリースするたびに、新しいソースコードを独自の変更とマージするという追加の仕事が必要になります...
私はどちらとも思いません。
以下は、ソース コードを配置しない理由です。
- 開発者が不用意にコードを変更する可能性があります
- ライブラリは通常、変更される可能性があります
また、ソリューションに DLL を含める理由は次のとおりです。
- 展開がより簡単になります
- 互換性のないバージョンのライブラリを使用する可能性を減らす
- 参照が欠落する可能性を減らす
それで、どうやって?
ソリューションに
Class Library一意の名前で新しいプロジェクトを追加します。ClassLibrary1Buildプロジェクト設定のページで、アプリケーションOutput path出力パスへの設定ページで、ブロック
Build Eventsする次の行を追加します。Post-build event command linedel "$(TargetPath)"外部 DLL をそのフォルダーにコピーし、それらを参照に追加します。
ClassLibrary1追加さ
Copy Localれたすべての参照のに設定trueそれに他のプロジェクトのセット
Project Dependancies、チェックClassLibrary1DLLが配置されたパスから、他のプロジェクトの参照を追加します
ClassLibrary1Copy Local他のプロジェクトに追加されたこれらすべての DLL のセットfalse
したがって、プロジェクトClassLibrary1は、ソリューションの外部ライブラリの集中管理になります。毎回Rebuild Solution、ClassLibrary1追加された最新の DLL をReferencesアプリケーション出力フォルダーにコピーし、自身で生成した という名前の DLL を削除しますClassLibrary1.DLL。また、アプリケーションはコンパイル時または実行時に同じバージョンの DLL を使用するため、アプリケーションをリリースするたびに追加のデプロイを行ったり、各デプロイをチェックしたりする必要はありません。
最新バージョンで入手している場合、ソースコードが安定していない可能性があるため、提供されているバイナリを使用することをお勧めします。ただし、バージョン管理されたバイナリを提供している場合は、テスト済みで安定している可能性が高くなります。
また、箱から出してそのまま使用するか、変更するかによっても異なります。
通常、バイナリに対してコンパイルします。ソリューションに vendor/libs フォルダーがあるか、NuGet を使用して Dll をコンパイルします。
しかし、期待どおりに何かが起こっていないときに、オープン ソース ライブラリをデバッグする必要がある場合があります。ちょうどその時、ソース コードとリンクします (デバッグのためだけに)。
コードはすでに十分にテストされているため、本番環境に移行するときはバイナリを使用します。
Occam's razor は、ライブラリを変更する必要がない場合は、バイナリを使用する必要があると述べています。
バイナリ:
- ソースのリリース バージョンをプルすることに注意しない限り、より安定しています。
- より簡単に
ソース:
- 変更できます
- ソースに直接ステップインすることで、API の使用をデバッグできます
最後の点は重要な場合が多いため、バイナリだけで開始した場合でも、IDE でソースをダウンロードして開く準備をしてください。特に、使用しているライブラリが新しいか十分にテストされていない場合はそうです。