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.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 パッケージ マネージャーを使用すると、脆弱性の数や重大度などの詳細や、アドバイザリの詳細を確認するための直接リンクなど、パッケージのパッケージ脆弱性が表示されます。
再試行およびバックオフ動作
NuGet クライアントの再試行およびバックオフ動作を改善するための NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY
フラグが追加されました。たとえば、再試行の最大量を増やし、インターネット接続が弱い場合の回復性の高いエクスペリエンスの遅延を増やします。
デフォルトのファイル拡張子を除外する
MSBuild フラグ <AllowedOutputExtensionsInPackageBuildOutputFolder>
を使用して、パッケージのビルド出力に含まれるファイル拡張子を編集できるようになりました。 これにより、ビルド出力フォルダーに含まれる拡張機能をより詳細に制御できます。
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 の 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)
は引用符で囲まれていません - #11025PMUI パッケージ名前空間フィルタリング用のマルチソース リポジトリを使用して 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.1 の新機能
このバージョンの NuGet では、Visual Studio のみが更新されました。
このリリースで修正された問題
- [バグ]: Visual Studio 17 のサービス ブローカーから INuGetProjectService を取得できません - #11367
- [バグ]: パッケージ マネージャーコンソールの初期化によってデッドロックが発生する可能性がある - #11320
コミュニティからの投稿
この 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 の [> 問題の報告のヘルプ] の下にある [問題の報告] オプションを使用してお知らせください。