次の方法で共有


NuGet 6.0 リリース ノート

NuGet 配布の種類:

NuGet のバージョン 利用可能な Visual Studio バージョン 利用可能な .NET SDK
6.0.0 Visual Studio 2022 バージョン 17.0.0 6.0.01
6.0.1 Visual Studio 2022 バージョン 17.0.2 該当なし
6.0.2 Visual Studio 2022 バージョン 17.0.11 6.0.3011
6.0.3 Visual Studio 2022 バージョン 17.0 6.0.1101
6.0.5 該当なし 6.0.1181
6.0.6 該当なし 6.0.1271

1 Visual Studio 2022 に .NET Core ワークロードをインストール

概要: 6.0.6 の新機能

  • [セキュリティ]: Microsoft セキュリティ アドバイザリ CVE-2024-0057 | NuGet クライアント セキュリティ機能バイパスの脆弱性 - #12653

概要: 6.0.5 の新機能

  • [セキュリティ]: Microsoft セキュリティ アドバイザリ CVE-2023-29337 | NuGet クライアントのリモート コード実行の脆弱性 - #12653

Note

Linux では動作の破壊的変更があります。 NuGet がさまざまな操作中に一時ファイルを格納する一時フォルダーの場所は、/tmp/NuGetScratch から /tmp/NuGetScratch<username> に変更されました。 たとえば、ユーザー User1 の場合、一時フォルダーは /tmp/NuGetScratchUser1 になります。

概要: 6.0.3 の新機能

  • [セキュリティ]: Microsoft セキュリティ アドバイザリ CVE-2022-41032:ASP.NET の特権の昇格脆弱性 - #12149

Note

Visual Studio 17.0、MSBuild 17.0、.NET 6.0 には、NuGet.exe 6.0 以降が必要です。

概要: 6.0.2 の新機能

  • [セキュリティ]: Microsoft セキュリティ アドバイザリ CVE 2022-30184 | .NET 情報漏えいの脆弱性 - #11883

概要: 6.0.0 の新機能

🎉 これは、.NET 6.0 を対象とする NuGet パッケージの完全な作成と復元のサポートを提供する最初のリリースです 🎉

.NET 6 のサポート

NuGet 6.0 は、.NET 6.0 をターゲットにする NuGet パッケージの完全な作成と復元のサポートを提供する最初のリリースです。 これで、次のターゲット フレームワークをターゲットにすることができます。

  • net6.0
  • net6.0-windows
  • net6.0-android
  • net6.0-ios
  • net6.0-macos
  • net6.0-maccatalyst
  • net6.0-tvos
  • net6.0-tizen

.NET 6

現在の .NET 6.0 ターゲットや将来のターゲットに慣れていない場合は、.NET 6.0 TFM 仕様をチェックすることを忘れないでください。

ソース マッピング

今年の初めに、多くのパッケージ マネージャーは、ユーザーが意図した依存関係ではなく、悪意のある依存関係をインストールするように誘導される依存関係の混乱攻撃を認識しました。 これらの攻撃に対するソフトウェア サプライ チェーンを強化するために、NuGet チームは、依存関係を特定のソースにマップできる新機能を開発しました。 ソース マッピングを使用してプロジェクトを保護する方法の例を次に示します。

<!-- Define a global packages folder for your repository. -->
<!-- This is where installed packages will be stored locally. -->
<config>
  <add key="globalPackagesFolder" value="globalPackagesFolder" />
</config>

<!-- Define my package sources, nuget.org and contoso.com. -->
<!-- `clear` ensures no additional sources are inherited from another config file. -->
<packageSources>
  <clear />
  <!-- `key` can be any identifier for your source. -->
  <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
  <add key="contoso.com" value="https://contoso.com/packages/" />
</packageSources>

<!-- Define mappings by adding package ID patterns beneath the target source. -->
<!-- Contoso.* packages will be restored from contoso.com, everything else from nuget.org. -->
<packageSourceMapping>
  <!-- key value for <packageSource> should match key values from <packageSources> element -->
  <packageSource key="nuget.org">
    <package pattern="*" />
  </packageSource>
  <packageSource key="contoso.com">
    <package pattern="Contoso.*" />
  </packageSource>
</packageSourceMapping>

ソース マッピングの詳細については、今年初めにリリースされたブログを参照してください。

Visual Studio のパッケージ脆弱性

