首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用cake在assemblyinfo.cs中仅更新版本信息?

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

Stack Overflow用户
提问于 2016-11-02 21:35:06
回答 2查看 3.9K关注 0票数 11

我对cakebuild非常陌生。我想用cakebuild更新assemblyinfo.cs的版本信息。

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

我怎样才能做到这一点呢?

你好,阿拉迪亚

EN

回答 2

Stack Overflow用户

发布于 2017-08-01 03:39:56

如果你不想有单独的文件,你也可以使用regex替换:

代码语言:javascript
复制
#addin "Cake.FileHelpers"
var yourVersion = "1.0.0.0";

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

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

票数 13
EN

Stack Overflow用户

发布于 2016-11-02 21:38:17

有两个文件,一个是静态文件,另一个是自动生成的bits。

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

文件夹结构的示例可以是

代码语言:javascript
复制
src
|    Solution.sln
|    SolutionInfo.cs
|    
\--- Project
    |   Project.csproj
    |
    \---Properties
            AssemblyInfo.cs

基本上,您的csproj文件将不是:

代码语言:javascript
复制
<Compile Include="Properties\AssemblyInfo.cs" />

应该是这样的:

代码语言:javascript
复制
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="..\SolutionInfo.cs">
  <Link>Properties\SolutionInfo.cs</Link>
</Compile>

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

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

其中的Cake构建脚本部分如下所示:

代码语言:javascript
复制
Task("SolutionInfo")
    .IsDependentOn("Clean")
    .IsDependentOn("Restore")
    .Does(() =>
{
    var file = "./src/SolutionInfo.cs";
    CreateAssemblyInfo(file, assemblyInfo);
});
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40381310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档