每次我发布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版本不匹配