Visual Studio 内で NuGet パッケージ マネージャーを使用すると、脆弱性の数や重大度などの詳細や、アドバイザリの詳細を確認するための直接リンクなど、パッケージのパッケージ脆弱性が表示されます。

Visual Studio Package Vulnerabilities

再試行およびバックオフ動作

NuGet クライアントの再試行およびバックオフ動作を改善するための NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY フラグが追加されました。たとえば、再試行の最大量を増やし、インターネット接続が弱い場合の回復性の高いエクスペリエンスの遅延を増やします。

デフォルトのファイル拡張子を除外する

MSBuild フラグ <AllowedOutputExtensionsInPackageBuildOutputFolder> を使用して、パッケージのビルド出力に含まれるファイル拡張子を編集できるようになりました。 これにより、ビルド出力フォルダーに含まれる拡張機能をより詳細に制御できます。

Visual Studio の非推奨情報の改善

Visual Studio で非推奨のパッケージに、使用する推奨代替パッケージへのリンクが含まれるようになりました。 この機能を使用すると、アクティブにメインされているパッケージをすばやく参照してインストールできます。

Visual Studio Package Deprecations

Visual Studio でパッケージ README を追加する

Visual Studio 内でパッケージ README.md ファイルを直接追加できるようになりました。 README は、パッケージに関する重要な情報を伝えるのに役立ちます。 多くの場合、NuGet.org でパッケージにアクセスするときに訪問者に表示される最初の項目です。README ファイルには、通常、次に関する情報が含まれます。

  • パッケージの動作
  • このパッケージが有益な理由
  • このパッケージの使い始め方
  • ユーザーがヘルプを取得したり、パッケージに投稿したりできる場所

NuGet パッケージへの README の追加の詳細については、ブログを参照してください

Visual Studio でのソリューション読み込みおよびブランチの切り替えの高速化

Visual Studio 2022 では、NuGet パッケージの復元と一般的な Visual Studio コンポーネントの間のコントラクトを再定義し、複数回ではなく 1 回だけ復元を呼び出すことで大規模なソリューションのパフォーマンスを向上しました。 これにより、バックグラウンド プロセスが完了するまでの時間が大幅に短縮されます。

Visual Studio 2022 プレビューをインストールし、大規模なソリューションを読み込んだり、ブランチを切り替えたりするときに、エクスペリエンスが速くなる場合はお知らせください。

NuGet の SolutionRestoreManager Visual Studio API が NuGet.VisualStudio パッケージに移動されました

NuGet.SolutionRestoreManager.Interop は更新されなくなり、その API は NuGet.VisualStudio パッケージにマージされました。 Visual Studio 2022 (17.0) で動作するように既存の Visual Studio 拡張機能を更新していて、以前に NuGet.SolutionRestoreManager.Interop を使用していた場合は、そのパッケージをアンインストールし、NuGet.VisualStudio をバージョン 6.0.0 にアップグレード/インストールする必要があります。 名前空間とクラスが同じままであるため、API の観点から互換性があります。

さらに、ポリシーの Visual Studio の変更に伴い、NuGet.VisualStudio は EmbedInteropTypes を使用しなくなりました。 そのため、拡張機能には NuGet.VisualStudio.dll へのコンパイル時参照があります。 Nuget はバインド リダイレクトを使用するように Visual Studio に指示するため、NuGet が新しいバージョンに更新され、拡張機能が古いバージョンのアセンブリに対してコンパイルされた場合、拡張機能は影響を受けなくなります。 このため、vsix から NuGet のアセンブリを非表示にして、ダウンロード サイズを小さくすることができます。 NuGet 6.2 (Visual Studio 17.2 の場合) でこれを自動的に行うために、NuGet のパッケージが更新されます。

vsix から NuGet のアセンブリを非表示にするには、プロジェクト ファイルに次のコードを追加します。

<ItemGroup>
  <SuppressFromVsix Include="NuGet.VisualStudio.dll" Visible="false" />
  <SuppressFromVsix Include="NuGet.VisualStudio.Contracts.dll" Visible="false" />
</ItemGroup>

