トレーニング
モジュール
新しい .NET プロジェクトを作成し、パッケージの依存関係を処理する - Training
.NET プロジェクトを作成し、パッケージを追加して、プロジェクト内のパッケージ依存関係を管理する方法を学習します。 .NET Core CLI と NuGet レジストリを使用して、Visual Studio Code でライブラリとツールを C# アプリケーションに追加します。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
NuGet 2.6.1 for WebMatrix リリース ノート | NuGet 2.7.1 リリース ノート
NuGet 2.7 は、2013 年 8 月 22 日にリリースされました。
NuGet 2.7 に多大な貢献をしていただいた次の外部共同作成者に深く感謝をいたします。
[Mike Roth](http://www.codeplex.com/site/users/view/mxrss)
(@mxrss) [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph)
(@adamralph) [#1956](http://nuget.codeplex.com/workitem/1956)
- developmentDependency 属性を pack コマンドに追加packages.config
して使用し、ランタイム パッケージのみを含めます[Rafael Nicoletti](http://www.codeplex.com/site/users/view/tkrafael)
(@tkrafael) [Ben Phegan](http://www.codeplex.com/site/users/view/benphegan)
(@BenPhegan) [#2610](http://nuget.codeplex.com/workitem/2610)
- マシンのキャッシュ サイズを 200 に増やします。[Slava Trenogin](http://www.codeplex.com/site/users/view/derigel)
(@derigel) [#3217](http://nuget.codeplex.com/workitem/3217)
- NuGet ダイアログで間違ったタブに更新が表示される問題を修正する[#3248](http://nuget.codeplex.com/workitem/3248)
- 存在しない packageId で SharedPackageRepository FindPackage/FindPackagesById が失敗する問題の修正[Kevin Boyle](http://www.codeplex.com/site/users/view/KevinBoyleRG)
(@kevfromireland) [#3234](http://nuget.codeplex.com/workitem/3234)
- Nomad プロジェクトのサポートを有効にします[Corin Blaikie](http://www.codeplex.com/site/users/view/corinblaikie)
(@corinblaikie) [#3252](http://nuget.codeplex.com/workitem/3252)
- ファイルが存在しない場合に終了コード 0 でのプッシュ コマンドが失敗する問題の修正[Martin Veselý](http://www.codeplex.com/site/users/view/veselkamartin)
[#3226](http://nuget.codeplex.com/workitem/3226)
- プロジェクトがデータベース プロジェクトを参照するときの Add-BindingRedirect コマンドのバグの修正[Miroslav Bajtos](http://www.codeplex.com/site/users/view/miroslavbajtos)
(@bajtos) [#2891](http://nuget.codeplex.com/workitem/2891)
- nuget.pack が 'exclude' 属性のワイルドカードを誤って解析するバグの修正[Justin Dearing](http://www.codeplex.com/site/users/view/zippy1981)
(@zippy1981) [#3307](http://nuget.codeplex.com/workitem/3307)
バグの修正NuGet.targets
[Brian Federici](http://www.codeplex.com/site/users/view/benerdin)
[#3294](http://nuget.codeplex.com/workitem/3294)
- nuget.exe パッケージ コマンドで同じ名前で大文字と小文字が異なるファイルを追加できて、最終的に "品目はすでに存在しています" という例外を引き起こすバグの修正[Daniel Cazzulino](http://www.codeplex.com/site/users/view/dcazzulino)
(@kzu) [#2990](http://nuget.codeplex.com/workitem/2990)
- Version プロパティを NetPortableProfile クラスに追加します。[David Simner](https://www.codeplex.com/site/users/view/DavidSimner)
[#3460](https://nuget.codeplex.com/workitem/3460)
- requireApiKey = true であるが、ヘッダー X-NUGET-APIKEY が存在しない場合のバグ NullReferenceException の修正[Michael Friis](https://www.codeplex.com/site/users/view/friism)
(@friism) [#3278](https://nuget.codeplex.com/workitem/3278)
- MonoDevelop 内で正しく動作するように、NuGet.Build ターゲット ファイルを修正する[Pranav Krishnamoorthy](https://www.codeplex.com/site/users/view/pranavkm)
(@pranav_km) NuGet 2.7 では、パッケージの復元に新しいアプローチが導入され、パッケージ復元の同意が既定で有効になるという、大きなハードルの克服もありました。 新しいアプローチと暗黙の同意の組み合わせにより、パッケージの復元シナリオが大幅に簡略化されます。
NuGet バージョン 2.0、2.1、2.2、2.5、2.6 では、ユーザーはビルド中に NuGet に不足しているパッケージのダウンロードを NuGet に明示的に許可する必要がありました。 この同意が明示的に与えられていない場合は、パッケージの復元を有効にしたソリューションは、ユーザーが許可を与えるまで、ビルドに失敗します。
NuGet 2.7 以降では、パッケージの復元の同意は既定でオンになっていますが、ユーザーは、必要に応じて、Visual Studio の NuGet の設定のチェックボックスを使用して、パッケージの復元を明示的にオプトアウトできます。 暗黙の同意に対するこの変更は次の環境の NuGet に影響を与えます。
NuGet 2.7 以降では、パッケージの復元がソリューションに対して明示的に有効になっていない場合でも、NuGet は Visual Studio でのビルド中に不足しているパッケージを自動的にダウンロードします。 このパッケージの自動復元は、プロジェクトまたはソリューションをビルドするとき、MSBuild が呼び出される前に、Visual Studio 内で実行されます。 これには、複数の大きなメリットがあります。
Visual Studio でパッケージの自動復元を使用するには、次の 1 つのアクションを実行するだけで済みます。
packages
フォルダーをチェックインしないソース管理からpackages
フォルダーを省略するための方法が複数あります。 詳細については、「パッケージとソース管理」というトピックを参照してください。
すべてのユーザーはパッケージの自動復元の同意を暗黙的にオプトインして、Visual Studio のパッケージ マネージャーの設定から簡単にオプトアウトできます。
NuGet 2.7 では、nuget.exe の新機能が導入されました。nuget.exe restore
この新しい [復元] コマンドを使用すると、ソリューション ファイルまたはフォルダーを引数として受け入れることで、ソリューションのすべてのパッケージを 1 つのコマンドで簡単に復元できます。 さらに、この引数は、現在のフォルダーにソリューションが 1 つしかない場合に暗黙的に示されます。 つまり、次のすべての作業は、1 つのソリューション ファイル (MySolution.sln) を含むフォルダーから行われます。
[復元] コマンドを実行すると、ソリューション ファイルが開いて、ソリューション内のすべてのプロジェクトが検索されます。 そこから、各プロジェクトのpackages.config
ファイルが検索され、見つかったすべてのパッケージが復元されます。 また、.nuget\packages.config
ファイル内にあるソリューション レベルのパッケージも復元されます。 新しい [復元] コマンドの詳細については、「コマンド ライン リファレンス」を参照してください。
パッケージの復元には、新しいワークフローが導入されており、当社として、これらの変更を嬉しく思います。 ソース管理からパッケージを省略する場合は、packages
フォルダーをコミットしないでください。 Visual Studio ユーザーがソリューションを開いてビルドすると、パッケージは自動的に復元されます。 コマンド ライン ビルドの場合は、nuget.exe restore
を呼び出す前にmsbuild
を呼び出すだけです。 ソリューションで "NuGet パッケージの復元を有効にする" ジェスチャを使用することを覚えておく必要はなくなり、ビルドを変更するためにプロジェクトを変更する必要もなくなりました。 また、これにより、MSBuild インポートを含むパッケージ、特に \build フォルダーから props/targets ファイルを自動的にインポートするための NuGet の最近の機能によって追加されたインポートのエクスペリエンスが大幅に向上します。
当社で行ってきた作業に加えて、この新しいアプローチを完成させるために、複数の重要なパートナーとも連携しています。具体的なスケジュールについてはまだ未定ですが、パートナー各社も、当社と同じように、この新しい手法に興奮しています。
nuget.exe restore
呼び出しを既定のビルド シナリオに統合する作業を行っています。nuget.exe restore
を呼び出せるようにすることに取り組んでいます。nuget.exe restore
を呼び出せるようにすることに取り組んでいます。上記の各パートナーでは、nuget.exe の各コピーを使用しており、お客様はソリューションに nuget.exe を含める必要はありません。
最初の 2.7 リリースでは、nuget.exe の復元に関して 2 つの既知の問題がありましたが、これらは、2013 年 9 月 6 日に、NuGet.CommandLine パッケージの更新で修正されました。 この更新プログラムは CodePlex の [NuGet 2.7 download page](https://nuget.codeplex.com/releases/view/107605)
でも提供しています。 nuget.exe update -self
を実行すると、最新リリースに更新されます。
以下の修正が行われました。
[New package restore doesn't work on Mono when using SLN file](https://nuget.codeplex.com/workitem/3596)
[New package restore doesn't work with Wix projects](https://nuget.codeplex.com/workitem/3598)
また、新しいパッケージ復元ワークフローにも[Automatic Package Restore does not work for projects under a solution folder](https://nuget.codeplex.com/workitem/3625)
という既知の問題があります。 この問題は NuGet 2.7.1 において修正されました。
プロジェクトの再ターゲティングまたはアップグレード後に、複数の NuGet パッケージが正常に機能していないことが多数確認されています。 残念ながら、これに関して兆候はないため、対処する方法に関するガイダンスはありません。 NuGet 2.7 に関して、当社ではいくつかの Visual Studio イベントを使用して、プロジェクトを再ターゲティングまたはアップグレードしたタイミングを認識するようになりました。その際、インストールされている NuGet パッケージに影響を与える方法でこれを行います。
いずれかのパッケージが再ターゲティングまたはアップグレードの影響を受けていることが検出された場合は、当社にて、直ちにビルド エラーを生成して、お客様にお知らせいたします。 即時のビルド エラーに加えて、当社が再ターゲティングの影響を受けたすべてのパッケージのrequireReinstallation="true"
フラグもお客様のpackages.config
ファイルに保持します。さらに、Visual Studio の後続のビルドごとに、これらのパッケージのビルド警告が発生します。
影響を受けるパッケージを再インストールするための自動アクションをNuGet が実行することはできませんが、この表示と警告が、パッケージを再インストールする必要がある場合の検出に役立つことを願っています。 また、当社は、これらのエラー メッセージから直接お客様に送信されるパッケージの再インストール ガイダンス ドキュメント についても取り組んでいます。
多くの企業内部で NuGet が使用されていますが、nuget.org の代わりに内部パッケージ ソースを開発者に使用するようガイドすることが難しかったため、NuGet 2.7 ではマシン全体の既定値を指定できる「構成の既定値」機能が導入されました。
これらの各ファイルは、%ProgramData%\NuGet\NuGetDefaults.Config
にあるファイル内で構成できるようになりました。 この構成ファイルがパッケージ ソースを指定している場合、既定の nuget.org パッケージ ソースは自動的に登録されず、NuGetDefaults.Config
のものが代わりに登録されます。
この機能を使用する必要はありませんが、各企業でグループ ポリシーを使用して、NuGetDefaults.Config
ファイルを展開することをおすすめします。
この機能ではパッケージ ソースが開発者の NuGet 設定から削除されることはないことに注意してください。 つまり、開発者が既に NuGet を使っていて、したがって nuget.org パッケージ ソースが登録されている場合、NuGetDefaults.Config
ファイルの作成後に nuget.org は削除されません。
この機能の詳細については、「NuGet フィード構成のデフォルト」を参照してください。
NuGet は常に、nuget.org を指す "NuGet 公式パッケージ ソース" という既定のパッケージ ソースを登録します。その名前が詳細であったため、実際に指している場所も指定していませんでした。 これら 2 つの問題に対処するために、このパッケージ ソース名を UI 内で簡単に "nuget.org" に変更しました。 パッケージ ソースの URL も、"www." プレフィックスを含むように変更されました。 NuGet 2.7 を使用すると、お客様の既存の「NuGet 公式パッケージ ソース」の、その名前が "nuget.org" に、URL は「https://www.nuget.org/api/v2/」に自動的に更新されます。
2.7 内でパフォーマンスが向上し、メモリ占有領域が小さくなり、ディスク使用量が縮小し、パッケージのインストールが高速化されました。 また、OData ベースのフィードのクエリを、よりスマートなものにして、全体的なペイロードを削減しました。
以前のリリースでの機能不足のギャップを埋めるために、機能拡張サービスでは、いくつかの新しい API を追加しました。
// Checks if a NuGet package with the specified Id and version is installed in the specified project.
bool IsPackageInstalledEx(Project project, string id, string versionString);
// Get the list of NuGet packages installed in the specified project.
IEnumerable<IVsPackageMetadata> GetInstalledPackages(Project project);
// Installs one or more packages that exist on disk in a folder defined in the registry.
void InstallPackagesFromRegistryRepository(string keyName, bool isPreUnzipped, bool skipAssemblyReferences, Project project, IDictionary<string, string> packageVersions);
// Installs one or more packages that are embedded in a Visual Studio Extension Package.
void InstallPackagesFromVSExtensionRepository(string extensionId, bool isPreUnzipped, bool skipAssemblyReferences, Project project, IDictionary<string, string> packageVersions);
この機能は Adam Ralph によって提供されており、パッケージ作成者が開発時にのみ使用されるようにしてパッケージの依存関係を必要としない依存関係を宣言できます。 developmentDependency="true"
のパッケージにpackages.config
属性を追加すると、nuget.exe pack
はそのパッケージを依存関係として含めなくなります。
2.7 内のこの新しいパッケージ復元モデルは、メイン NuGet VSPackage とは異なる、新しい VSPackage によって実装されています。 技術的な問題により、この新しい VSPackage は Visual Studio 2010 Express for Windows Phone SKU では正しく機能しません。これは、サポートされている他の Visual Studio SKU と同じコード ベースを共有するためです。 したがって、NuGet 2.7 以降では、発行済みの拡張情報から、Visual Studio 2010 Express for Windows Phoneのサポートを削除する予定です。 しかしながら、Visual Studio 2010 Express for Web のサポートは、引き続き Visual Studio 拡張情報ギャラリーの発行済みプライマリの拡張情報にあります。
Visual Studio のバージョン/エディションで NuGet を使用している開発者の数が当社がまだわからないため、これらのユーザー専用の別の Visual Studio 拡張情報を発行し、(Visual Studio 拡張情報ギャラリーではなく) CodePlex に発行します。 当社がその拡張情報を維持し続ける予定はありませんが、これにより影響がある場合は、CodePlex に問題を提出して当社にお知らせください。
NuGet Package Manager (Visual Studio 2010 Express for Windows Phone 用) をダウンロードするには、[NuGet 2.7 Downloads](https://nuget.codeplex.com/releases/view/107605)
ページにアクセスしてください。
これらの機能に加えて、この NuGet のリリースには、他の多くのバグ修正も含まれています。 このリリースでは、合計 97 件の問題が解決されました。 NuGet 2.7 で修正された作業項目の全リストについては、[NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.7&status=all)
を参照してください。
トレーニング
モジュール
新しい .NET プロジェクトを作成し、パッケージの依存関係を処理する - Training
.NET プロジェクトを作成し、パッケージを追加して、プロジェクト内のパッケージ依存関係を管理する方法を学習します。 .NET Core CLI と NuGet レジストリを使用して、Visual Studio Code でライブラリとツールを C# アプリケーションに追加します。