Заметки о выпуске NuGet 6.0
Средства распространения NuGet:
Версия NuGet | Доступно в версии Visual Studio | Доступно в пакетах SDK для .NET |
---|---|---|
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 with.NET Core
- [Безопасность]: Microsoft Security Advisory CVE-2024-0057 | Уязвимость обхода компонента безопасности клиента NuGet — #12653
- [Безопасность]: Рекомендации по безопасности Майкрософт CVE-2023-29337 | Уязвимость удаленного выполнения кода клиента NuGet — #12653
Примечание
В Linux произошло критическое изменение поведения. Расположение временной папки, в которой NuGet хранит временные файлы во время различных операций, изменилось на /tmp/NuGetScratch
/tmp/NuGetScratch<username>
. Например, для пользователя User1 будет папка temp /tmp/NuGetScratchUser1
.
- [Безопасность]: Microsoft Security Advisory CVE-2022-41032 | Уязвимость .NET для повышения привилегий — #12149
Примечание
Для Visual Studio 17.0, MSBuild 17.0 и .NET 6.0 требуется NuGet.exe 6.0 или более поздней версии.
- [Безопасность]: Microsoft Security Advisory CVE 2022-30184 | Уязвимость раскрытия информации .NET — #11883
🎉 Это первый выпуск для предоставления полной поддержки разработки и восстановления пакетов NuGet, предназначенных для .NET 6.0 🎉.
NuGet 6.0 — это первый выпуск, который предлагает полную поддержку разработки и восстановления пакетов NuGet, предназначенных для .NET 6.0. Теперь вы можете нацелить следующие целевые платформы:
- 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>
Дополнительные сведения о сопоставлении источников см. в блоге , опубликованном в начале этого года.
При использовании диспетчер пакетов NuGet в Visual Studio теперь вы увидите уязвимости пакетов для пакетов, включая такие сведения, как количество и серьезность уязвимостей, а также прямые ссылки, чтобы узнать больше о рекомендациях.
Теперь NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY
существует флаг для улучшения поведения повторных попыток и обратного выхода клиентов NuGet, таких как увеличение максимального количества повторных попыток и увеличение задержки для более устойчивого взаимодействия при обнаружении более слабого подключения к Интернету.
Теперь можно использовать флаг <AllowedOutputExtensionsInPackageBuildOutputFolder>
MSBuild для изменения расширений файлов, включенных в выходные данные сборки пакета. Это дает больше контроля над расширениями, включенными в папку выходных данных сборки.
Устаревшие пакеты в Visual Studio теперь включают ссылку на предлагаемый альтернативный пакет для использования. Эту функцию можно использовать для быстрого просмотра и установки пакетов, которые активно поддерживаются.
Теперь вы можете добавить файл пакета README.md непосредственно в Visual Studio. ReadME помогает обмениваться важными сведениями о пакете. Это часто первый элемент, который посетитель увидит при посещении вашего пакета на NuGet.org. Файлы README обычно включают сведения о:
- Что делает пакет
- Почему пакет полезен
- Как пользователи могут приступить к работе с пакетом
- Где пользователи могут получить помощь или внести свой вклад в пакет
Дополнительные сведения о добавлении README в пакет NuGet см. в нашем блоге.
В Visual Studio 2022 NuGet переопределяет контракт между восстановлением пакетов NuGet и общими компонентами Visual Studio для повышения производительности больших решений, вызывая восстановление только один раз вместо нескольких раз. Это повышает время, необходимое для выполнения фоновых процессов.
Установите предварительную версию Visual Studio 2022 и сообщите нам, что при загрузке крупных решений или переключении между ветвями вы заметите более быстрый интерфейс.
NuGet.SolutionRestoreManager.Interop больше не обновляется, и его API-интерфейсы были объединены в пакет NuGet.VisualStudio. Если вы обновляете существующее расширение Visual Studio для работы с Visual Studio 2022 (17.0), и вы ранее использовали NuGet.SolutionRestoreManager.Interop, необходимо удалить этот пакет и обновить или установить NuGet.VisualStudio до версии 6.0.0. Пространства имен и классы остаются неизменными, поэтому он совместим с точки зрения API.
Кроме того, после изменения политики Visual Studio NuGet.VisualStudio больше не используется EmbedInteropTypes
.
Таким образом, расширение будет иметь ссылку на время компиляции для NuGet.VisualStudio.dll.
Nuget предписывает Visual Studio использовать перенаправления привязок, поэтому расширение не будет затронуты при обновлении NuGet до более новых версий, а расширение компилируется с более старой версией нашей сборки.
По этой причине можно отключить сборки NuGet из vsix, чтобы уменьшить размер загрузки.
Пакеты NuGet будут обновляться автоматически в NuGet 6.2 (для Visual Studio 17.2).
Чтобы отключить сборки NuGet из vsix, добавьте следующее в файл проекта:
<ItemGroup>
<SuppressFromVsix Include="NuGet.VisualStudio.dll" Visible="false" />
<SuppressFromVsix Include="NuGet.VisualStudio.Contracts.dll" Visible="false" />
</ItemGroup>
Возможности:
Добавление перехватчика для исключения определенных расширений выходных данных сборки из пакета nuget — #10690
Реализация нового приоритета для xamarin TFM при использовании net6.0+ - #10717
Реализуйте предупреждение maccatalyst при "возврате" к xamarin.ios для проектов net6.0+ - #10718
Добавление поддержки пространств имен пакета в рамках конфигурации — добавление возможности чтения — #10725
Пространства имен пакета: учетная запись для фильтрации пространств имен пакетов при скачивании пакетов в восстановлении PackageReference — #10732
Добавление поддержки фильтрации пространств имен в файле restore packages.config в nuget.exe и msbuild /t:restore - #10737
Добавьте контракт для идентификации источника восстановления, чтобы помочь nuget улучшить пакетное восстановление или коммутаторы ветви. - #10807
Добавление поддержки net6.0-tizen и net6.0-android — #10819
Добавление поддержки фильтрации пространств имен для восстановления packages.config в Visual Studio — #10823
Добавление поддержки TfmSpecificDebugSymbolsFile для предоставления символов во внутренней сборке - #10913
Значок предупреждения на вкладке "Установленные", если установлены уязвимые пакеты — #10982
Отображение значка предупреждения по пакету в списке пакетов, если уязвимость — #10983
Отображение сведений об уязвимости пакета в области сведений о пакете PMUI — #10985
Добавление ссылок на нерекомендуемые ссылки на странице сведений в пользовательском интерфейсе PM — #10996
[Функция]. Создание счетчика повторных попыток и настройки обратного выхода для клиентов Nuget — #11027
[Функция]. Обратитесь ко всем правилам установки пакета для пространств имен пакетов, работающих в сценариях PackageReference и PackageDownload. - #11035
[Функция]. Адрес всех правил установки пакета для пространств имен пакетов работает в проектах стилей конфигурации пакетов — #11036
КОНТРОЛЛЕРЫ домена:
Рассмотрите возможность удаления расширяемости, которая позволяет другим диспетчерам пакетов отображаться как совместимое — #6623
Остановка использования EmbedInteropTypes для пакетов и сборок расширения VS NuGet — #10892
Объекты Project.nuget.g.targets не должны быть предопределены к MSBuildAllProjects в MSBuild 16 или более поздней версии — #10895
Удаление устаревших основных API - #10940
Слияние NuGet.SolutionRestoreManager.Interop с NuGet.VisualStudio — #10957
Remove RuntimeEnvironmentHelper.IsDev14 — #11000
Обновление Newtonsoft.Json до 13.0.1 — #11095
[DCR]: переименование функции packageNamespaces в packageSourceMapping — #11205
Ошибок:
Установка с помощью режима сохранения пакета nuspec всегда переустановка — #2402
Update-Package -переустановка -ProjectName
<project>
не работает для PR - #6088"Элемент с тем же ключом уже добавлен", когда у графа проекта есть имя projectName == имя packageRef (той же версии) - #6795
[Сбой теста] Рекомендуется удалить вторую повторяемую строку "Принятие лицензии" в диалоговом окне "Принятие лицензии" - #8162
Не удается удалить ключ конфигурации с помощью nuget.exe — #8223
msbuild /t:Restore и Visual Studio создают различные файлы ресурсов при имени сборки != имя проекта — #8272
Пользовательский интерфейс PM не гумализует число скачивания, если 999 500 <= count <=999 99999 - #8800
Предложение Roslyn Analyzer "установить с диспетчером пакетов" открывает NuGet на неправильной вкладке - #10124
Восстановление StaticGraph должно явно вызываться, если проект не
KnownToBeMSBuildFormat
вызывается через файл решения — #10363Команда nuget spec создает nuspec-файл с значкомUrl - #10400
Rfc3161TimestampTokenInfo.GetNonce может бросать - #10484
Проверка того, что команда не отключена в Mono - #10585
Метод CreateLockFileTargetLibrary замедляет операцию восстановления — #10614
PackageArchieveReader не переопределяет CopyNupkgAsync, поэтому извлечение пакетов завершается ошибкой — #10708
Распространение сведений о пространствах имен пакета в команду восстановления — #10736
Убедитесь, что фильтрация пространств имен учитывается в пакетах.config установки и обновлений в PMUI - #10738
NuGet.Packaging.Extraction: исключения из ресурсов не найдены — #10776
Не удается использовать внедренный PackageReadmeFile при использовании snupkg для символов — #10791
Удаление избыточных коммутаторов задержки пользовательского интерфейса в инициализации проекта NuGet — #10824
Удаление ненужных перечислений ToList в пути восстановления кода — #10835
Марк IVsPackageInstallerServices как устаревший — #10836
Пакеты NuGet, скачанные более 1 миллиарда раз, показывают неправильный блок - #10864
Трудно увидеть цвет фона номера справа от вкладок "Обновления" и "Консолидация" в темной теме - #10896
Улучшения IVsProjectRestoreInfoSource — #10898
packages.lock.json сломано с проектом C# в стиле sdk, предназначенным для net5.0-windows — #10901
Добавление реализации по умолчанию для IVsSolutionRestoreService4 — #10908
[Скорость реагирования] Удаление неявного RPC из фонового потока через ненужные расширения GetServiceAsync — #10916
Бокс bool заключается в вычислении хэш-кода вызывает чрезмерное выделение - #10917
Итерации зависимостей библиотеки вызывают чрезмерное выделение перечислителей — #10918
Поиск кэша совместимости выделяет Func для каждого подстановки — #10919
Перемещение WhereListIterator в DependencyWalker.CreateGraphNode — #10920
Исключение при восстановлении: "Восстановление метаданных не соответствует требуемому списку целевых платформ" — #10924
Совместное использование редукторов платформы в соглашениях об управляемом коде — #10925
NuGet VSIX создается с неправильными перенаправлениями привязки — #10946
Задержки пользовательского интерфейса NuGet диспетчер пакетов при выполнении скриптов инициализации — #10947
Поддержка sourceUri, передаваемого в nuget restore/install и dotnet restore package или других эквивалентных команд — #10948
Поддержка фильтрации пространств имен для команды установки nuget.exe — #10961
Остановка создания необработанных свойств для каждого сегмента — #10969
Непредвиденная ссылка NU1605 из транзитивной ссылки, которая никогда не была выбрана (обрезанная подграфа) - #10972
Значок пакета NuGet.Localization отсутствует — #10975
Избегайте ненужных размеров словаря при вычислении закрытия проекта — #10976
Конфликтующая документация по I Параметры. AddOrUpdate — #10980
Использование массива байтов в пуле при копировании файлов и проверке подписей — #10988
Избегайте выделения Task.WhenAny в пошаговом руководстве по зависимостям — #10989
Убедитесь, что фильтрация пространств имен учитывается в пакетах.config, установка и обновление PMC - #11001
Убедитесь, что фильтрация пространств имен учитывается в API установщика пакетов .config.config — #11002
[Ошибка]: пользовательский интерфейс PM показывает 0 количества скачиваемых файлов, когда выбранный пакет уже установлен — #11012
Уменьшение выделения в VersionFormatter — #11014
Устаревшие неиспользуемые типы: LibraryDependencyType и связанные — #11015
[Ошибка]:
nuget.exe install packages.config
не учитывает-PackageSaveMode nuspec
- #11018[Ошибка]:
$(IsPackable)
не цитируется - #11025Создание тестов Apex с несколькими репозиториями источника для фильтрации пространства имен пакета PMUI — #11026
[Ошибка]: [Специальные возможности] Трудно читать ссылки в результатах поиска пользовательского интерфейса PM с помощью светлой или темной темы - #11055
IVsSolutionRestoreService4 должен расширить IVsSolutionRestoreService3 - #11098
[Ошибка]: ссылки на рекомендации должны быть выровнены в области сведений PMUI - #11101
Подсказка установленного значка предупреждения о версиях пакетов для уязвимых и нерекомендуемых версий — #11103
[Скорость реагирования] RestoreOperationLogger+StatusBarProgress.Dispose блокирует поток пула потоков, ожидающий потока пользовательского интерфейса - #11115
Добавление времени после последней метрики восстановления — #11124
[Ошибка]: nuget.exe регрессия при обработке рекурсивных
<files>
записей между 5.9.1 и 5.10.0 - #11125Await WhenNominated, когда проект имеет ожидающий номинации - #11132
Параметр sourceUri поддержки, переданный в пакет добавления dotnet, — #11140
[Ошибка]: пользовательский интерфейс VS PM не отображает значки JPEG для пакетов — #11144
UIDelay:
nuget.packagemanagement.visualstudio.dll!NuGet.PackageManagement.VisualStudio.VsCoreProjectSystemReferenceReader+<GetProjectReferencesAsync>d__
— проекты CPS — #11162[Ошибка]:
dotnet list package --outdated --interactive
делает поставщик учетных данных недопустимым кэшем для каждого пакета, указанного в списке - #11169[Ошибка]: пространства имен пакетов для сценариев packages.config используют все источники в качестве резервного варианта, если для пакета не найдены соответствующие пространства имен — #11170
Избегайте поиска MEF в потоке пользовательского интерфейса во время инициализации проектов NuGet — #11176
[Ошибка]: подсказка на изображении индикатора предупреждения на вкладке "Установленные" больше не работает - #11183
Все вызовы ServiceLocator, которые извлекают службы MEF, должны избежать потока пользовательского интерфейса. - #11201
[Ошибка]: событие телеметрии отсутствует в Visual Studio — #11206
Избегайте повторяющихся вызовов EnvDTEProjectUtility.IsSupportedAsync — #11207
Добавление IVsSolutionManager.GetSolutionDirectoryAsync — повышение производительности и остановка блокировки вызывающего потока в асинхронных кодовых путих. - #11208
Переименуйте типы и переменные в коде продукта или теста, чтобы отразить новое имя функции пространства имен пакета — #11216
[Ошибка]: сборка ArPow не работает хорошо, когда в подкаталоге не связанного репозитория Git — #11227
Пакет dotnet list --уязвимый, --нерекомендуемый, --устаревший не работает для транзитивных положительных результатов - #10767
Список всех проблем, исправленных в этом выпуске— 6.0
Список фиксаций в этом выпуске — 6.0.0
Только Visual Studio был обновлен с этой версией NuGet.
- [Ошибка]: не удается получить INuGetProjectService из брокера служб в Visual Studio 17 — #11367
- [Ошибка]: инициализация консоли диспетчер пакетов может привести к взаимоблокировкам — #11320
Список фиксаций в этом выпуске — 6.0.1
Спасибо всем участник, которые помогли сделать этот выпуск NuGet потрясающим!
Кто | Prs | Проблемы |
---|---|---|
omajid | 3866 | Обработка неисключаемого значения null в Rfc3161TimestampTokenInfo — #10484 |
marcin-krystianc | 3934 | Добавление кэша для LockFileTargetLibrary — #10614 |
krafs | 4151 | Удалено возвращаемое значение из документации по I Параметры. AddOrUpdate — #10980 |
huangqinjin | 4148 | Исправление nuspec PackageSaveMode всегда переустановляется — #2402 |
Бессонница47 | 4190 | fix(docs): Удалить ссылку на закрытую или недоставленную ссылку в рекомендациях по участию в #8987 |
marcin-krystianc | 4194 | Создание учетной записи сценариев производительности для сбоев операций восстановления — #9968 |
эриаван | 4159 | Исправление окружении ($IsPackable) с одними кавычками — #11025 |
huangqinjin | 4193 | Установка packages.config должна учитывать PackageSaveMode — #11018 |
mfkl | 4199 | test: use new DependencyGraphSpec — #11168 |
omajid | 4254 | Использование --work-tree с применением git — #11227 |
Ваши отзывы очень важны для нас. Если с этим выпуском возникли проблемы, проверка проблемы с GitHub и Visual Studio Сообщество разработчиков для существующих проблем. Для новых проблем в NuGet сообщите о проблеме GitHub. Для общих проблем с интерфейсом NuGet сообщите нам с помощью параметра "Сообщить о проблеме ", который найден в выбранной интегрированной среде разработки в разделе "Отчет о > проблеме".