NuGet 2.8 リリース ノート

NuGet 2.7.2 リリース ノート | NuGet 2.8.1 リリース ノート

NuGet 2.8 は 2014 年 1 月 29 日にリリースされました。

確認

  1. [Llewellyn Pritchard](https://www.codeplex.com/site/users/view/leppie) (@leppie)
    • [#3466](https://nuget.codeplex.com/workitem/3466) - パッケージをパックするときに、依存関係パッケージの ID を検証する。
  2. [Maarten Balliauw](https://www.codeplex.com/site/users/view/maartenba) (@maartenballiauw)
    • [#2379](https://nuget.codeplex.com/workitem/2379) - フィード認証情報を保持するときに、$metadataサフィックスを削除。
  3. [Filip De Vos](https://www.codeplex.com/site/users/view/FilipDeVos) (@foxtricks)
    • [#3538](http://nuget.codeplex.com/workitem/3538) - nuget.exe update コマンドのプロジェクト ファイル指定に対応。
  4. [Juan Gonzalez](https://www.codeplex.com/site/users/view/jjgonzalez)
    • [#3536](http://nuget.codeplex.com/workitem/3536) - REPLACEトークンは -IncludeReferencedProjectsとは渡されません。
  5. [David Poole](https://www.codeplex.com/site/users/view/Sarkie) (@Sarkie_Dave)
    • [#3677](http://nuget.codeplex.com/workitem/3677) - 大きなパッケージをプッシュするときに OutOfMemoryException をスローする nuget.push をフィックスします。
  6. [Wouter Ouwens](https://www.codeplex.com/site/users/view/Despotes)
    • [#3666](http://nuget.codeplex.com/workitem/3666) - プロジェクトが別の CLI/C++ プロジェクトをリファレンスするときに、正しくないターゲットにするパスをフィックスします。
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • [#3639](https://nuget.codeplex.com/workitem/3639) - パッケージを開発の依存関係としてデフォルトでインストールできるようにする
  8. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • [#3717](https://nuget.codeplex.com/workitem/3717) - 最新のパッチ バージョンへの暗黙的なアップグレードを削除
  9. [Gregory Vandenbrouck](https://www.codeplex.com/site/users/view/vdbg)
    • NuGet.Server、nuget.exe ミラー コマンドなどのバグ修正と機能強化。
    • この作業は数ヶ月にわたって行われ、グレゴリーは2.8のマスターに統合するための適切なタイミングで私たちと協力しました。

依存関係のフィックスプログラムの解決

パッケージの依存関係を解決する場合、NuGet はこれまで、パッケージへの依存関係を満たす最小のメジャー パッケージ バージョンとマイナー パッケージ バージョンを選択する戦略を実装してきました。 ただし、メジャー バージョンとマイナー バージョンとは異なり、パッチ バージョンは常に最高バージョンに解決されていました。 動作は適切な意図を持っていましたが、依存関係のあるパッケージをインストールするための決定性が不足していました。 次の例を考えてみましょう。

PackageA@1.0.0 -[ >=1.0.0 ]-> PackageB@1.0.0

Developer1 installs PackageA@1.0.0: installed PackageA@1.0.0 and PackageB@1.0.0

PackageB@1.0.1 is published

Developer2 installs PackageA@1.0.0: installed PackageA@1.0.0 and PackageB@1.0.1

この例で、Developer1 と Developer2 が PackageA@1.0.0 でインストールされていても、それぞれ異なるバージョンの PackageB が作成されました。 NuGet 2.8 では、パッチ バージョンの依存関係解決動作がメジャー バージョンとマイナー バージョンの動作と一致する既定の動作が変更されます。 上記の例で、PackageB@1.0.0 は、新しいパッチ バージョンに関係なく、PackageA@1.0.0 をインストールした結果としてインストールされるはずです。

-DependencyVersion SWITCH

NuGet 2.8 は依存関係を解決するためのデフォルト動作を変更しますが、パッケージ マネージャー コンソールの -DependencyVersion スイッチを使用して依存関係解決プロセスをより正確に制御することもできます。 スイッチを使用すると、依存関係を可能な限り低いバージョン (既定の動作)、可能な限り高いバージョン、または最高のマイナーバージョンまたはパッチ バージョンに解決できます。 このスイッチは、powershell コマンドの install-package に対してのみ機能します。

DependencyVersion Switch

DependencyVersion属性

前述の -DependencyVersion スイッチに加え、-DependencyVersion スイッチが install-package の呼び出しで未指定の場合、NuGet.Config ファイルで既定値を定義する新しい属性を設定することもできます。 この値は、NuGet パッケージ マネージャー ダイアログでも、インストール パッケージの操作で考慮されます。 この値を設定するには、以下の属性を Nuget.Config ファイルに追加します。

<config>
    <add key="dependencyversion" value="Highest" />
</config>

-whatif を使用して NuGet 操作をプレビューする

一部の NuGet パッケージには深い依存関係グラフが含まれる場合があるため、インストール、アンインストール、または更新の操作中に、最初に何が起こるかを確認するのに役立ちます。 NuGet 2.8 では、標準の PowerShell -whatif スイッチを install-package、uninstall-package、update-package コマンドに追加して、コマンドが適用されるパッケージのクロージャ全体を視覚化できるようにします。 例えば、空の ASP.NET Web アプリケーションで実行 install-package Microsoft.AspNet.WebApi -whatif すると、次のようになります。

PM> install-package Microsoft.AspNet.WebApi -whatif
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.WebHost (≥ 5.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Core (≥ 5.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Client (≥ 5.0.0)'.
Attempting to resolve dependency 'Newtonsoft.Json (≥ 4.5.11)'.
Install Newtonsoft.Json 4.5.11
Install Microsoft.AspNet.WebApi.Client 5.0.0
Install Microsoft.AspNet.WebApi.Core 5.0.0
Install Microsoft.AspNet.WebApi.WebHost 5.0.0
Install Microsoft.AspNet.WebApi 5.0.0

パッケージのダウングレード

新しい機能を調査し、最後に安定したバージョンにロールバックすることを決定するために、プレリリース バージョンのパッケージをインストールすることは珍しくありません。 NuGet 2.8 より前のバージョンでは、プレリリース パッケージとその依存関係をアンインストールしてから、以前のバージョンをインストールするマルチステップ プロセスでした。 ただし、NuGet 2.8 では、更新パッケージはパッケージクロージャ全体 (パッケージの依存関係ツリーなど) を以前のバージョンにロールバックするようになりました。

開発の依存関係。

開発プロセスの最適化に使用されるツールなど、さまざまな種類の機能を NuGet パッケージとして提供できます。 これらのコンポーネントは、新しいパッケージの開発にインストルメント化できますが、後で公開されるときに、新しいパッケージの依存関係と見なすべきではありません。 NuGet 2.8 を使用すると、パッケージは.nuspecファイル内の自身を developmentDependency として識別できます。 インストールすると、このメタデータは、パッケージがインストールされたプロジェクトの packages.config ファイルにも追加されます。 その packages.config ファイルが後でnuget.exe pack 中にNuGet の依存関係について分析されると、開発の依存関係 としてマークされている依存関係が除外されます。

異種プラットフォーム用の個々の packages.config ファイル

複数のターゲット プラットフォーム用にアプリケーションを開発する場合、それぞれのビルド環境ごとに異なるプロジェクト ファイルがあるのが一般的です。 また、パッケージにはプラットフォームごとにさまざまなレベル対応があるため、異なるプロジェクト ファイルで異なる NuGet パッケージを使用することも一般的です。 NuGet 2.8 では、プラットフォーム固有のプロジェクト ファイルごとに異なる packages.config ファイルを作成することで、このシナリオ対応が強化されています。

Multiple package.config files

ローカル キャッシュにフォールバック

NuGet パッケージは通常、ネットワーク接続を使用して NuGet ギャラリーなどの リモート ギャラリー から使用されますが、クライアントが接続されていないシナリオは多数あります。 ネットワーク接続がないと、NuGet クライアントは、パッケージがローカル NuGet キャッシュ内のクライアントのコンピューター上に既にある場合でも、パッケージを正常にインストールできませんでした。 NuGet 2.8 では、パッケージ マネージャー コンソールに自動キャッシュ フォールバックが追加されます。 例えば、ネットワーク アダプターを切断して jQuery をインストールすると、コンソールに次の内容が表示されます。

PM> Install-Package jquery
The source at nuget.org [https://www.nuget.org/api/v2/] is unreachable. Falling back to NuGet Local Cache at C:\Users\me\AppData\Local\NuGet\Cache
Installing 'jQuery 2.0.3'.
Successfully installed 'jQuery 2.0.3'.
Adding 'jQuery 2.0.3' to WebApplication18.
Successfully added 'jQuery 2.0.3' to WebApplication18.

キャッシュ フォールバック機能では、特定のコマンド引数は必要ありません。 さらに、キャッシュフォールバックは現在、パッケージ マネージャー コンソールでのみ機能します。この動作は現在、パッケージ マネージャー ダイアログでは機能しません。

WebMatrix NuGet クライアント 更新

NuGet 2.8 と共に、WebMatrix 用の NuGet 拡張機能も更新され、NuGet 2.5 で提供される主要な機能の多くが含まれるようになっています。 新機能には、"すべて更新" や "NuGet の最小バージョン" などの機能が含まれており、コンテンツ ファイルを上書きできます。

WebMatrix 3 で NuGet パッケージ マネージャー 拡張機能を更新するには:

  1. WebMatrix 3 を開く
  2. リボンの[拡張機能] アイコンをクリックします。
  3. [更新]Tabを選択
  4. NuGet パッケージ マネージャーを 2.5.0 に更新するようクリックします
  5. WebMatrix 3 を閉じて再起動

これは、WebMatrix 用の NuGet パッケージ マネージャー 拡張機能の NuGet チームの最初のリリースです。 このコードは最近、Microsoft によってオープンソースの NuGet プロジェクトに提供されました。 以前は、NuGet 統合は WebMatrix に組み込まれており、WebMatrix から帯域外で更新できませんでした。 NuGet の他のクライアント ツールと共にさらに更新する機能が追加されました。

バグ修正

行われた主なバグ修正の 1 つは、update-package -reinstall コマンドのパフォーマンスの改善でした。

これらの機能と前述のパフォーマンスフィックスメンションに加えて、NuGet のこのリリースには、他の多くのバグ修正も含まれています。 このリリースでは、合計 181 件の問題が解決されました。 NuGet 2.8 でフィックスされた作業項目の完全なリストについては、[NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.8&status=all)を閲覧してください。