Исключить зависимость NuGet при создании пакета NuGet NETStandard 2.0

Я пытаюсь создать пакет NuGet на своей сборке .NET Standard 2.0. Я добавил три (3) разных пакета NuGet, используя формат PackageReference, и выбрал параметр «Создать пакет NuGet при сборке». Все работает нормально, за исключением того, что один из использованных мной пакетов содержит только файл .targets, который я не хочу включать в качестве зависимости.

Есть ли способ указать, чтобы PackageReference не был частью зависимости пакета при использовании msbuild в сборке .NET Standard, для которой GeneratePackageOnBuild установлено значение true?


person myermian    schedule 07.02.2018    source источник


Ответы (1)


Элемент PackageReference поддерживает несколько дополнительных значений метаданных. один из них - PrivateAssets, который контролирует, какие активы НЕ пересылаются потребителям. Когда для него установлено значение «все», запись о зависимости в сгенерированном nuspec полностью исключается - т.е. пакет не будет отображаться в графе зависимостей:

<ItemGroup>
  <PackageReference Include="JetBrains.Annotations" Version="11.1.0" PrivateAssets="All" />
</ItemGroup>
person Martin Ullrich    schedule 08.02.2018
comment
Странно, но когда я установил это свойство ранее и скомпилировал с помощью msbuild через командную строку разработчика, зависимость все равно была указана. Впоследствии я добавил еще один пакет и удалил этот пакет, и теперь msbuild учитывает значение PrivateAssets="All". Я не уверен, почему добавление / удаление другого пакета исправило это, но теперь он работает. - person myermian; 08.02.2018
comment
@ m-y да, кажется, немного глючит ... это сработало для меня, вручную удалив папки bin / obj и перестроив. - person thebfactor; 25.07.2018