機能

  • nuget パッケージから特定のビルド出力拡張機能を除外するためのフックを追加する - #10690

  • net6.0 以降の使用時に xamarin TFM の新しい優先順位を実装する - #10717

  • net6.0 以降のプロジェクトで xamarin.ios に "フォールバック" するときに maccatalyst 警告を実装する - #10718

  • 構成の一部としてパッケージ名前空間のサポートを追加する - 読み取り機能のみを追加する - #10725

  • パッケージ名前空間: PackageReference 復元におけるパッケージのダウンロードでのパッケージ名前空間のフィルター処理のアカウント - #10732

  • nuget.exe と msbuild /t:restore の packages.config 復元で名前空間フィルター処理のサポートを追加する - #10737

  • nuget によるバッチ復元/ブランチ スイッチの向上に役立つ、復元ソースを識別するためのコントラクトを追加します。 - #10807

  • net6.0-tizen と net6.0-android のサポートを追加する - #10819

  • Visual Studio での packages.config 復元の名前空間フィルター処理のサポートを追加する - #10823

  • TfmSpecificDebugSymbolsFile のサポートを追加して、内部ビルドでシンボルを提供する - #10913

  • 脆弱なパッケージがインストールされている場合、[インストール済み] タブに警告アイコンを表示する - #10982

  • 脆弱性が存在する場合、パッケージの一覧にパッケージ別に警告アイコンを表示する - #10983

  • PMUI の [パッケージの詳細] ウィンドウにパッケージの脆弱性の詳細を表示する - #10985

  • PM UI の [詳細] ページでの非推奨リンクの追加 - #10996

  • [機能]: Nuget クライアントの再試行回数とバックオフ動作を構成可能にする - #11027

  • [機能]: PackageReference シナリオと PackageDownload シナリオで動作するパッケージ名前空間のすべてのパッケージ インストール規則に対処します。 - #11035

  • [機能]: パッケージ構成スタイル プロジェクトで動作するパッケージ名前空間のすべてのパッケージ インストール規則に対処する - #11036

このリリースで修正された問題

DCR:

  • 他のパッケージ マネージャーに互換性があると表示される機能拡張を削除することを検討してください - #6623

  • NuGet の VS 拡張パッケージ/アセンブリの EmbedInteropTypes の使用を停止する - #10892

  • MSBuild 16 以降では、Project.nuget.g.targets を MSBuildAllProjects の前に追加すべきではありません - #10895

  • 古いコア API を削除する - #10940

  • NuGet.SolutionRestoreManager.Interop を NuGet.VisualStudio にマージする - #10957

  • RuntimeEnvironmentHelper.IsDev14 を削除する - #11000

  • Newtonsoft.Json を 13.0.1 に更新する - #11095

  • [DCR]: packageNamespaces 機能の名前を packageSourceMapping に変更する - #11205

