每次我發佈ClickOnce中的應用程序時,都會得到它以將版本號更新爲1。有沒有一種方法可以自動獲取此更改以更改AssemblyInfo.cs文件中的版本號(我們所有的錯誤報告都在查看Assembly版本)?如何獲取ClickOnce發佈版本以匹配AssemblyInfo.cs文件版本?
回答
我們使用Team Foundation Server的團隊建設和增加了一個塊到TFSBuild.proj的AfterCompile
目標觸發的ClickOnce我們的首選版本號發佈:
<MSBuild Projects="$(SolutionRoot)\MyProject\Myproject.csproj"
Properties="PublishDir=$(OutDir)\myProjectPublish\;
ApplicationVersion=$(PublishApplicationVersion);
Configuration=$(Configuration);Platform=$(Platform)"
Targets="Publish" />
通過自定義的MSBuild生成的PublishApplicationVersion
變量任務使用TFS Changeset編號,但您可以使用your own custom task或existing solution從AssemblyInfo文件中獲取版本編號。
這理論上可以在你的項目文件中完成(這只是一個MSBuild腳本),但我建議不要從開發人員機器部署。
我相信其他continuous integration(CI)解決方案可以類似地處理。
編輯:對不起,有你的問題倒退。從ClickOnce版本號到AssemblyInfo文件應該是可行的。我確信MSBuild社區任務(上面的鏈接)有更新AssemblyInfo文件的任務,所以您只需要一個自定義任務即可從ClickOnce配置XML中獲取版本號。
不過,您也可以考慮改變你的錯誤報告,包括ClickOnce的發佈版本太多:
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
Debug.WriteLine(System.Deployment.Application.ApplicationDeployment.
CurrentDeployment.CurrentVersion);
}
您可能需要創建一段代碼,根據存儲在.csproj文件中的版本號更新AssemblyInfo.cs。 (ClickOnce部署版本存儲在XML標記中。)
然後,您將在執行發佈|發佈構建時更改.csproj文件以運行此位代碼。 MSBuild人員已經在博客中介紹瞭如何在某些構建類型中執行自定義操作;檢查MSBuild team blog。
步驟:
- 使用外部遞增版本號(如果你利用諸如CruiseControl.NET持續集成服務器,那麼它來自內部版本標籤)。
- 使用GlobalVersionInfo.cs(由解決方案中所有項目引用的文件)來保存當前版本,並使用MSBuild Community任務中的AssemblyInfo任務對其進行更新。
- 腳本Mage從.NET SDK命令行工具來更新的ClickOnce清單中,使用相同的版本(見
-v
和-mv
開關)。
順便說一句,一個不錯的獎金是,每當你自動通過集成腳本發佈一個更新的ClickOnce部署版本,如果您還指定的最低版本mage.exe(同版),那麼每個用戶將在下次應用程序啓動時自動更新。
我實現了這個最近使用一些自定義任務。我發現用ClickOnce實現這個問題是所有的DLL文件都被更新了。這會導致ClickOnce更新在每次更新時下載所有應用程序文件。這繞過了ClickOnce部署的好處,其中只有修改後的文件在更新中被重新下載。
在ClickOnce中實現類似的東西時,需要思考一些問題。
- 1. 如何獲取發佈版本?
- 2. 對ClickOnce發佈版本使用Subversion版本?
- 3. ClickOnce禁止發佈Debug版本
- 4. 如何在發佈版本
- 5. 如何從gemspec文件獲取版本?
- 6. Dart版本控制 - 無匹配版本
- 7. 發送Java版本以文本文件
- 8. Winforms:獲取發佈版本號?
- 9. 獲取發佈XBAP版本在C#
- 10. 如何匹配Maven的groudId發佈版本
- 11. 獲取文本文件中的版本
- 12. Mercurial:獲取文件早期版本的非版本化副本
- 13. Asp.net發佈版本與調試版本
- 14. 發佈版本與大會(等)版本
- 15. 如何糾正psql版本和postgresql版本的不匹配?
- 16. 降級kubectl版本以匹配minikube k8s版本
- 17. qt/Mac:發佈版本的dSYM文件
- 18. 僅使用iPA文件發佈版本
- 19. 如何獲取css版本
- 20. 如何獲取bukkit版本?
- 21. XBAP:發佈版本中缺少文本
- 22. 不匹配的版本發現[email protected]
- 23. 以明文形式獲取文件版本的腳本
- 24. 發佈後獲取maven發佈版本:執行
- 25. 如何在MS發佈管理2013版本中恢復發佈版本?
- 26. 如何獲取文件的以前版本
- 27. 跨版本行匹配
- 28. 大會版本不匹配
- 29. MPICH2 smpd版本不匹配
- 30. TensorFlow protobuf版本不匹配