次の方法で共有


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 N/A
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 N/A 6.0.1181
6.0.6 N/A 6.0.1271

1 Visual Studio 2022 with.NET Core ワークロードでインストール済み

概要: 6.0.6 の新機能

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

概要: 6.0.5 の新機能

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

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

概要: 6.0.3 の新機能

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

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 パッケージの脆弱性

再試行とバックオフの動作

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

既定のファイル拡張子を除外する

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

Visual Studio の非推奨情報の改善

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

Visual Studio パッケージの非推奨

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 - #10737 の packages.config 復元で名前空間フィルター処理のサポートを追加する

  • 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

  • Project.nuget.g.targets は MSBuild 16 以降の 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

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

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

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

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

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

  • 999,500 <= count <=999,999 - #8800 の場合、PM UI はダウンロード数を人間化しません

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

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

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

  • Rfc3161TimestampTokenInfo.GetNonce は例外をスローすることがあります - #10484

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

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

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

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

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

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

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

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

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

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

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

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

  • IVsProjectRestoreInfoSource の機能強化 - #10898

  • net5.0-windows をターゲットとする Sdk-Style 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

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

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

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

  • 古い未使用の型: ライブラリ依存タイプと関連 - #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

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

  • プロジェクトに保留中の指名が発生した場合、待機する - #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 サービスを取得するすべての ServiceLocator 呼び出しでは、UI スレッドを回避する必要があります。 - #11201

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

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

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

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

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

  • ** dotnet list package --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
不眠症 47 4190 fix(docs): 投稿ガイドラインのクローズド/デッドエンド リンクへのリンクを削除する - #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

フィードバックへようこそ

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