Поделиться через


Заметки о выпуске 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

Сводка. Новые возможности версии 6.0.6

  • [Безопасность]: Microsoft Security Advisory CVE-2024-0057 | Уязвимость обхода компонента безопасности клиента NuGet — #12653

Сводка. Новые возможности 6.0.5

  • [Безопасность]: Рекомендации по безопасности Майкрософт CVE-2023-29337 | Уязвимость удаленного выполнения кода клиента NuGet — #12653

Примечание.

В Linux произошло критическое изменение поведения. Расположение временной папки, в которой NuGet хранит временные файлы во время различных операций, изменилось на /tmp/NuGetScratch/tmp/NuGetScratch<username>. Например, для пользователя User1 будет папка temp /tmp/NuGetScratchUser1.

Сводка. Новые возможности 6.0.3

  • [Безопасность]: Microsoft Security Advisory CVE-2022-41032 | Уязвимость .NET для повышения привилегий — #12149

Примечание.

Для Visual Studio 17.0, MSBuild 17.0 и .NET 6.0 требуется NuGet.exe 6.0 или более поздней версии.

Сводка. Новые возможности 6.0.2

  • [Безопасность]: Microsoft Security Advisory CVE 2022-30184 | Уязвимость раскрытия информации .NET — #11883

Сводка: новые возможности версии 6.0.0

🎉 Это первый выпуск для предоставления полной поддержки разработки и восстановления пакетов NuGet, предназначенных для .NET 6.0 🎉.

Поддержка .NET 6

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

Если вы не знакомы с целевыми объектами .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

При использовании диспетчер пакетов NuGet в Visual Studio теперь вы увидите уязвимости пакетов для пакетов, включая такие сведения, как количество и серьезность уязвимостей, а также прямые ссылки, чтобы узнать больше о рекомендациях.

Visual Studio Package Vulnerabilities

Поведение повторных попыток и обратной передачи

Теперь NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY существует флаг для улучшения поведения повторных попыток и обратного выхода клиентов NuGet, таких как увеличение максимального количества повторных попыток и увеличение задержки для более устойчивого взаимодействия при обнаружении более слабого подключения к Интернету.

Исключение расширений файлов по умолчанию

Теперь можно использовать флаг <AllowedOutputExtensionsInPackageBuildOutputFolder> MSBuild для изменения расширений файлов, включенных в выходные данные сборки пакета. Это дает больше контроля над расширениями, включенными в папку выходных данных сборки.

Улучшенная информация об нерекомендуемом использовании в Visual Studio

Устаревшие пакеты в Visual Studio теперь включают ссылку на предлагаемый альтернативный пакет для использования. Эту функцию можно использовать для быстрого просмотра и установки пакетов, которые активно поддерживаются.

Visual Studio Package Deprecations

Добавление пакета README в Visual Studio

Теперь вы можете добавить файл пакета README.md непосредственно в Visual Studio. ReadME помогает обмениваться важными сведениями о пакете. Это часто первый элемент, который посетитель увидит при посещении вашего пакета на NuGet.org. Файлы README обычно включают сведения о:

  • Что делает пакет
  • Почему пакет полезен
  • Как пользователи могут приступить к работе с пакетом
  • Где пользователи могут получить помощь или внести свой вклад в пакет

Дополнительные сведения о добавлении README в пакет NuGet см. в нашем блоге.

Быстрая загрузка решения и переключение ветвей в Visual Studio

В Visual Studio 2022 NuGet переопределяет контракт между восстановлением пакетов NuGet и общими компонентами Visual Studio для повышения производительности больших решений, вызывая восстановление только один раз вместо нескольких раз. Это повышает время, необходимое для выполнения фоновых процессов.

Установите предварительную версию Visual Studio 2022 и сообщите нам, что при загрузке крупных решений или переключении между ветвями вы заметите более быстрый интерфейс.

API-интерфейсы Visual Studio SolutionRestoreManager NuGet перемещены в пакет NuGet.VisualStudio

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 - #11125

  • Await 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

Сводка. Новые возможности версии 6.0.1

Только 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 сообщите нам с помощью параметра "Сообщить о проблеме ", который найден в выбранной интегрированной среде разработки в разделе "Отчет о > проблеме".