如何获得ClickOnce Publish版本以匹配AssemblyInfo.cs文件版本?

Kri*_*son 30 versioning clickonce visual-studio

每次我在ClickOnce中发布应用程序时,我都会让它将修订版号更新一次.有没有办法自动更改AssemblyInfo.cs文件中的版本号(我们所有的错误报告都在查看汇编版本)?

Jas*_*ome 31

我们使用Team Foundation Server Team Build并向TFSBuild.proj的AfterCompile目标添加了一个块,以使用我们的首选版本号触发ClickOnce发布:

<MSBuild Projects="$(SolutionRoot)\MyProject\Myproject.csproj"
         Properties="PublishDir=$(OutDir)\myProjectPublish\;
                     ApplicationVersion=$(PublishApplicationVersion);
                     Configuration=$(Configuration);Platform=$(Platform)"
         Targets="Publish" />
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

我最近使用一些自定义任务实现了这一点。我在使用 ClickOnce 实现此操作时发现的一个问题是所有 DLL 文件都会更新。这会导致 ClickOnce 更新在每次更新时下载所有应用程序文件。这绕过了 ClickOnce 部署的一个很好的功能,即在更新中仅重新下载修改过的文件。

使用 ClickOnce 实现类似的操作时需要考虑一些事情。