1

使用Publish爲ClickOnce應用程序自動增加構建版本號。此版本號與項目屬性中的程序集版本不同(它自動顯示在生成的WPF框中)。VS2012 - 同步項目屬性和ClickOnce內部版本號

有沒有辦法在裝配屬性中同步ClickOnce版本號和項目編號?目標是爲兩個地方獲得自動增加和相同的版本號。

Version number for ClickOnce/Publish

Project properties

回答

1

沒有自動(內置)的方式來做到這一點。我在項目中使用的一種可能的解決方法是使用自定義的msbuild任務生成發佈和彙編版本信息。

一些作爲nuget包可用的項目旨在解決這些問題,但沒有什麼非常完整的。看看SemVerHarvesterCroMagVersion ...

兩個上面有許多問題:

  1. SemVerHarvester被紮成的git/Hg和源的版本信息從一個混帳標籤
  2. 它實際上並沒有寫一個AssemblyInfo.cs文件本身,但依賴於Msbuild社區任務
  3. AssemblyInfo.cs文件始終「觸及」,這意味着每個重建都是完全重建而不是增量重建。 CroMagVersion部分解決了這個問題 - 它在發佈版本中定義了#define,並且只有在存在此定義時纔會重新生成AssemblyInfo.cs ...
  4. 這兩個項目都不直接設置ClickOnce系統用於發佈的ApplicationVersion/ApplicationRevision屬性

我有解決方法的所有上述情況,我打算很快開源GitHub上的...在此期間,我會descibe我做了什麼:

我做了一個自定義msbuild任務,從git讀取版本信息,然後根據此信息創建內存中的AssemblyInfo文件。我檢查現有的AssemblyInfo.cs文件(即具有AssemblyVersion和其他屬性的文件)並覆蓋它,當且僅當內存中的版本更新時。這允許增量重建。最後我還輸出ApplicationVersion,ApplicationRevision和其他屬性來支持ClickOnce。

如果我要我的開源解決方法作爲獨立的解決方案,我可能會允許的版本信息從一個文本文件,混帳,汞等

問題我還沒有找到好的解決辦法進行採購到:

ClickOnce不直接支持多個發佈渠道 - 如調試/測試/ custom_feature /無論這讓我想知道我是否應該溝通clickonce並使用Shimmer來代替。