Cake Build - обновить пакет NuGet до последней версии - PullRequest
0 голосов
/ 12 октября 2018

У меня есть решение с 5 проектами.Каждый проект развертывается с помощью Nuget-Push.Некоторые проекты ссылаются на другие проекты через Nuget.Для правильной работы эти пакеты nuget должны быть обновлены до их отправки.

Для этого мы используем Cake-Build, но обновление nuget не работает с основными / стандартными проектами.Вместо этого необходимо использовать удалить -> добавить, что не работает для меня?

Как я могу это сделать?

Пример:

  • Проект Av1.0.0
  • Проект B v1.0.0
  • Проект C v1.0.0
    • Ссылка на A v1.0.0
    • Ссылка на B v1.0.0

Теперь Build-Script скомпилирует A и B, увеличит версию до v1.0.1 и отправит пакет nuget.Перед сборкой C необходимо обновить пакеты nuget для A & B.

Пример:

  • Проект A v1.0.1
  • Проект B v1.0.1
  • Проект C v1.0.1
    • Ссылка на A v1.0.1
    • Ссылка на B v1.0.1

Как мне обновить пакеты через Cake-Build?!?

1 Ответ

0 голосов
/ 12 октября 2018

Если вы используете ссылки на проекты и строите как часть одного и того же решения, вы должны быть в состоянии правильно получить все ссылки.Вот как создается сам Cake.

  • Cake.exe / dll зависит от
    • Cake.Core
    • Cake.Common, который зависит от
      • Cake.Core

Когда мы создаем 0.30.0, мы передаем эту версию как общие MSBuildSettings для восстановления.Сборка и упаковка.Грубый пример

string configuration = "Release",
       version = "0.30.0",
       semVersion = "0.30.0"; // for pre-release this is suffixed i.e. -alpha-001

DotNetCoreMSBuildSettings msBuildSettings = new DotNetCoreMSBuildSettings()
                            .WithProperty("Version", semVersion)
                            .WithProperty("AssemblyVersion", version)
                            .WithProperty("FileVersion", version);


DotNetCoreRestore("./src/Cake.sln", new DotNetCoreRestoreSettings
{
    Verbosity = DotNetCoreVerbosity.Minimal,
    Sources = new [] { "https://api.nuget.org/v3/index.json" },
    MSBuildSettings = msBuildSettings
});

DotNetCoreBuild("./src/Cake.sln", new DotNetCoreBuildSettings()
{
    Configuration = configuration,
    NoRestore = true,
    MSBuildSettings = msBuildSettings
});

var projects = GetFiles("./src/**/*.csproj");

foreach(var project in projects)
{
    DotNetCorePack(project.FullPath, new DotNetCorePackSettings {
        Configuration = configuration,
        OutputDirectory = "./nuget,
        NoBuild = true,
        NoRestore = true,
        IncludeSymbols = true,
        MSBuildSettings = msBuildSettings
    });

}

Ссылка на проект в .NET Core csproj выглядит как

<ProjectReference Include="..\Cake.Core\Cake.Core.csproj" />
...