我对cakebuild很新.我想使用cakebuild更新assemblyinfo.cs的版本信息.
public static void CreateAssemblyInfo()方法会覆盖assemblyinfo文件的整个内容.但我需要更新版本信息.
我怎样才能做到这一点.
此致,阿拉德亚
Phi*_*ohl 10
如果您不想拥有单独的文件,也可以使用正则表达式替换:
#addin "Cake.FileHelpers"
var yourVersion = "1.0.0.0";
Task("SetVersion")
.Does(() => {
ReplaceRegexInFiles("./your/AssemblyInfo.cs",
"(?<=AssemblyVersion\\(\")(.+?)(?=\"\\))",
yourVersion);
});
Run Code Online (Sandbox Code Playgroud)
根据您的AssemblyInfo文件,您可能还想替换AssemblyFileVersion或的值AssemblyInformationalVersion
有2个文件,一个用于静态内容,另一个用于自动生成的位.
我通常应用的模式是SolutionInfo.cs在项目和AssemblyInfo.cs每个项目之间共享一个项目,每个项目都是唯一的.
示例文件夹结构可以是
src
| Solution.sln
| SolutionInfo.cs
|
\--- Project
| Project.csproj
|
\---Properties
AssemblyInfo.cs
Run Code Online (Sandbox Code Playgroud)
基本上你的csproj文件将代替:
<Compile Include="Properties\AssemblyInfo.cs" />
Run Code Online (Sandbox Code Playgroud)
是这样的:
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="..\SolutionInfo.cs">
<Link>Properties\SolutionInfo.cs</Link>
</Compile>
Run Code Online (Sandbox Code Playgroud)
这样您AssemblyInfo.cs就可以对您进行任何手动编辑,并且可以安全地自动生成,而不会有覆盖该信息的风险.
这也允许您在解决方案中的项目之间共享版本/版权/公司之类的内容.
Cake构建脚本的一部分看起来像这样:
Task("SolutionInfo")
.IsDependentOn("Clean")
.IsDependentOn("Restore")
.Does(() =>
{
var file = "./src/SolutionInfo.cs";
CreateAssemblyInfo(file, assemblyInfo);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3010 次 |
| 最近记录: |