2009-06-30 10 views
37

私たちは同じプロジェクトで、同じアプリケーションで作業している2社です。毎週私たちのアセンブリ(コードではない)と交換し、お互いのdllを参照します。.netリファレンスspecificversion trueまたはfalse?

specificversionについては、プロジェクトへの参照を追加する際のベストプラクティスは何ですか? trueの値を使用する場合、具体的には、どの場合にはfalseを使用する必要がありますか。

+0

一般に、[ソフトウェアの腐敗](https://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts)から保護するために、依存関係の正確なバージョンを参照することは良いことです。 Rubyには 'Gemfile.lock'、Python' requirements.txt'、Nodejs 'npm-shrinkwrap.json'があります。 –

+0

も参照してくださいhttp://stackoverflow.com/a/24022135/284795 "最も重要なことの一つは、SpecificVersionは実行時ではなくコンパイル時に有効となるプロパティです。 –

答えて

47

この回答は、あなたがdllをバージョン管理していることを前提としています。

SpecificVersionをtrue(参照を追加するときのデフォルト)に設定すると、プロジェクトはその特定のバージョン(たとえば1.0.0.0など)のdllを参照します。後で新しいdll(1.0.1.0など)が与えられた場合は、古いdll参照を削除して新しい参照を追加する必要があります。これは、新しいバージョン1.0.1.0を使用している場合にプロジェクトが特に1.0.0.0を探しているためです。

これに代わる方法は、SpecificVersionをfalseに設定することです。これは、プロジェクトに最新の利用可能なDLLを見つけて、それを使用するように指示します。この問題は、プロジェクトが現在参照しているdllのさまざまな場所で "狩り"をする必要があり、ビルド時間が長くなることがあります。これは、あなたが参照したdllのパスを知っていても実行されます。これがバグか、これが設計によって行われたかどうかはわかりません。あなたが参照したDLL(おそらくGACや他の場所)の他に、新しいDLLがあるかどうかを調べるかもしれません。

articleは、この問題をより詳しく説明しています。

+0

他の会社から来たアセンブリをバージョン番号を疎結合して考えるべきでしょうか?つまり、特定のバージョンをfalseに設定し、毎週の統合が行われたときに新しいdll(新しいバージョン番号)をドロップするのがよい方法ですか? – sptremblay

+0

ところで、ちょうど記事のあなたの参照を読んで、私に多くの情報をくれました。ありがとう。 – sptremblay

関連する問題