Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Пакет Nuget для Visual Studio 2017 исключает ссылку на проект как другую ссылку на nuget, вместо этого добавляет сборку

Автор вопроса: SatyajitОтветов: 1

Когда мы создаем пакет nuget в Visual Studio 2017, он по умолчанию добавляет ссылки на проект как еще одну ссылку nuget. Как мы можем отключить это при создании пакета и вместо этого:

  • Выберите другое имя пакета
  • вместо этого включите dll проекта при создании пакета

nugetnuget-packagevisual-studio-2017

Ответы

Ответ 1 · рейтинг 12 · Martin Ullrich

PackageReference можно пометить PrivateAssets="All", чтобы гарантировать, что он не станет зависимостью NuGet потребляющей библиотеки при упаковке. Затем потребляющая библиотека может использовать пользовательскую цель для добавления файлов в созданный пакет nuget. Полный пример для файла csproj может выглядеть так:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);IncludeP2PAssets</TargetsForTfmSpecificBuildOutput>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\testprivatelib\testprivatelib.csproj" PrivateAssets="All" />
  </ItemGroup>

  <Target Name="IncludeP2PAssets">
    <ItemGroup>
      <BuildOutputInPackage Include="$(OutputPath)\testprivatelib.dll" />
    </ItemGroup>
  </Target>
</Project>

Где testprivatelib.csproj - это проект, который создает библиотеку DLL, которую вы хотите дополнительно включить в файл .nupkg и не публиковать дополнительный пакет NuGet для указанного проекта.

Указать разные пакеты NuGet сложнее. Требуется вручную создать файл .nuspec, используя его для упаковки пакета NuGet. Вы можете увидеть пример того, как это можно сделать, по адресу https://github.com/dasMulli/nuget-include-p2p-example/tree/master/LibA - LibA.csproj настроен на использование LibA.nuspec при вызове dotnet pack.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы