.net - 如何使用从 .net 解决方案生成的 AssemblyInfo Patcher 更改 TeamCity 中 DLL 的文件/产品版本?

标签 .net visual-studio continuous-integration teamcity .net-core-2.1

我的解决方案中有多个 c# 类库(DotNet Core 2.1)项目和用户界面(WPF 项目)。

假设类库项目属性的程序集版本为 2019.1.15341.0:

Project 1 has Assembly version 2019.1.15341.0

此外,相同的程序集版本分配给用户界面(WPF 应用程序):

[assembly: AssemblyVersion("2019.1.15341.0")]
[assembly: AssemblyFileVersion("2019.1.15341.0")]

在 TeamCity 中,我配置了 AssemblyInfo Patcher:

TeamCity AssemblyInfo Patcher

我使用 TeamCity 构建了完整的解决方案并且构建成功:

Build Successful in TeamCity

现在让我们看看构建完整解决方案后产生的工件的属性:

1. 项目 1(类库,DLL 属性):

project1.dll

2.用户界面(WPF项目):

USER interface exe

我看到UserInterface.exe's Version已被 TeamCity 根据它的 build counter 更改和 build vcs number ,但为什么是DLL's version是不是变了?我错过了任何步骤吗?还是别的什么?

Any information I am missing please inform.



EXE 的属性似乎符合预期。主要关注的是 DLL:它的属性没有改变。

最佳答案

如前所述,它是一个 .Net Core项目,所以它可能没有 AssemblyInfo.cs其中定义了程序集属性。

因此,转到 TeamCity 中的构建功能,并添加一个构建功能。

  • 选择:文件内容替换器
  • (可选)单击“加载模板”并在 下搜索或键入版本.Net核心

  • Adding File content replacer as Build Feature
  • 您可以使用自己的正则表达式,例如:<Version>\S*<\/Version>或使用模板正则表达式:(<(Version)\s*>).*(<\/\s*\2\s*>)

  • Replace with:

    我使用了替换为:<Version>%MAJOR%.%MINOR%.%build.counter%.%build.vcs.number%</Version>以便 <version></version>根据我的正则表达式,标签不会被删除。这一切都取决于您需要替换的正则表达式。

    同样,我添加了其他必需的参数:other required parameters

    优点:
    构建项目后,我可以在属性中看到预期的结果。

    缺点:
    多次而不是一次搜索和替换文件(构建功能的数量、执行的次数和还原的次数相同!)

    关于.net - 如何使用从 .net 解决方案生成的 AssemblyInfo Patcher 更改 TeamCity 中 DLL 的文件/产品版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51174278/

    相关文章:

    ios - Visual Studio 2015/Xamarin,调试不工作 : an error occurred while executing MTouch

    asp.net - 指向 SQL Azure 的 Azure 云服务 Web 角色存在问题

    javascript - Visual Studio Web 部署项目自动压缩 js 和 css

    java - JUnit 测试因 Jenkins 从属设备超时而失败

    .net - 在多线程中使用 GDI+ 的问题 (VB.NET)

    c# - 软件渲染模式——WPF

    c# - 为什么在文本框中更改文本时前景色是黑色而不是绿色?

    .net - 程序集上的 NDepend 指标

    continuous-integration - TeamCity 构建代理从哪里获取其路径环境?

    docker - 安装 npm 包时 GitLab CI/CD 管道错误 [找不到 package.json 文件]