2016-08-03 16 views
4

Ich verwende die ParseReleaseNotes Alias ​​in Cake, um meine Versionierung zu verwalten, funktionierte gut mit einem Projekt, wo ich die Assembly-Informationen mit CreateAssemblyInfo Alias ​​Patch.Cake Build-Set Vollversion mit DotNetCoreBuild-Alias ​​

Jetzt mit Projekt nicht mit csproj aber project.json Ich möchte das gleiche erreichen und Assembly-Informationen ist keine echte Option mit project.json.

Auschecken der DotNetCoreBuild(string, ​DotNetCoreBuildSettings)​ und es ist DotNetCoreBuildSettings dort scheint nur eine Möglichkeit zu sein, Teile der Version über seine VersionSuffix Eigenschaft einzustellen.

Gibt es einen Cake Alias ​​/ Einstellung, um dies zu erreichen oder ist es möglich, die project.json von Cake zu patchen?

Antwort

2

Es gibt keinen integrierten Alias ​​zum Patch project.json Version oder Parameter für dotnet build, um die Vollversion zu setzen, die ich kenne.

, die als project.json sagte nur „JSON“ es durchaus möglich ist project.json mit einem JSON Serializer heißt JSON.Net patchen.

Unten habe ich ein Beispiel geschaffen, das JSON.Net als Addin referenziert und dann erstellt eine UpdateProjectJsonVersion Nutzenfunktion, die ich verwenden kann meine project.json Verwendung analysiert die ReleaseNotes (in diesem Fall, dass ich schwer es der Einfachheit halber codiert haben) zu patchen.

#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); 
} 

So rufen Sie im Grunde UpdateProjectJsonVersion kurz bevor Sie die DotNetCoreBuild alias nennen und es wird in derselben Version als Release Notes führen.

5

Es gibt keinen integrierten Cake-Alias, der diese Funktionalität bietet, aber Sie können ein Drittanbieter-Add-In für das MagicChunks-Projekt verwenden.

#addin "MagicChunks"

Und von dort, können Sie etwas tun, wie: Sie können einfach tun dies in Ihrem Kuchen Skript hinzufügen

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

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

Wo TransformConfig die Methode Alias ​​ist, die durch die MagicChunks hinzugefügt wird hinzufügen.

HINWEIS: Diese Probe wurde aus der folgenden project entnommen.