Как создать метапакет nuget с помощью команды do tnet? - PullRequest
1 голос
/ 07 марта 2020

У меня есть решение с кучей проектов:

ProjectA.csproj
ProjectB.csproj
ProjectC.csproj

Все они индивидуально упакованы как пакеты nuget:

dotnet pack ProjectA.csproj --version-suffix 1.0.0    ===> ProjectA-1.0.0.nupkg
dotnet pack ProjectB.csproj --version-suffix 1.0.0    ===> ProjectB-1.0.0.nupkg
dotnet pack ProjectC.csproj --version-suffix 1.0.0    ===> ProjectC-1.0.0.nupkg

Номер версии автоматически извлекается нашим сервером сборки с gitversion.exe

Теперь я хотел бы создать метапакет nuget, который автоматически ссылается на все три nupkg.

Я мог бы сделать это с файлом nuspe c, но тогда мне нужно будет отредактировать его вручную, когда изменится номер нашей версии.

Я мог бы создать 4-й проект ProjectAll.csproj, который ссылается на другие три проекта. Но это оставило бы меня с пустой DLL в выводе приложений, использующих эти пакеты.

Каков наилучший способ продолжить?

1 Ответ

2 голосов
/ 07 марта 2020

Я не знаю, много ли это «секрета», но CLI do tnet для большинства команд - просто оболочка для msbuild. Это включает в себя пакет, что означает, что документация NuGet по цели пакета MSBuild актуальна. Если вы прокрутите вниз, просматривая каждый заголовок, или просто выполните поиск слов «вывод сборки», вы найдете раздел Выходные сборки . Там написано:

IncludeBuildOutput: логическое значение, определяющее, следует ли включать в пакет выходные сборки сборки.

Итак, в вашем файле проекта вы можете иметь что-то вроде:

<Project Sdk="whatever. I can't be bothered looking it up and I haven't memorized it.">
  <PropertyGroup>
    <TargetFramework>same as your other projects. Most restrictive TFM if different projects have different TFMs</TargetFramework>
    <IncludeBuildOutput>false</IncludeBuildOutput>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\path\to\ProjectA.csproj" />
    <ProjectReference Include="..\path\to\ProjectB.csproj" />
    <ProjectReference Include="..\path\to\ProjectC.csproj" />
  <ItemGroup>
</Project>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...