バグ:

  • パッケージ保存モード "nuspec" を使用したインストールは常に再インストールされます - #2402

  • Update-Package -reinstall -ProjectName <project> が PR で機能しない - #6088

  • "同じキーを持つ項目が既に追加されています" - プロジェクト グラフに projectName == packageRef name (同じバージョンの) がある場合 - #6795

  • [テスト エラー][ライセンスの同意] ダイアログで 2 番目に重複する文字列 "License Acceptance" を削除することを提案する - #8162

  • nuget.exe を使用して構成キーを削除できない - #8223

  • アセンブリ名 != プロジェクト名である場合、msbuild /t:Restore と Visual Studio は、異なったアセット ファイルを生成する - #8272

  • 999,500 <= count <=999,999 の場合、PM UI はダウンロード数を人間らしい形式で表現ししない - #8800

  • Roslyn Analyzer の "パッケージ マネージャーを使用したインストール" の提案で NuGet が間違ったタブに開く - #10124

  • ソリューション ファイルを使用して呼び出された場合は、プロジェクトが KnownToBeMSBuildFormat でないときに、StaticGraph Restore が、明確に呼び出される必要があります - #10363

  • "nuget spec" コマンドは、iconUrlを含む .nuspec ファイルを生成します - #10400

  • Rfc3161TimestampTokenInfo.GetNonce がスローできる - #10484

  • Mono でコマンドが無効ではないことを確認する - #10585

  • CreateLockFileTargetLibrary メソッドを使用すると、復元操作が遅くなります - #10614

  • PackageArchieveReader が CopyNupkgAsync をオーバーライドしないため、パッケージの抽出が失敗する - #10708

  • パッケージ名前空間情報を restore コマンドに伝達する - #10736

  • PMUI のpackages.config パッケージのインストール/更新で名前空間のフィルター処理が尊重されていることを確認する - #10738

  • NuGet.Packaging.Extraction: リソースからの例外が見つかりません - #10776

  • シンボルに snupkg を使用する場合、埋め込み PackageReadmeFile を使用できません - #10791

  • NuGet プロジェクトの初期化で冗長 UI 遅延スイッチを削除する - #10824

  • 復元コードパスで不要な ToList 列挙を削除する - #10835

  • IVsPackageInstallerServices を非推奨としてマークする - #10836

  • 10 億回を超えてダウンロードされた NuGet パッケージに間違ったユニットが表示される - #10864

  • ダーク テーマの [更新] タブと [統合] タブの右側にある数字の背景色が見えにくい - #10896

  • IVsProjectRestoreInfoSource の機能強化 - #10898

  • net5.0-windows をターゲットとする Sdk スタイルの C# プロジェクトで packages.lock.json が壊れた - #10901

  • IVsSolutionRestoreService4 のデフォルトの実装を追加する - #10908

  • [応答性]不要な GetServiceAsync 拡張機能を使用してバックグラウンド スレッドから暗黙的な RPC を削除する - #10916

  • ブール値のボックス化は、ハッシュコードが過剰な割り当てを引き起こしている計算です - #10917

  • ライブラリの依存関係を反復処理すると、列挙子が過剰に割り当てられます - #10918

  • 互換性キャッシュ参照では、各参照に Func が割り当てられます - #10919

  • DependencyWalker.CreateGraphNode での WhereListIterator の割り当て超過 - #10920

  • 復元中の例外: "メタデータの復元が必要なターゲット フレームワークの一覧を誤っています" - #10924

  • マネージド コード規則間でフレームワーク レジューサーを共有する - #10925

  • 不適切なバインド リダイレクトで NuGet VSIX が生成される - #10946

  • init スクリプトを実行するときの NuGet パッケージ マネージャー UI の遅延 - #10947

  • nuget restore/install および dotnet restore パッケージまたはその他の同等のコマンドで渡される sourceUri のサポート - #10948

  • nuget.exe インストール コマンドの名前空間フィルター処理のサポート - #10961

  • すべてのセグメントの未加工プロパティの生成を停止する - #10969

  • 選択されなかった推移参照からの予期しない NU1605 (排除されたサブグラフ) - #10972

  • NuGet.Localization にパッケージ アイコンがありません - #10975

  • プロジェクトクロージャの計算中に辞書のサイズを不必要に変更しないようにする - #10976

  • ISettings.AddOrUpdate に関するドキュメントの矛盾。 - #10980

  • ファイルのコピーと署名の検証時にプールされたバイト配列を使用する - #10988

  • 依存関係ウォーカーでの Task.WhenAny の割り当てを回避する - #10989

  • packages.config パッケージのインストール/更新 PMC で名前空間のフィルター処理が尊重されていることを確認する - #11001

  • packages.config パッケージのインストール/更新 IV インストーラー API で名前空間のフィルター処理が尊重されていることを確認する - #11002

  • [バグ]: 選択したパッケージが既にインストールされている場合、PM UI に 0 個のダウンロード数が表示される - #11012

  • VersionFormatter での割り当てを減らす - #11014

  • 古い未使用の型: LibraryDependencyType とその関連 - #11015

  • [バグ]: nuget.exe install packages.config-PackageSaveMode nuspec - を考慮しない#11018

  • [バグ]: $(IsPackable) は引用符で囲まれていません - #11025

  • PMUI パッケージ名前空間フィルタリング用のマルチソース リポジトリを使用して Apex テストを作成する - #11026

  • [バグ]: [アクセシビリティ] ライトまたはダーク テーマを使用した PM UI 検索結果のリンクが読み取りにくい - #11055

  • IVsSolutionRestoreService4 で IVsSolutionRestoreService3 を拡張する必要がある - #11098

  • [バグ]: アドバイザリ リンクは PMUI の詳細ウィンドウに配置する必要がある - #11101

  • インストールされている脆弱/非推奨パッケージバージョンの警告アイコンのヒントが明確ではない - #11103

  • [応答性]RestoreOperationLogger+StatusBarProgress.Dispose が UI スレッドを待機しているスレッド プール スレッドをブロックする - #11115

  • 前回の復元メトリックからの時間の追加 - #11124

  • [バグ]: 5.9.1 から 5.10.0 までの再帰的 <files> エントリの処理における nuget.exe 回帰 - #11125

  • プロジェクトに保留中の申請があるときは、Await WhenNominated - #11132

  • dotnet add パッケージで渡される sourceUri オプションのサポート - #11140

  • [バグ]: VS PM UI にパッケージの JPEG アイコンが表示されない - #11144

  • UIDelay: nuget.packagemanagement.visualstudio.dll!NuGet.PackageManagement.VisualStudio.VsCoreProjectSystemReferenceReader+<GetProjectReferencesAsync>d__ - CPS プロジェクト - #11162

  • [バグ]: dotnet list package --outdated --interactive では、リストされているすべてのパッケージの資格情報プロバイダーのキャッシュが無効になります - #11169

  • [バグ]: packages.config シナリオのパッケージ名前空間は、パッケージに一致する名前空間が見つからない場合にフォールバック オプションとしてすべてのソースを使用しています - #11170

  • NuGet プロジェクトの初期化中に UI スレッドで MEF 参照を回避する - #11176

  • [バグ]: [インストール済み] タブの警告インジケーター イメージのヒントが機能しなくなりました - #11183

  • MEF サービスを取得するすべての ServiceLocatorCALL 呼び出しでは、UI スレッドを回避する必要があります。 - #11201

  • [バグ]: Visual Studio でテレメトリ イベントが見つからない - #11206

  • EnvDTEProjectUtility.IsSupportedAsync 呼び出しの重複を回避する - #11207

  • IVsSolutionManager.GetSolutionDirectoryAsync を追加する - パフォーマンスを向上させ、非同期コードパスで呼び出し元のスレッドのブロックを停止します。 - #11208

  • パッケージ名前空間機能の新しい名前を反映するように、製品/テスト コードの型/変数の名前を変更する - #11216

  • [バグ]: 関連のない git リポジトリのサブディレクトリにある場合、ArPow ビルドがうまく機能しない - #11227

  • dotnet リスト パッケージ --vulnerable, --deprecated, --outdated は、推移のみのポジティブでは機能しません - #10767

この 6.0 リリースで修正されたすべての問題一覧

このリリースのコミットの一覧 - 6.0.0

概要: 6.0.1 の新機能

このバージョンの NuGet では、Visual Studio のみが更新されました。

このリリースで修正された問題

  • [バグ]: Visual Studio 17 のサービス ブローカーから INuGetProjectService を取得できません - #11367
  • [バグ]: パッケージ マネージャーコンソールの初期化によってデッドロックが発生する可能性がある - #11320

このリリースのコミットの一覧 - 6.0.1

コミュニティからの投稿

この NuGet リリースを素晴らしいものにするのに役立ったすべての共同作成者に感謝します。

担当者 PR 問題
omajid 3866 Rfc3161TimestampTokenInfo で nonce が null であることを処理する - #10484
marcin-krystianc 3934 LockFileTargetLibrary のキャッシュの追加 - #10614
krafs 4151 ISettings.AddOrUpdate に関するドキュメントから戻り値を削除しました - #10980
huangqinjin 4148 PackageSaveMode nuspec が常に再インストールされる問題の修正 - #2402
Insomniak47 4190 修正(ドキュメント): 投稿ガイドラインのクローズド/デッドエンド リンクへのリンクを削除する - #8987
marcin-krystianc 4194 復元操作の失敗に対してパフォーマンス スクリプトを考慮する - #9968
eriawan 4159 一重引用符で囲む ($IsPackable) の修正 - #11025
huangqinjin 4193 PackageSaveMode のインストールには packages.config を考慮する必要がある - #11018
mfkl 4199 テスト: 新しい DependencyGraphSpec を使用する - #11168
omajid 4254 git apply で --work-tree を使用する - #11227

ぜひ、フィードバックをお寄せください。

お客様のフィードバックは Microsoft にとって重要です。 このリリースに問題がある場合は、GitHub の問題Visual Studio Developer Community で既存の問題をチェックしてください。 NuGet 内の新しい問題については、GitHub の問題を報告してください。 一般的な NuGet エクスペリエンスの問題については、お気に入りの IDE の [> 問題の報告のヘルプ] の下にある [問題の報告] オプションを使用してお知らせください。