我对cakebuild很新。我想使用cakebuild更新assemblyinfo.cs的版本信息。
'We will run through each indice
For i = 0 To CheckedListBox1.Items.Count - 1
'You can replace As Object by your object type
'ex : Dim Item As String = CType(CheckedListBox1.Items(i), String)
Dim Item As Object = CheckedListBox1.Items(i)
'We ask if this item is checked or not
If CheckedListBox1.GetItemChecked(i) Then
'Do something if Item is checked
Else
'Do something else if Item is not checked
End If
Next
方法会覆盖assemblyinfo文件的全部内容。但我需要更新版本信息。
我怎样才能做到这一点。?
此致 Aradhya
答案 0 :(得分:8)
有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);
});
答案 1 :(得分:8)
如果您不想拥有单独的文件,也可以使用正则表达式替换:
#addin "Cake.FileHelpers"
var yourVersion = "1.0.0.0";
Task("SetVersion")
.Does(() => {
ReplaceRegexInFiles("./your/AssemblyInfo.cs",
"(?<=AssemblyVersion\\(\")(.+?)(?=\"\\))",
yourVersion);
});
您可能还希望替换AssemblyFileVersion
或AssemblyInformationalVersion