繁体   English   中英

如何使用cake更新assemblyinfo.cs中的版本信息?

[英]How to update only version info in assemblyinfo.cs using cake?

我对cakebuild很新。 我想使用cakebuild更新assemblyinfo.cs的版本信息。

public static void CreateAssemblyInfo()方法将覆盖assemblyinfo文件的整个内容。 但我需要更新版本信息。

我怎样才能做到这一点。

此致,阿拉德亚

有2个文件,一个用于静态内容,另一个用于自动生成的位。

我通常应用的模式是拥有一个SolutionInfo.cs ,它在项目和每个项目的AssemblyInfo.cs之间共享,每个项目都是唯一的。

示例文件夹结构可以是

src
|    Solution.sln
|    SolutionInfo.cs
|    
\--- Project
    |   Project.csproj
    |
    \---Properties
            AssemblyInfo.cs

基本上你的csproj文件将代替:

<Compile Include="Properties\AssemblyInfo.cs" />

是这样的:

<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="..\SolutionInfo.cs">
  <Link>Properties\SolutionInfo.cs</Link>
</Compile>

这样,您可以对AssemblyInfo.cs任何手动编辑,并且可以安全地自动生成,而不会有覆盖该信息的风险。

这也允许您在解决方案中的项目之间共享版本/版权/公司之类的内容。

Cake构建脚本的一部分看起来像这样:

Task("SolutionInfo")
    .IsDependentOn("Clean")
    .IsDependentOn("Restore")
    .Does(() =>
{
    var file = "./src/SolutionInfo.cs";
    CreateAssemblyInfo(file, assemblyInfo);
});

如果您不想拥有单独的文件,也可以使用正则表达式替换:

#addin "Cake.FileHelpers"
var yourVersion = "1.0.0.0";

Task("SetVersion")
   .Does(() => {
       ReplaceRegexInFiles("./your/AssemblyInfo.cs", 
                           "(?<=AssemblyVersion\\(\")(.+?)(?=\"\\))", 
                           yourVersion);
   });

根据您的AssemblyInfo文件,您可能还想替换AssemblyFileVersionAssemblyInformationalVersion的值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM