2017-01-05 4 views
3

私は250を超えるプロジェクトからなる大規模なソリューションを開発しています。 Visual Studio Nuget UIまたはNugetコマンドラインツールのいずれかを使用している場合、これらのすべてのプロジェクトで使用される共通のNugetパッケージを更新するには、2〜3時間かかります。私は手動でファイルを更新することでこれをより迅速に行う方法を探しています。Nuget UIやコマンドラインツールを使用せずに手動でNugetパッケージを更新する方法

私の最初の考えは、各プロジェクトの*.configファイルでパッケージのバージョン番号を更新するだけでした。たとえば、検索および

<package id="ThisPackage" version="0.0.0.2" targetFramework="net452" /> 

<package id="ThisPackage" version="0.0.0.1" targetFramework="net452" /> 

を置き換えるこれは実際にあなたがVS Nuget UIを介してアップデートを実行するときに、私はこれをやって、その後、ソリューションを再構築することは取るだろうと思った何が起こるかのようですすべての気にしてください。手作業で依存関係をpackage.jsonに編集し、ノードでnpm installを実行しているような感じです。

これは機能しません。設定ファイルがNugetによって更新されたときのやり方で、.csprojファイル内の参照が更新されることはありません。

私は手動で

<HintPath>..\..\packages\ThisPackage.0.0.0.2\ 

<HintPath>..\..\packages\ThisPackage.0.0.0.1\ 

を見つけると置き換えることにより、例えば、同様.csprojファイルを更新する可能性がしかし、おそらく、私はまた、参照アセンブリのバージョンを更新する必要があると私は」特定のバージョンのNugetパッケージのためにどのようにすべきかを理解する方法がわかりません。さらに、3時間のデッドタイムの​​代わりに約30時間の作業をしていますが、現時点ではちょっと混乱し、エラーを起こしやすいです。

複数の時間がかからないソリューションで、多数のプロジェクトにわたってNugetパッケージを更新する方法が見つかったことはありますか?

+0

Visual Studioを最初に閉じる限り、Nuget cliを使用してパッケージを更新する方がはるかに迅速です。私の場合は約5分かかります。例えば'nuget update -id Package.Id mysolution.sln' –

答えて

3

パッケージの更新時間は、パッケージのダウンロードとパッケージのアンインストールとインストールで構成されます。ダウンロードアクションは、初めてダウンロードするときに1回だけ実行されるため、アンインストール/インストールアクションはほとんどすべての更新時間を占めます。キリマン氏のアドバイスを受け入れて、マシン性能を最初に確認することができます。

これらのパッケージを手順に従って手動で更新する場合は、アップデート時間を短縮するには、次の手順を実行してください。

  • アップデートパッケージをダウンロードし、ローカルパッケージレポジトリに置きます。
  • パッケージを解凍し、参照されているアセンブリバージョンを見つけます。または、NuGet Package Explorerツールを使用して、参照されているアセンブリバージョンを取得することもできます。
  • すべてのpackage.configのパッケージバージョンを一括して置き換えます。
  • メモ帳++などのサードパーティツールを使用して、すべての.csprojファイルのパッケージバージョンと参照アセンブリバージョンを一括して置き換えます。
+0

Nugetパッケージエクスプローラに言及してくれてありがとう。それは非常に役に立つと思う。 –

+0

@Wendy - MSFTの答えのステップに基づいてこれを自動化するためのLinqpadスクリプトを書いた。 https://github.com/timbarclay/BulkNugetUpdaterのgithubにあります。私のソリューションでは、3時間ではなく10〜15秒の時間がかかり、正常に動作するようです –

0

NuGetパッケージをファーストクラスの市民として扱う.NETコアを使用している場合を除き、手動でパッケージを更新しようとはしません。

今、パッケージをダウンロードしたり、プロジェクト参照を更新するなど、あまりにも多くのことが起こりすぎて、自分自身でエラーを起こす可能性が非常に高くなります。

おそらく本当の質問は、なぜパッケージを更新するのに時間がかかりますかということです。他のNuGetリポジトリを追加しましたか?おそらく、そのうちの1人がタイムアウトしています。

不要なネットワークリクエストが行われているかどうかを確認するためにFiddlerを実行しようとしましたか?問題はすべてのマシンで発生するのでしょうか、それとも特定のマシンだけで発生しますか?開発者ワークステーションであるか、サーバーを構築していますか?

関連する問題