2011-09-13 3 views
2

NuGetを使用して組織内の開発者フレームワークとツールをどのように配布できるかを調べています。サーバーのセットアップがあり、パッケージを生成して消費するプロジェクトに追加することができます。私は今これをより現実的な状況に拡大しようとしています。NuGetディストリビューションのクラスライブラリを設定する

私の場合、私は組織内のすべての開発チームに配布するフレームワークを用意します。このフレームワークには、「コア」クラスライブラリがあり、次にAcme.Web、Acme.Silverlightなどのテクノロジ固有ライブラリのセットがあります。これらのライブラリのそれぞれは、「コア」アセンブリを参照します。

これらのアセンブリのそれぞれを、他のパッケージ内の依存関係として設定されている「コア」を含む独自のNuGetパッケージにパッケージングしました。これは、開発者がクラスライブラリを作成するときにのみ「コア」を参照するように選択してもよいし、Webアプリケーションなどを作成するときにそれらのタイプが必要な場合もあるからです。他のすべてのパッケージで更新が必要です。または私はできますか?

私がプロジェクトAを持っているとしたら、NuGetパッケージCに依存するNuGetパッケージBを追加して、パッケージCを更新するとします。パッケージBを再構築、再パッケージ化、再ポストすることなくこの更新プログラムを配布できますか?もしあれば、バージョン管理に問題がないことを確認するために必要なステップはありますか?

答えて

7

あなたが求めている質問は、以下の依存関係グラフを考えると、あるようですね:

- >意味Cへのアップデートがあるようになった場合、C 1.1を言うことができます

B 1.0 -> C 1.0 

に依存そのアップデートをCに公開して、コンシューマにBを壊さずにアップデートできるかどうかを知りたいとします。

ここでアセンブリをパッキングしていると仮定します。それが事実なら、あなたは間違いなくそれを行うことができます。 NuGetは、強力な名前のアセンブリ(つまり、必要なバインディングのリダイレクトを追加する)に対してこの作業を行うために役立ついくつかのことを行います。適切なバージョン管理を使用していることを確認するだけです(David Ebboのpostsをお読みください)。

これがどのように機能するかについて基本的な理解を得るためです。あなたは3のチームにいると言う、あなたは、現像液1及び2

  1. あなたは、あなたの会社のフィード
  2. 開発1インストールB 1.0にパッケージB 1.0およびC 1.0を公開して取得しますC 1.0
  3. あなたはCに小さなバグを修正し、それをC 1.0.1と呼んでいます(それは壊れていないからです)。あなたはBを更新しない(つまり、C 1.0ではなくC 1.0に依存しているということを意味する)。 1.0.1へ
  4. 開発1つのアップデートCと
  5. 開発者2は、B 1.0をインストールし、C 1.0.1(NuGetの依存解決行動を)取得作業し続けます。上記のシナリオでは

あなたはC 1.0からC 1.0.1にバージョンを変更し、あなたが巨大な破壊の変更を行ったとバージョンをぶつけた場合、今すぐに再発行するB.

持っていませんでしたおそらく、Bを再パッケージし、バージョン番号を増やし、そのバージョンをC 2に依存させることを検討したいと思うかもしれません。0:

B 2.0 -> C 2.0 
+0

これは、私が達成しようとしているものです。優れた! – SonOfPirate

関連する問題