亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

帶有 MSBuild 的 CI - 每個人如何管理 assemblyinfo.cs

帶有 MSBuild 的 CI - 每個人如何管理 assemblyinfo.cs

C#
呼啦一陣風 2021-10-24 19:57:10
在大量閱讀之后,我對管理 assemblyinfo.cs 中的版本的最佳實踐感到有些困惑。似乎有不同的方法,有些似乎已經過時了。我想要的只是能夠設置這樣的東西:1.0.$BUILD_VERSION.0之后構建轉換為:1.0.142.0。其他人是怎么做的?我將 Jenkins 用于 CI,特別是存儲在我的 Git 存儲庫中的 Jenkinsfile 方法。我使用 .BAT 文件接近某些東西,但后來遇到了磚墻,因為我無法從 Windows bat 文件中提取環境變量以在 Jenkins 中使用。
查看完整描述

2 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

如果它適合您,您可以在 assemblyinfo.cs


注意:您必須刪除該AssemblyFileVersion屬性:


// You can specify all the values or you can default the Build and Revision Numbers 

// by using the '*' as shown below:

[assembly: AssemblyVersion("1.3.*.*")]

//[assembly: AssemblyFileVersion("1.0.0.0")] not used

它會自動為您創建與構建時間相關的構建編號。


這是有關此主題的更多信息:AssemblyInfo version information asterisks


查看完整回答
反對 回復 2021-10-24
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

就我個人而言,我會避開 Jenkins 特定的工具,而是依賴于更通用的東西,比如環境變量,如果你曾經切換 CI,它會繼續工作,加上很容易在命令行上進行本地測試,根本沒有任何 CI。


當然 Jenkins 和其他 CI 一樣,設置了一個包含內部版本號的環境變量。所以你所要做的就是把它放到你的 AssemblyInfo.cs 中。如果您四處搜索“以編程方式更新 AssemblyInfo.c”,您會找到無數的答案。


我們通過僅指示 CI 在實際構建之前運行特定的 msbuild 文件并使用 FileUpdate 任務來使用僅 msbuild 解決方案,因為這相當簡單。但是例如 PowerShell 腳本也可以做到這一點。它看起來類似于:


<ItemGroup>

  <AsmInfoFiles Include="$(ProjectRoot)\**\AssemblyInfo.cs"/>

<ItemGroup>


<PropertyGroup>

  <NewVersion>$(VersionMaj).$(VersionMin).$(VersionBuild).0</NewVersion>

<PropertyGroup>


<Target Name="UpdateVersion">

  <FileUpdate Files="@(AsminfoFiles)" Encoding="utf-8"

     Regex="\[assembly:\s*AssemblyVersion\(.*\)\]"

     ReplacementText="[assembly: AssemblyVersion(&quot;$(NewVersion)&quot;)]"/>

</Target>

版本號由 CI 作為環境變量發布。


查看完整回答
反對 回復 2021-10-24
  • 2 回答
  • 0 關注
  • 270 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號