Dot-Net

使用 MSBuild 命令行指定發布版本作為項目的程序集版本

  • March 8, 2019

我有一個從 DOS 命令行執行的簡單批處理文件,用於建構發布ClickOnce項目的小型 C# 應用程序。一行是這樣的:

msbuild MyApp.csproj /t:publish /property:PublishDir="deploy/"

這目前發布了應用程序,但它使用了我在 Visual Studio 的“發布”選項卡中設置的發布版本。我希望能夠在命令行設置發布版本,具體來說,我想使用項目的組裝版本。就像是:

msbuild MyApp.csproj /t:publish /property:PublishDir="deploy/" /property:PublishVersion="$(Proj.AssemblyVersion)"

我希望不創建自定義任務,因為這只是一個臨時解決方案,稍後我將用更合適的建構系統替換它。

或者,我查看了使用帶有標誌的Mage 命令行工具-Update更新已發布的清單版本,但我不知道如何在不使用PowerShell或某些需要的程序的情況下從項目或建構的程序集中檢索程序集版本號被下載。如果我可以使用 Visual Studio 附帶的東西,那也可以。

嘗試將此添加到您的 .csproj 文件中。目標將從輸出程序集中檢索版本並在發布之前更新 ApplicationVersion:

<Target Name="AfterCompile">
 <GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
   <Output TaskParameter="Assemblies" ItemName="fooAssemblyInfo"/>
 </GetAssemblyIdentity>
 <PropertyGroup>
   <ApplicationVersion>%(fooAssemblyInfo.Version)</ApplicationVersion>
 </PropertyGroup>
</Target>

動態獲取程序集名稱可能有更好的方法,但出於您的目的,它應該可以解決問題。

歸功於此GetAssemblyIdentity語法的答案: https ://stackoverflow.com/a/443364/266882

發問者編輯:

請參閱下面的評論以獲取更新。

引用自:https://stackoverflow.com/questions/12467960