VS2012 - 同步项目属性和ClickOnce内部版本号

时间:2012-11-20 17:45:42

标签: visual-studio-2012 clickonce .net-assembly version-numbering

使用Publish for ClickOnce应用程序会自动增加构建版本号。此版本号与项目属性中的程序集版本不同(后者又会自动显示在生成的WPF框中)。

有没有办法在装配属性中同步ClickOnce版本号和项目编号?目标是为两个地方获得自动增加且相同的版本号。

Version number for ClickOnce / Publish

Project properties

1 个答案:

答案 0 :(得分:1)

没有自动(内置)方式来执行此操作。我在项目中使用的一种可能的解决方法是使用自定义的msbuild任务生成发布和汇编版本信息。

一些可用作nuget包的项目旨在解决这些问题,但没有什么非常完整的。请查看SemVerHarvesterCroMagVersion ...

以上都有很多问题:

  1. SemVerHarvester绑定到git / hg并从git标记中获取版本信息
  2. 它实际上并不是自己编写AssemblyInfo.cs文件,而是依赖于Msbuild社区任务
  3. AssemblyInfo.cs文件始终处于“触摸”状态,这意味着每次重建都是完全重建而不是增量重建。 CroMagVersion部分解决了这个问题 - 它在发布版本中定义了#define,并且只有在存在此定义的情况下才会重新生成AssemblyInfo.c ...
  4. 两个项目都没有直接设置ClickOnce系统用于发布的ApplicationVersion / ApplicationRevision属性
  5. 我已经为上述所有内容提供了解决方法,我打算很快在github上开源...同时我会说明我做过的事情:

    我做了一个自定义的msbuild任务,它从git读取版本信息,然后根据这些信息创建一个内存中的AssemblyInfo文件。我检查现有的AssemblyInfo.cs文件(即具有AssemblyVersion和其他属性的文件),并且当且仅当内存版本更新时才覆盖它。这允许增量重建。最后,我还输出ApplicationVersion,ApplicationRevision和其他属性来支持ClickOnce。

    如果我将我的解决方案作为一个独立的解决方案进行开源,我可能会允许从文本文件,git,hg等中获取版本信息

    问题我还没有找到好的解决方案:

    ClickOnce不直接支持多个发布渠道 - 比如debug / beta / custom_feature /无论是什么让我想知道我是否应该放弃clickonce并使用Shimmer代替。