1

私たちの開発チームはかなり小規模で、今まで全員が 1 つの Visual Studio 2012 ソリューションに取り組んでいました。私たちは成長しており、さまざまなプロジェクト チームに複数のソリューションを使用して、より良い分離を実現したいと考えています。

ただし、あるソリューションのコードが別のソリューションのコードを利用したい場合があります。これらの依存関係を管理するには、内部 (つまり、プライベート) NuGet パッケージを使用することが適切な方法であると判断しました。

ただし、異なる SDLC 段階 (開発、QA、ステージング、本番など) にある同じパッケージの複数のバージョンをどのように処理するかという問題が生じています。

例: これら 3 つのソリューションがある場合...

CoreStuff
CoolProject1
CoolProject2

CoolProject1 で作業していて、CoreStuff のコードを利用する必要がある場合は、NuGet パッケージを追加できます。おそらく、このパッケージは CoreStuff の最新の製品 (安定) バージョンになります。

しかし、CoolProject2 に取り組んでいる開発者が、現在開発中の CoreStuff のいくつかの変更を認識しており、そのバージョンを利用したい場合はどうすればよいでしょうか?

それぞれに個別のパッケージを作成するのが最善のアプローチなのか (ソリューションがどの段階にあるかに応じて、パッケージ参照を前後に変更する必要があるようです)、または同じパッケージの複数のバージョンを何らかの方法で利用するのか (それが管理しやすいかどうかはわかりません) NuGet を使用)。

このようなことに取り組む人はいますか?

4

1 に答える 1

5

最初に覚えておくべきことは、NuGet はパッケージ参照を自動的に更新しないことです。そのため、ソリューションを CoreStuff の最新の安定したパッケージ (1.2.2 など) に既に「リンク」している場合は、新しいものであれば問題はありません。 (不安定) バージョンが提供されます (使用しているパッケージがパッケージ リポジトリから消えないことが前提です)。明らかに、パッケージ参照をアップグレードすると、不安定なパッケージが得られます。

したがって、最も簡単な解決策は、他のパッケージがリリースされる前に、NuGet パッケージ マネージャー経由でプロジェクトを取得して、プロジェクトを安定したパッケージに「リンク」することです。UI では最新バージョンのみを取得できますが、パッケージ マネージャー コンソールでは任意のバージョンのパッケージを取得できるため、それを使用してバージョン番号を明示的に指定できます。たとえば、次のようになります。

Install-Package CoreStuff -Version 1.2.2 -Project CoolProject1

それが解決策でない場合は、この問題に取り組むための他のいくつかのオプションがあります。

  • 開発バージョンに、不安定なバージョンであることを示す別のセマンティック バージョン (1.2.3-alpha など) を指定します。この場合、CoolProject1 はパッケージ CoreStuff.1.2.2 (リポジトリ内の最新の安定バージョン) を取り込み、CoolProject2 は CoreStuff.1.2.3-alpha (最新の不安定バージョン) を取り込むことができます。
  • 安定 (リリース済み) パッケージ用と不安定 (開発用) バージョン用など、複数のリポジトリを用意します。次に、目的のリポジトリからパッケージを選択できます。必要に応じて、リリース プロセスのみがパッケージを安定したリポジトリにプッシュし、CI ビルドが不安定なリポジトリにプッシュできるようにすることができます (常に最新のパッケージを利用できるようにするため)。
  • CoolProject2 の開発者が最新バージョンに対して開発したいだけの場合 (ただし、CoreStuff v.next がリリースされるまで CoolProject2 のリリースを待つ場合)、ローカル パッケージ リポジトリ (つまり、ドライブ上のディレクトリ) を作成して、そこにコアの新しいパッケージがあります。そうすれば、他の開発者はパッケージを見ることさえできません。

最も重要なことは、CoreStuff.v-next のバージョン番号が単純に大きい場合、同じリポジトリで CoreStuff.1.2.2 と CoreStuff.v-next を取得しないようにすることです。その場合、NuGet UI v1.2.2 を選択することはできません (ただし、パッケージ マネージャー コンソールは選択できます!)。

あるパッケージ タイプから別のパッケージ タイプに切り替えたい場合は、手動で更新する必要があります (いずれにせよ、次のパッケージ バージョンに変更するときは常にこれを行う必要があります)。少なくとも、パッケージの更新によって何も壊れていないことを確認します。

于 2013-06-26T01:31:23.920 に答える