我的解决方案中有多个 c# 类库(DotNet Core 2.1)项目和用户界面(WPF 项目)。
假设类库项目属性的程序集版本为 2019.1.15341.0:
此外,相同的程序集版本分配给用户界面(WPF 应用程序):
[assembly: AssemblyVersion("2019.1.15341.0")]
[assembly: AssemblyFileVersion("2019.1.15341.0")]
在 TeamCity 中,我配置了 AssemblyInfo Patcher:
我使用 TeamCity 构建了完整的解决方案并且构建成功:
现在让我们看看构建完整解决方案后产生的工件的属性:
1. 项目 1(类库,DLL 属性):
2.用户界面(WPF项目):
我看到
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 中的构建功能,并添加一个构建功能。
<Version>\S*<\/Version>
或使用模板正则表达式:(<(Version)\s*>).*(<\/\s*\2\s*>)
我使用了替换为:
<Version>%MAJOR%.%MINOR%.%build.counter%.%build.vcs.number%</Version>
以便 <version>
和 </version>
根据我的正则表达式,标签不会被删除。这一切都取决于您需要替换的正则表达式。同样,我添加了其他必需的参数:
优点:
构建项目后,我可以在属性中看到预期的结果。
缺点:
多次而不是一次搜索和替换文件(构建功能的数量、执行的次数和还原的次数相同!)
关于.net - 如何使用从 .net 解决方案生成的 AssemblyInfo Patcher 更改 TeamCity 中 DLL 的文件/产品版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51174278/