Cake Build使用DotNetCoreBuild别名设置完整版

时间:2016-08-03 21:01:14

标签: c# coreclr cakebuild

我正在使用Cake中的ParseReleaseNotes别名来管理我的版本控制,在我使用CreateAssemblyInfo别名修补程序集信息的项目中运行良好。

现在项目不使用csproj而是project.json我希望实现相同的功能,而程序集信息不是project.json的真正选项。

检查DotNetCoreBuild(string, ​DotNetCoreBuildSettings)​及其DotNetCoreBuildSettings似乎只能通过它的VersionSuffix属性来设置部分版本。

是否有Cake别名/设置来实现此目的,还是可以从Cake修补project.json?

2 个答案:

答案 0 :(得分:5)

没有内置Cake Alias来提供此功能,但您可以为MagicChunks项目使用第三方Addin。您只需执行以下操作即可将其添加到Cake脚本中:

#addin "MagicChunks"

从那里,你可以做类似的事情:

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

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

其中TransformConfig是MagicChunks插件添加的方法别名。

注意:此示例取自以下project

答案 1 :(得分:2)

没有内置别名来修补project.json版本或dotnet build参数,以设置我所知道的完整版本。

那说project.json只是" JSON"完全可以使用JSON序列化程序project.json修补JSON.Net

下面我创建了一个将JSON.Net作为插件引用的示例,然后创建了一个UpdateProjectJsonVersion实用程序函数,我可以使用已解析的project.json修补#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); } 3}}(在这种情况下,为了简单起见,我对其进行了硬编码)。

UpdateProjectJsonVersion

所以基本上只需在致电ReleaseNotes别名之前致电constructor(private router: Router) { this.router.events.subscribe(event => { if (event.constructor.name === 'NavigationStart') { console.log(event.url); } }); } ,它就会产生与发行说明相同的版本。