NuGet 2.5 リリース ノート

NuGet 2.2.1 リリース ノート | NuGet 2.6 リリース ノート

NuGet 2.5 は 2013 年 4 月 25 日にリリースされました。 このリリースはたいへん大きく、バージョン 2.3 と 2.4 をスキップせざるを得ませんでした。 これまで NuGet 用の最大のリリースで、リリースでは[160 work items](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.5&status=all)をオーバーしています。

確認

NuGet 2.5 に多大な貢献をしていただいた次の外部共同作成者に深く感謝をいたします。

  1. [Daniel Plaisted](https://www.codeplex.com/site/users/view/dsplaisted) (@dsplaisted)
    • [#2847](https://nuget.codeplex.com/workitem/2847) - 既知のターゲット フレームワーク識別子のリストに MonoAndroid、MonoTouch、MonoMac を追加。
  2. [Andres G. Aragoneses](https://www.codeplex.com/site/users/view/knocte) (@knocte)
    • [#2865](https://nuget.codeplex.com/workitem/2865) - 大文字と小文字の区別 OS の NuGet.targets スペルをフィックスする
  3. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • ソリューションを Mono 上に構築します。
  4. [Andrew Theken](https://www.codeplex.com/site/users/view/atheken) (@atheken)
    • Mono で単体テストが失敗する課題をフィックスしました。
  5. [Olivier Dagenais](https://www.codeplex.com/site/users/view/OliIsCool) (@OliIsCool)
    • [#2920](https://nuget.codeplex.com/workitem/2920) - nuget.exe pack コマンドが MSBuild にプロパティを伝達しない
  6. [Miroslav Bajtos](https://www.codeplex.com/site/users/view/MiroslavBajtos) (@bajtos)
    • [#1511](https://nuget.codeplex.com/workitem/1511) - 書式設定を保持するように XMLハンドルコードを変更しました。
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • build.cmd が成功できるように認識されたワードをユーザー辞書に追加した。
  8. [Bruno Roggeri](https://www.codeplex.com/site/users/view/broggeri)
    • ローカライズされた VS で実行するときの単体テストをフィックスします。
  9. [Gareth Evans](https://www.codeplex.com/site/users/view/garethevans)
    • PackageService から抽出するインターフェイス
  10. [Maxime Brugidou](https://www.codeplex.com/site/users/view/brugidou) (@brugidou)
    • [#936](https://nuget.codeplex.com/workitem/936) - パッキング時にプロジェクトの依存関係をハンドル
  11. [Xavier Decoster](https://www.codeplex.com/site/users/view/XavierDecoster) (@XavierDecoster)
    • [#2991](https://nuget.codeplex.com/workitem/2991)[#3164](https://nuget.codeplex.com/workitem/3164) - nuget.cofig ファイルにパッケージ ソース化する認証情報を格納するときのクリア テキストのパスワード対応
  12. [James Manning](http://www.codeplex.com/site/users/view/jmanning) (@manningj)
    • [#3190](http://nuget.codeplex.com/workitem/3190)[#3191](https://nuget.codeplex.com/workitem/3191) - Get-パッケージのヘルプの説明をフィックス

また、最終リリースの前に承認およびフィックスされた NuGet 2.5 ベータ/RC のバグを見つけた以下の個人に感謝します。

  1. [Tony Wall](https://www.codeplex.com/site/users/view/CodeChief) (@CodeChief)
    • [#3200](https://nuget.codeplex.com/workitem/3200) - 最新の NuGet 2.4 と 2.5 ビルドで破損した MSTest

本リリースの注目すべき事項

既に存在する内容 ファイルの上書きをユーザーに許可する

NuGet パッケージに含む場合、ディスクに既に存在する内容ファイルを上書きする機能は、常に最も要求されている機能の 1 つです。 NuGet 2.5 以降では、これらの競合が識別され、ファイルを上書きするように求められますが、以前はこれらのファイルは常にスキップされていました。

Overwrite content files

'nuget.exe update' と 'Install-Package' の両方に、コマンド ライン シナリオのデフォルトを設定するための新しいオプション '-FileConflictAction' が追加されました。

パッケージのファイルがターゲット プロジェクトに既に存在する場合はデフォルトアクションを設定します。 常にファイルを上書きするには、[上書き] に設定します。 ファイルをスキップするには、[無視] に設定します。 指定しない場合、競合するファイルごとにプロンプトが表示されます。

MSBuild ターゲットとprops ファイルの自動インポート

NuGet パッケージの最上位平準化に新しい従来のフォルダーが作成されました。 \lib\content\tools,へのピアとして、パッケージに\buildフォルダーを含むことができます。 このフォルダーの下には、{packageid}.targetsまたは{packageid}.propsの固定名の 2 つのファイルを配置できます。 これら 2 つのファイルは、他のフォルダーと同様、buildのすぐ下またはフレームワーク固有のフォルダー下に存在できます。 ベストに一致するフレームワーク フォルダーを選択するための規則は、それらとまったく同じです。

NuGet で \build ファイルを使用してパッケージをインストールすると、.targets.propsファイルをポイントしている MSBuild <Import> 要素がプロジェクト ファイルに追加されます。 .propsファイルは上に追加されますが、 .targets ファイルは下に追加されます。

<References/>要素を使用してプラットフォームごとに異なるリファレンスを指定する

2.5 より前の.nuspecファイルでは 、ユーザーはすべてのフレームワークに追加するリファレンスファイルのみを指定できます。 2.5 のこの新機能により、ユーザーは対応している各プラットフォームの<reference/>要素を作成できます。次に例を示します。

<references>
    <group targetFramework="net45">
        <reference file="a.dll" />
    </group>
    <group targetFramework="netcore45">
        <reference file="b.dll" />
    </group>
    <group>
        <reference file="c.dll" />
    </group>
</references>

NuGet が.nuspecファイルに基づいてプロジェクトへのリファレンスを追加する方法のフローを次に示します。

  1. ターゲット フレームワークに適したlibフォルダーを見つけ、そのフォルダーからアセンブリのリストを取得
  2. ターゲット フレームワークに適した参照グループを個別に検索し、そのグループからアセンブリのリストを取得。 ターゲット フレームワークが指定されていない参照グループはフォールバック グループです。
  3. 2 つのリストの共通部分を検索し、追加リファレンスとして使用します

この新機能により、パッケージ作成者はリファレンス機能を使用して、複数のフォルダーに重複するアセンブリを含める必要がある場合に、アセンブリのサブセットを異 lib なるフレームワークに適用できます。

注: この機能を使用するには、現在 nuget.exe パックを使用する必要があります。NuGet パッケージ エクスプローラーは未対応です。

すべてのパッケージを一括更新できるように [すべて更新] ボタン

すべてのパッケージを更新するための[Update-Package] PowerShell コマンドレットについては周知のとおりです。UI を介してこれを行う簡単な方法があります。

次の手順でこの機能を使用できます。

  1. 新しい ASP.NET MVC アプリケーションを作成する
  2. [NuGet パッケージの管理] ダイアログ ボックス起動
  3. [更新] を選択します
  4. [すべて更新]ボタンをクリックします。

Update All button in the dialog

nuget.exe Pack のプロジェクト リファレンスサポートの強化

nuget.exe pack コマンドは、参照先のプロジェクトを次の規則で処理するようになりました。

  1. 参照先のプロジェクトに対応する.nuspecファイルがある場合 (例えば、proj1.csprojと同じフォルダーに呼び出されたproj1.nuspecと呼ばれているファイルがある場合)、このプロジェクトは、.nuspecファイルから読み取られた ID とバージョンを使用して、パッケージへの依存関係として追加されます。
  2. それ以外の場合は、リファレンスされるプロジェクトのファイルがパッケージにバンドルされます。 その後、このプロジェクトによってリファレンスされるプロジェクトは、同じ規則を使用して再帰的に処理されます。
  3. すべての DLL.pdb、 および .exe ファイルが追加されます。
  4. その他すべての内容 ファイルが追加されます。
  5. すべての依存関係が結合されます。

これにより、.nuspecファイルがある場合は参照先プロジェクトが依存関係として扱われ、それ以外の場合は パッケージの一部になります。

詳細については[http://nuget.codeplex.com/workitem/936](http://nuget.codeplex.com/workitem/936)をご覧ください。

パッケージに 'Minimum NuGetバージョン' プロパティを追加

'minClientVersion' という名前の新しいメタデータ属性は、パッケージを実行するための要件である最小 NuGet クライアント バージョンを示すようになりました。

この機能は、パッケージ作成者が特定バージョンの NuGet の後でのみパッケージを動作するように指定するのに役立ちます。 NuGet 2.5 の後に新しい.nuspec機能が追加されると、パッケージは最小 NuGet バージョンを要求できるようになります。

<metadata minClientVersion="2.6">

ユーザーが NuGet 2.5 をインストール済みで、パッケージが 2.6 を必要としていると識別された場合、パッケージがインストールできないことを示す視覚的な手掛かりがユーザーに提供されます。 その後、ユーザーは自分のバージョンの NuGet を更新するように指示されます。

これにより、パッケージのインストールを開始した後、認識できないスキーマ バージョンが識別されたことを示すエラーが発生する既存の環境が改善します。

パッケージインストール中に依存関係が不必要に更新されなくなりました

NuGet 2.5 以前、プロジェクトに既にインストールされているパッケージに依存するパッケージがインストールされていた場合、既存バージョンが依存関係を満たしている場合でも、依存関係は新しいインストールの一部として更新されます。

NuGet 2.5 開始以降では、依存関係のバージョンが既に満たされている場合、他のパッケージのインストール中に依存関係は更新されません。

シナリオ:

  1. ソース リポジトリには、バージョン 1.0.0 と 1.0.2 のパッケージ B を含む。 また、B (>= 1.0.0) に依存するパッケージ A も含む。
  2. 現在のプロジェクトにパッケージ B バージョン 1.0.0 が既にインストールされていることを前提にします。 インストールするパッケージAを検索します。

NuGet 2.2 以前の場合:

  • パッケージ A をインストールすると、既存のバージョン 1.0.0 が依存関係バージョンの制約 (>= 1.0.0) を既に満たしている場合でも、NuGet は B を 1.0.2 に自動更新します。

NuGet 2.5 以降:

  • 既存のバージョン 1.0.0 が依存関係バージョンの制約を満たしていることを検出するため、NuGet は B を更新しません。

この変更の背景については、詳細 [work item](https://nuget.codeplex.com/workitem/1681) と関連 する[discussion thread](https://nuget.codeplex.com/discussions/436712)を参照してください。

nuget.exe は緻密な詳細付HTTP 要求を出力します

nuget.exe のトラブルシューティングを行っているか演算中に行われる HTTP 要求が気になる場合は、[-verbosity detailed]スイッチによって、行われたすべての HTTP 要求が出力されるようになりました。

HTTP output from nuget.exe

nuget.exe プッシュで UNC ソースとフォルダー ソースに対応します

NuGet 2.5 より前では、UNC パスまたはローカル フォルダーに基づいてパッケージ ソースに 'nuget.exe push' を実行しようとすると、プッシュは失敗するはずです。 最近追加された階層構成機能では、nuget.exe が UNC/フォルダー ソースまたは HTTP ベースの NuGet ギャラリーをターゲットにすることが概して必要になりました。

NuGet 2.5 からは、nuget.exe が UNC/フォルダー ソースを識別すると、ソースにファイルがコピーされます。

次のコマンドが機能します。

nuget push -source \\mycompany\repo\ mypackage.1.0.0.nupkg

nuget.exe では、明示的に指定された構成ファイルに対応する

構成にアクセスする nuget.exe コマンド ('spec' と 'pack' を除くすべて) で新しい '-ConfigFile' オプションに対応します。これにより、%AppData%\nuget\Nuget.Config のデフォルト構成ファイルの代わりに特定の構成ファイルが強制的に使用されるようになります。

例:

nuget sources add -name test -source http://test -ConfigFile C:\test\.nuget\Nuget.Config

ネイティブプロジェクト対応。

NuGet 2.5 では、Visual Studio のネイティブ プロジェクトで NuGet ツールを使用可能です。 大部分のネイティブ パッケージでは、CoApp プロジェクトによって作成されたツールを使用し、上記の MSBuild インポート機能を利用する予定です。 詳細についてcoapp.org Web サイトでツールの詳細を参照してください。

「native」 のターゲット フレームワーク名前は、パッケージがネイティブ プロジェクトにインストールされるときに、ビルド、内容、ツールにファイルを含めるために導入されます。 [lib]フォルダーはネイティブ プロジェクトには使用されません。