NuGet 1.4 リリース ノート
NuGet 1.3 リリース ノート | NuGet 1.5 リリース ノート
NuGet 1.4 は 2011 年 6 月 17 日にリリースされました。
機能
更新プログラム パッケージの機能強化
NuGet 1.4 では、更新プログラム パッケージ コマンドに多くの機能強化がが加えられ、ソリューション内の複数のプロジェクト間でパッケージを同じバージョンに維持することが容易になりました。 例えば、パッケージを最新バージョンにアップグレードする場合、そのパッケージがインストールされているすべてのプロジェクトを同じバージョンに更新する必要があるというのは、非常に一般的です。
Update-Package
コマンドにより、次のことが簡単になりました。
1 つのプロジェクト内のすべてのパッケージを更新する
Update-Package -Project MvcApplication1
すべてのプロジェクトのパッケージを更新する
Update-Package PackageId
すべてのプロジェクトのすべてのパッケージを更新する
Update-Package
すべてのパッケージで「安全な」更新を実行する
-Safe
フラグは、同じメジャー バージョンとマイナー バージョン コンポーネントを持つバージョンのみに対してアップグレードを制限します。 例えば、バージョン 1.0.0 のパッケージがインストールされており、バージョン 1.0.1、1.0.2、1.1 がフィードで使用可能な場合、-Safe
フラグは、パッケージを 1.0.2 に更新します。 -Safe
フラグなしでアップグレードすると、パッケージは最新バージョンの 1.1 にアップグレードされます。
Update-Package -Safe
ソリューション レベルでのパッケージの管理
NuGet 1.4 より前のバージョンでは、ダイアログを使用して、複数のプロジェクトにパッケージをインストールするのは面倒でした。 プロジェクトごとに、一度ダイアログを起動する必要がありました。
NuGet 1.4 では、複数のプロジェクトで、同時にパッケージをインストール/アンインストール/更新するためのサポートが追加されています。 ソリューションを右クリックして、[NuGet パッケージの管理] メニュー オプションを選択して起動するだけです。
ダイアログのタイトル バーには、プロジェクト名ではなく、ソリューション名が表示されます。 パッケージ操作では、操作を適用するプロジェクトのリストが含まれたチェックボックス リストが表示されるようになりました。
詳細については、「ソリューションのパッケージの管理」を参照してください。
許可されたバージョンへのアップグレード制限
デフォルトでは、パッケージに対してUpdate-Package
コマンドを実行する (または、ダイアログを使用してパッケージを更新する) と、フィード内の最新バージョンに更新されます。 新しいサポートを使用してすべてのパッケージを更新する場合に、特定のバージョン範囲にパッケージをロックしたい場合があります。 アプリケーションがパッケージのバージョン 2.* でのみ動作してバージョン 3.0 以降で動作しないと分かっている場合などです。 パッケージを誤って 3 に更新しないようにするために、NuGet 1.4 では、新しいallowedVersions
属性を使用してpackages.config
ファイルを手動で編集することで、パッケージをアップグレードできるバージョンの範囲を制限するためのサポートが追加されています。
例えば、次の例は、バージョン範囲を 2.0 から 3.0 のSomePackage
パッケージの (限定的) パッケージをロックする方法を示しています。
このallowedVersions
属性は、バージョン範囲形式を使用して値を受け入れます。
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="SomePackage" version="2.1.0" allowedVersions="[2.0, 3.0)" />
</packages>
1.4 で、パッケージを特定のバージョン範囲にロックするには、手動で編集する必要があることに注意してください。 NuGet 1.5 では、Install-Package
コマンドを使用してこの範囲を配置するためのサポートを追加する予定です。
パッケージ ビジュアライザー
[ツール] ->[ライブラリ パッケージ マネージャー] ->[パッケージ ビジュアライザー] メニュー オプションから起動する新しいパッケージ ビジュアライザーを使用すると、ソリューション内のすべてのプロジェクトとそのパッケージの依存関係を簡単に視覚化できます。
重要な注意: この機能は、Visual Studio の DGML サポートを利用します。 視覚エフェクトの作成は、Visual Studio Ultimate でのみサポートされています。 DGML ダイアグラムの表示は、Visual Studio Premium 以降でのみサポートされます。
NuGet ダイアログの自動更新チェック
NuGet の一部のバージョンでは、古いバージョンの NuGet ダイアログでは認識されない.nuspec
ファイルを介して表現される新機能が導入されています。
1 つの例として、フレームワーク アセンブリを指定するための NuGet 1.4 への導入があります。
したがって、最新バージョンの NuGet を使用して、最新の機能を利用してパッケージを使用できるようにすることが重要です。
NuGet の更新がより視覚的にわかりやすくなるように、NuGet ダイアログには、新しいバージョンが使用可能になったら強調表示するロジックが含まれています。
注: チェックは、現在のセッションで [オンライン] タブが選択されている場合にのみ行われます。
更新プログラムの自動チェックをオフにするには、[NuGet の設定] ダイアログボックスに移動し、[更新プログラムを自動的に確認する] をオフにします。
この機能は NuGet 1.3 に追加されましたが、NuGet 1.4 などの 1.3 への更新プログラムが利用可能になるまでは表示されません。
パッケージ マネージャー ダイアログの改善
- メニュー名の改善: ダイアログを起動するためのメニューオプションの名前が、わかりやすく変更されました。 メニュー オプションは、[NuGet パッケージの管理] になりました。
- [詳細] ウィンドウには、最新の更新日が表示されます。[NuGet] ダイアログに [オンライン] タブまたは [更新] タブが選択されている場合に、パッケージの詳細ウィンドウに最新の更新プログラムの日付が表示されます。
- 表示されるタグの一覧: [Nuget] ダイアログにタグが表示されます。
PowerShell の機能強化
- 署名済みの PowerShell スクリプト: NuGet には、より制限の厳しい環境での使用を可能にする署名付き PowerShell スクリプトが含まれています。
- プロンプトのサポート: パッケージ マネージャー コンソールで、
$host.ui.Prompt
と$host.ui.PromptForChoice
コマンドによるプロンプトがサポートされるようになりました。 - パッケージ ソース名: フラグを使用してパッケージ ソースを指定する場合、パッケージ ソース名の指定が
-Source
サポートされます。
nuget.exe コマンド ラインの機能強化
- NuGet カスタム コマンド: nuget.exe は、MEF を使用して、カスタム コマンドで拡張することができます。
- シンボル パッケージを作成するためのワークフローの簡素化:
-Symbols
フラグは、通常の規則ベースのフォルダー構造に適用でき、フォルダー内にソースと.pdb
ファイルのみを含めることでシンボル パッケージを作成できます。 - 複数のソースの指定:
NuGet install
コマンドは、セミコロンの区切り文字としての使用や、-Source
の複数回の指定など、複数のソースを指定できます。 - プロキシ認証のサポート: NuGet 1.4 では、認証を必要とするプロキシの背後で NuGet を使用するときにユーザー認証情報の入力を求めるためのサポートが追加されています。
- nuget.exe 破壊的変更の更新: nuget.exe が自身を更新するには、
-Self
フラグが必要になりました。nuget.exe Update
はpackages.config
ファイルへのパスを受け取り、パッケージの更新を試みるようになりました。 この更新プログラムは、** プロジェクト ファイルの内容の更新、追加、削除をしないという点で制限されていることに注意してください。 ** パッケージ内で PowerShell スクリプトを実行します。
nuget.exe を使用しているパッケージのプッシュに対する NuGet サーバーのサポート
NuGet には、NuGet.Server
NuGet パッケージを介して軽量の Web ベースの NuGet リポジトリをホストする簡単な方法が含まれています。 NuGet 1.4 では、軽量サーバーは nuget.exe を使用しているパッケージのプッシュと削除をサポートしています。
NuGet.Server
の最新バージョンが、新しいappSetting
を、apiKey
という名前で追加します。 キーが省略された、または空白のままの場合は、フィードへのパッケージのプッシュは無効になります。 apiKey を値 (理想的には強力なパスワード) に設定すると、nuget.exe を使用して、パッケージをプッシュできます。
<appSettings>
<!-- Set the value here to allow people to push/delete packages from the server.
NOTE: This is a shared key (password) for all users. -->
<add key="apiKey" value="" />
</appSettings>
Windows 電話ツール「Mango」エディションのサポート
NuGet は、「Mango」向けの Windows 電話ツールのリリース候補バージョンでサポートされるようになりました。 現在、Windows 電話ツールは、Visual Studio 拡張情報マネージャーをサポートしていないため、Windows 電話ツール用の NuGet をインストールするには、VSIX を手動でダウンロードして実行することが必要となる場合があります。
Windows 電話ツール向けの NuGet をアンインストールするには、次のコマンドを実行します。
vsixinstaller.exe /uninstall:NuPackToolsVsix.Microsoft.67e54e40-0ae3-42c5-a949-fddf5739e7a5
バグの修正
NuGet 1.4 では、合計 88 件の作業項目が修正されました。 そのうち 71 件が、バグとしてマークされました。
NuGet 1.4 で修正された作業項目の全リストについては、[NuGet Issue Tracker for this release](http://nuget.codeplex.com/workitem/list/advanced?keyword=&status=All&type=All&priority=All&release=NuGet%201.4&assignedTo=All&component=All&sortField=LastUpdatedDate&sortDirection=Descending&page=0)
を参照してください。
注目すべきバグ修正:
[Issue 603](http://nuget.codeplex.com/workitem/603)
: 異なるリポジトリ間のパッケージの依存関係は、特定のパッケージソースを指定すると適切に解決されます。[Issue 1036](http://nuget.codeplex.com/workitem/1036)
: ビルド後のイベントにNuGet Pack SomeProject.csproj
を追加しても、無限ループが発生しなくなりました。[Issue 961](http://nuget.codeplex.com/workitem/961)
:-Source
フラグは相対パスをサポートします。
NuGet 1.4 の更新
NuGet 1.4 のリリース後まもなくして、修正すべき重要な問題が複数見つかりました。 この 1.4 への更新に特定されたバージョン番号は 1.4.20615.9020 です。
バグの修正
[Issue 1220](http://nuget.codeplex.com/workitem/1220)
: 更新プログラム パッケージは、複数のプロジェクトがある場合には、すべてのプロジェクトでinstall.ps1
/uninstall.ps1
を実行するわけではありません[Issue 1156](http://nuget.codeplex.com/workitem/1156)
: パッケージ マネージャー コンソール が W2K3/XP で行き詰まって停止してしまいます (PowerShell 2 がインストールされていない場合)