2015-09-22 11 views
9

私たちは、様々な "共通の"依存関係(Unity、Prismなど)を持つ仕事場でWPFアプリケーションを開発しています。NuGetでパッケージの依存関係を処理するスマートな方法はありますか?

新しいプロジェクトを追加してプロジェクトごとにNuGetパッケージの依存関係を設定しても問題ありませんが、アップグレードに関しては、それぞれのプロジェクトをすべて実行して古い参照を削除してから、 NuGetから最新のパッケージを再取得してください。

たとえば、プリズムを5.0から6.0にアップグレードすることになっていました。これは、すべてのプロジェクトを通過しなければならないすべての名前空間の競合などを修正することに加えて、古い参照、新しいdependeciesを追加し、すすぎ、繰り返します。

私の質問は、この問題に対処するよりスマートな方法があるのか​​、これが標準的なアプローチですか?事前に

多くのおかげで、

更新:

私はパッケージマネージャには表示されません「主要な」アップグレードとほとんど心配です。バージョン5.0 - > 6.0のアップグレードはメジャーアップグレードとして扱われるため、NuGetパッケージマネージャで自動アップデートが適用されません。

NuGetは自動的にこれを行うことはできませんが、そのようなアップグレードには変更を加えることが含まれている場合がありますが、削除するよりは致命的なメジャーアップグレードを行う方法があるかどうかを知りたいのですがプロジェクトからの参照と各プロジェクトのpackages.configを参照し、NuGetを使用してそれらを再追加します。比較的大規模なプロジェクトの場合、これは非常に時間がかかり、誰かがそのような依存関係を管理するより良い方法を持っているのだろうかと思っていました。

+0

まだVS2015で作業していないと思います...どのVisual Studioのバージョンを使用していますか? –

+0

@ DeblatonJean-Philippe 2013.私は2015年にアップグレードしたいと思っていますが、現時点では実現不可能です(企業ライセンスなど) – kha

+0

@kha(更新後)私は理解できません。私はNuGet Package Managerを介してv5.0.0からv6.1.3へのEntity Frameworkの主要な更新を行いました。そして、はい、そこには大きな変更が加えられていましたので、それらも修正する必要がありました。 app.config/web.configファイル内の参照は自動的に更新されました。私がしなければならなかったことは、usingステートメントのいくつかの名前空間の問題を変更することでした。 – djm61

答えて

3

VS2013を使用する場合は、ソリューションを右クリックして[ソリューション用NuGetパッケージを管理]を選択することで、すべてのNuGetパッケージを管理できます。これにより、ソリューション内のすべてのプロジェクトにインストールされているすべてのパッケージと、利用可能な更新があるすべてのパッケージを表示するダイアログが表示されます。パッケージをアップグレードすると、VSは必要なすべての参照変更を処理します。パッケージに壊れた変更があった場合、それらを修正するためのフックにはまだいます。

免責事項:私はWPFプロジェクト/ソリューションで作業したことはありませんが、Web/FormsアプリケーションではNuGetパッケージがこのように処理されます。

+0

ありがとう@ djm61。私の元の投稿の私の更新を見てください。 – kha

0

私はあなたのような同様の問題があったのであなたの痛みを理解することができますが、簡単な方法はありません。しかし、確かに日々の開発と依存関係更新の展開とは違ってプロセスを壊す必要があります。

私が取り組んでいるプロジェクトでは、作業するソリューション間で共通のリポジトリパスを使用しています。クリーンな状態を得るためには、すべてのソリューションフォルダの参照を削除する必要があります。あなたは、共通の目的のリポジトリを指すプロパティグループを変更する必要がある上で動作する各ソリューションについては

は、すべての物事のセットアップ後は、あなたが実際に更新を行うことができます

(私は相対パスを使用しています)スクリプト(私はPythonの実行時のスクリプトを使用しています)

あなたが実際に細部のためsetting up common nuget-packages-folder for reference updatesを見ることができますが、アップグレードしようとしたとき、私は同様の問題を持っていたあなたは自動化プロセス

0

のために見てどのように思えますXamarin Studioでアルファチャンネルの問題を抱える複数のパッケージVS 2015 NuGetマネージャの関係。私はvery simple PowerShell scriptを書くことになりました。私は1日に複数回走っています。

# 
# This script updates local ibGib NuGet packages for mobileGib Android app solution. 
# For convenience in copy+paste in manager console: 
# ../UpdateLocalNugetPackages.ps1 

Update-Package commonGib 
Update-Package ibGib 
Update-Package languageGib.Biz 
Etc. 

あなたのニーズに合わせてNuGetコマンドを調整できると思います。

また、気づいていない場合は、NuGet command line referenceを必ず読んでください。私は間違っているかもしれませんが、あなたのシナリオが更新コマンドで実行できるように思えます。