每次我在ClickOnce中发布应用程序时,我都可以使其自动更新修订号。是否有一种方法可以自动更改AssemblyInfo.cs文件中的版本号(我们所有的错误报告都查看程序集版本)?
AfterCompile
目标中添加了一个区块,以使用我们的首选版本号触发ClickOnce发布:<MSBuild Projects="$(SolutionRoot)\MyProject\Myproject.csproj"
Properties="PublishDir=$(OutDir)\myProjectPublish\;
ApplicationVersion=$(PublishApplicationVersion);
Configuration=$(Configuration);Platform=$(Platform)"
Targets="Publish" />
PublishApplicationVersion
变量由自定义MSBuild任务生成,用于使用TFS更改集编号,但您可以使用自己的自定义任务或现有解决方案从AssemblyInfo文件获取版本号。尽管您在项目文件中理论上可以这样做(它只是一个MSBuild脚本),但我建议不要从开发人员机器部署。
我相信其他持续集成(CI)解决方案也可以类似地处理此问题。
编辑:抱歉,我把你的问题搞反了。从ClickOnce版本号到AssemblyInfo文件应该是可行的。我确信MSBuild社区任务(上面的链接)有一个任务用于更新AssemblyInfo文件,因此您只需要一个自定义任务来从ClickOnce配置XML中提取版本号。
但是,您还可以考虑更改错误报告以包括ClickOnce发布版本:
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
Debug.WriteLine(System.Deployment.Application.ApplicationDeployment.
CurrentDeployment.CurrentVersion);
}
-v
和-mv
开关)。你可能需要创建一段代码,根据.csproj文件中存储的版本号更新AssemblyInfo.cs。(ClickOnce部署版本存储在XML标记内。)
然后,当执行发布|发布版本构建时,你需要更改.csproj文件以运行此代码片段。MSBuild团队已经在博客中介绍了如何在某些构建类型期间执行自定义操作;请查看MSBuild team blog。