我正在使用Cake中的ParseReleaseNotes
别名来管理我的版本控制,在我使用CreateAssemblyInfo
别名修补程序集信息的项目中运行良好。
现在项目不使用csproj而是project.json我希望实现相同的功能,而程序集信息不是project.json的真正选项。
检查DotNetCoreBuild(string, DotNetCoreBuildSettings)
及其DotNetCoreBuildSettings
似乎只能通过它的VersionSuffix
属性来设置部分版本。
是否有Cake别名/设置来实现此目的,还是可以从Cake修补project.json?
答案 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);
}
});
}
,它就会产生与发行说明相同的版本。