Полная версия набора Cake Build с псевдонимом DotNetCoreBuild

Я использую псевдоним ParseReleaseNotes в Cake для управления версиями, отлично работал с проектом, где я исправлял информацию о сборке с псевдонимом CreateAssemblyInfo.

Теперь, когда проект использует не csproj, а project.json, я хочу добиться того же, и информация о сборке не является реальным вариантом с project.json.

Проверяя DotNetCoreBuild(string, ​DotNetCoreBuildSettings)​ и DotNetCoreBuildSettings, кажется, что есть способ установить части версии через свойство VersionSuffix.

Есть ли псевдоним/настройка Cake для достижения этого или можно ли исправить project.json из Cake?


person Community    schedule 03.08.2016    source источник


Ответы (2)


Нет встроенного псевдонима для исправления project.json версии или параметра для dotnet build для установки полной версии, о которой я знаю.

Тем не менее, поскольку project.json — это просто «JSON», вполне возможно исправить project.json с помощью сериализатора JSON, то есть JSON.Net.

Ниже я создал пример, который ссылается на JSON.Net как надстройку, а затем создал служебную функцию UpdateProjectJsonVersion, которую я могу использовать для исправления моего project.json с помощью проанализированного ReleaseNotes (в данном случае я жестко запрограммировал его для простоты).

#addin "Newtonsoft.Json"

// fake a release note
ReleaseNotes releaseNotes = new ReleaseNotes(
    new Version("3.0.0"),
    new [] {"3rd release"},
    "3.0.-beta"
    );

// project.json to patch
FilePath filePaths = File("./project.json");

// patch project.json
UpdateProjectJsonVersion(releaseNotes.RawVersionLine, filePaths);

// utility function that patches project.json using json.net
public static void UpdateProjectJsonVersion(string version, FilePath projectPath)
{
    var project = Newtonsoft.Json.Linq.JObject.Parse(
        System.IO.File.ReadAllText(projectPath.FullPath, Encoding.UTF8));

    project["version"].Replace(version);

    System.IO.File.WriteAllText(projectPath.FullPath, project.ToString(), Encoding.UTF8);
}

Таким образом, просто вызовите UpdateProjectJsonVersion, прежде чем вызывать псевдоним DotNetCoreBuild, и он приведет к той же версии, что и ваши примечания к выпуску.

person devlead    schedule 03.08.2016

Для обеспечения этой функциональности нет встроенного псевдонима Cake, но вы можете использовать стороннюю надстройку для MagicChunks. проект. Вы можете добавить это в свой скрипт Cake, просто выполнив:

#addin "MagicChunks"

И оттуда вы можете сделать что-то вроде:

var projectToPackagePackageJson = $"{projectToPackage}/project.json";
Information("Updating {0} version -> {1}", projectToPackagePackageJson, nugetVersion);

TransformConfig(projectToPackagePackageJson, projectToPackagePackageJson, new TransformationCollection {
    { "version", nugetVersion }
});

Где TransformConfig — это псевдоним метода, который добавляется надстройкой MagicChunks.

ПРИМЕЧАНИЕ. Этот пример взят из следующего проекта .

person Gary Ewan Park    schedule 04.08.2016