【发布时间】:2017-05-24 10:24:23
【问题描述】:
我在 Jenkins 中构建了我的第一个模型, 我试图通过变量 SVN_REVISION 获取 svn 修订版,但它不起作用。
我需要它在我的 assemblyInfo 文件中设置它。
我在谷歌上搜索了一下,一无所获。
请帮帮我!
【问题讨论】:
标签: svn build .net-assembly revision
我在 Jenkins 中构建了我的第一个模型, 我试图通过变量 SVN_REVISION 获取 svn 修订版,但它不起作用。
我需要它在我的 assemblyInfo 文件中设置它。
我在谷歌上搜索了一下,一无所获。
请帮帮我!
【问题讨论】:
标签: svn build .net-assembly revision
您可以使用我们编写的flubu。 Flubu 是一个 C# 库,用于使用 C# 代码构建项目和执行部署脚本。
更多关于flubu的信息可以在这里找到:Choice for build tool: MSBuild, NANT or something else?
对于您的特定情况,您必须生成 CommonAssemblyInfo 或使用自定义任务更新每个 AssemblyInfo 信息。我会给你举例说明如何使用 CommonAssemblyInfo:
public class BuildScript : DefaultBuildScript
{
protected override void ConfigureBuildProperties(IBuildPropertiesContext context)
{
context.Properties.Set(BuildProps.CompanyName, "Company");
context.Properties.Set(BuildProps.ProductId, "ProductId");
context.Properties.Set(BuildProps.ProductName, "ProductName");
context.Properties.Set(BuildProps.SolutionFileName, @"Solution.sln");
context.Properties.Set(BuildProps.BuildConfiguration, "Release");
}
protected override void ConfigureTargets(ITaskContext context)
{
var loadSolution = context.CreateTarget("load.solution")
.SetDescription("Load & analyze VS solution")
.AddTask(x => x.LoadSolutionTask())
.SetAsHidden();
var fetchVersion = context.CreateTarget("fetch.version")
.SetDescription("Fetch the build version")
.Do(TargetFetchBuildVersion);
var generateCommonAssInfo = context.CreateTarget("generate.commonAssInfo")
.DependsOn(fetchVersion)
.TaskExtensions()
.GenerateCommonAssemblyInfo()
.BackToTarget();
var compile = context.CreateTarget("compile")
.AddTask(x => x.CompileSolutionTask())
.DependsOn(loadSolution, generateCommonAssInfo);
}
public static void TargetFetchBuildVersion(ITaskContext context)
{
var version = context.Tasks().FetchBuildVersionFromFileTask().Execute(context);
string svnRevisionNumberString = Environment.GetEnvironmentVariable("SVN_REVISION");
int svnRevisionNumber = 0;
if (!string.IsNullOrEmpty(svnRevisionNumberString))
{
svnRevisionNumber = int.Parse(svnRevisionNumberString, CultureInfo.InvariantCulture);
}
version = new Version(version.Major, version.Minor, version.Build, svnRevisionNumber);
context.Properties.Set(BuildProps.BuildVersion, version);
}
}
然后您将在 cmd 或 jenkins 中使用 flubu runner 运行脚本作为构建步骤:build.exe compile
您必须将生成的 CommonAssemblyInfo 包含到每个项目课程中。
【讨论】: