Cake Build 集完整版与 DotNetCoreBuild 别名
Cake Build set full version with DotNetCoreBuild alias
我在 Cake 中使用 ParseReleaseNotes
别名来管理我的版本控制,在我使用 CreateAssemblyInfo
别名修补程序集信息的项目中工作正常。
现在项目不使用 csproj,但 project.json 我想实现相同的目的,但汇编信息不是 project.json 的真正选项。
查看 DotNetCoreBuild(string, DotNetCoreBuildSettings)
和它的 DotNetCoreBuildSettings
似乎只能通过 VersionSuffix
属性.[=15= 设置部分版本]
是否有 Cake 别名/设置来实现此目的,或者是否可以从 Cake 中修补 project.json?
没有内置别名来修补 project.json
版本或 dotnet build
的参数来设置我所知道的完整版本。
也就是说 project.json
只是 "JSON" 完全可以使用 JSON 序列化程序修补 project.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);
}
所以基本上只需在调用 DotNetCoreBuild 别名之前调用 UpdateProjectJsonVersion
,它会生成与发行说明相同的版本。
没有内置的 Cake Alias 来提供此功能,但您可以为 MagicChunks 项目使用第 3 方插件。您可以通过简单地执行以下操作将其添加到您的 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。
我在 Cake 中使用 ParseReleaseNotes
别名来管理我的版本控制,在我使用 CreateAssemblyInfo
别名修补程序集信息的项目中工作正常。
现在项目不使用 csproj,但 project.json 我想实现相同的目的,但汇编信息不是 project.json 的真正选项。
查看 DotNetCoreBuild(string, DotNetCoreBuildSettings)
和它的 DotNetCoreBuildSettings
似乎只能通过 VersionSuffix
属性.[=15= 设置部分版本]
是否有 Cake 别名/设置来实现此目的,或者是否可以从 Cake 中修补 project.json?
没有内置别名来修补 project.json
版本或 dotnet build
的参数来设置我所知道的完整版本。
也就是说 project.json
只是 "JSON" 完全可以使用 JSON 序列化程序修补 project.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);
}
所以基本上只需在调用 DotNetCoreBuild 别名之前调用 UpdateProjectJsonVersion
,它会生成与发行说明相同的版本。
没有内置的 Cake Alias 来提供此功能,但您可以为 MagicChunks 项目使用第 3 方插件。您可以通过简单地执行以下操作将其添加到您的 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。