トレーニング
モジュール
新しい .NET プロジェクトを作成し、パッケージの依存関係を処理する - Training
.NET プロジェクトを作成し、パッケージを追加して、プロジェクト内のパッケージ依存関係を管理する方法を学習します。 .NET Core CLI と NuGet レジストリを使用して、Visual Studio Code でライブラリとツールを C# アプリケーションに追加します。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
Visual Studio 2017 バージョン 15.7 以降では、packages.config 管理形式から PackageReference 形式へのプロジェクトの移行がサポートされています。
PackageReference
ノードを使用) は、個別の packages.config ファイルを使用するのではなく、プロジェクト ファイル内で直接管理されます。packages
フォルダーではなく "グローバル パッケージ" フォルダー内で管理されます。 その結果、PackageReference のパフォーマンスが向上し、使用するディスク領域も少なくなります。また、PackageReferences の動作を packages.config と比較すると、違いがいくつかあります。たとえば、アップグレード バージョンに関する制約は PackageReference ではサポートされていませんが、PackageReference にはフローティング バージョンのサポートが追加されています。
Migrate packages.config to PackageReference...
オプションを使用できないプロジェクトを最初に開いたとき、NuGet 操作を行うまで NuGet が初期化されていない場合があります。 これにより、packages.config
または References
上の右クリックのコンテキスト メニューで、移行オプションが表示されません。
次の NuGet アクションのいずれかを実行します。
References
を右クリックし、Manage NuGet Packages...
を選択するTools > NuGet Package Manager
から、Package Manager Console
を選択するRestore NuGet Packages
を選択するこれで、移行オプションを表示できるようになりました。 このオプションは ASP.NET と C++ のプロジェクト タイプではサポートされておらず、表示されません。
注意
移行を開始する前に、必要に応じて packages.config にロールバックできるように Visual Studio によってプロジェクトのバックアップが作成されます。
packages.config
を使用してプロジェクトを含むソリューションを開きます。
ソリューション エクスプローラーで、[参照] ノードまたは packages.config
ファイルを右クリックし、[packages.config を PackageReference に移行する...] を選択します。
移行プログラムによってプロジェクトの NuGet パッケージ参照が分析され、最上位の依存関係 (直接インストールした NuGet パッケージ) と推移的依存関係 (最上位のパッケージの依存関係としてインストールされたパッケージ) への分類が試行されます。
注意
PackageReference では推移的なパッケージの復元がサポートされ、依存関係が動的に解決されます。つまり、推移的依存関係を明示的にインストールする必要はありません。
(省略可能) パッケージに対して [最上位] オプションを選択することで、推移的依存関係として分類された NuGet パッケージを最上位の依存関係として扱うことを選択できます。 このオプションは、推移的にフローしないアセットを含む (build
、buildCrossTargeting
、contentFiles
、または analyzers
フォルダー内にある) パッケージと、開発の依存関係 (developmentDependency = "true"
) としてマークされているパッケージに対して自動的に設定されます。
「パッケージの互換性の問題」をご確認ください。
[OK] を選択して移行を開始します。
移行の最後に、Visual Studio によって、バックアップのパス、インストールされているパッケージの一覧 (最上位の依存関係)、推移的依存関係として参照されるパッケージの一覧、移行の開始時に識別される互換性の問題の一覧に関するレポートが提供されます。 レポートがバックアップ フォルダーに保存されます。
ソリューションがビルドされ、実行されることを確認します。 問題が発生した場合は、問題を GitHub に報告します。
移行されたプロジェクトを閉じます。
プロジェクト ファイルと packages.config
をバックアップ (通常は <solution_root>\MigrationBackup\<unique_guid>\<project_name>\
) からプロジェクト フォルダーにコピーします。 obj フォルダーがプロジェクトのルート ディレクトリに存在する場合は、これを削除します。
プロジェクトを開きます。
[ツール] > [NuGet パッケージ マネージャー] > [パッケージ マネージャー コンソール] メニュー コマンドを使用して [パッケージ マネージャー コンソール] を開きます。
コンソール内で、次のコマンドを実行します。
update-package -reinstall
移行が完了したら nuget.build.tasks.pack nuget パッケージへの参照を追加し、msbuild -t:pack を使用してパッケージを作成することをお勧めします。 msbuild -t:pack
の代わりに dotnet.exe pack
を使用できるシナリオもありますが、推奨されません。
packages.config でサポートされていたいくつかの機能は、PackageReference ではサポートされていません。 移行プログラムでは、このような問題が分析および検出されます。 以下の問題が 1 つ以上あるパッケージは、移行後に期待どおりに動作しない可能性があります。
説明: PackageReference を使用すると、パッケージをインストールまたはアンインストールするときに、install.ps1 および uninstall.ps1 の PowerShell スクリプトは実行されません。
潜在的な影響: これらのスクリプトに依存して移行先プロジェクト内の一部の動作を構成するパッケージは、正しく動作しないことがあります。
説明: パッケージの content
フォルダー内のアセットは、PackageReference ではサポートされず、無視されます。 PackageReference では、推移的なサポートと共有コンテンツを向上させるために contentFiles
のサポートが追加されています。
潜在的な影響: content
内のアセットはプロジェクトにコピーされず、これらのアセットの存在に依存するプロジェクト コードにはリファクタリングが必要です。
説明: XDT 変換は PackageReference ではサポートされず、パッケージをインストールまたはアンインストールするときに .xdt
ファイルは無視されます。
潜在的な影響: XDT 変換は、プロジェクトの XML ファイル (通常は web.config.install.xdt
と web.config.uninstall.xdt
) には適用されません。つまり、パッケージをインストールまたはアンインストールしても、プロジェクトの web.config
ファイルは更新されないということです。
説明: PackageReference を使用すると、ターゲット フレームワーク固有のサブフォルダーがない lib
フォルダーのルートにあるアセンブリは無視されます。 NuGet では、プロジェクトのターゲット フレームワークに対応するターゲット フレームワーク モニカー (TFM) に一致するサブフォルダーが検索され、一致するアセンブリがプロジェクトにインストールされます。
潜在的な影響: プロジェクトのターゲット フレームワークに対応するターゲット フレームワーク モニカー (TFM) と一致するサブフォルダーがないパッケージは、切り替え後に正しく動作しない場合や、移行中にインストールが失敗する場合があります。
移行のエクスペリエンスに問題が発生した場合は、NuGet GitHub リポジトリに問題を報告してください。
トレーニング
モジュール
新しい .NET プロジェクトを作成し、パッケージの依存関係を処理する - Training
.NET プロジェクトを作成し、パッケージを追加して、プロジェクト内のパッケージ依存関係を管理する方法を学習します。 .NET Core CLI と NuGet レジストリを使用して、Visual Studio Code でライブラリとツールを C# アプリケーションに追加します。