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.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 - #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)は引用符で囲まれていません - #11025PMUI パッケージ名前空間フィルタリング用のマルチソース リポジトリを使用して 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.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 |
| 不眠症 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 の [問題の報告] [>の報告] の下にある [問題の報告] オプションからお知らせください。