ClickOnce 应用程序的发布会自动增加构建/版本号。此版本号与项目属性中的程序集版本不同(后者又会自动显示在生成的 WPF 关于框中)。
有没有办法在程序集属性中同步 ClickOnce 版本号和项目号?目标是为两个地方获得一个自动增加且相同的版本号。
ClickOnce 应用程序的发布会自动增加构建/版本号。此版本号与项目属性中的程序集版本不同(后者又会自动显示在生成的 WPF 关于框中)。
有没有办法在程序集属性中同步 ClickOnce 版本号和项目号?目标是为两个地方获得一个自动增加且相同的版本号。
没有自动(内置)方法可以做到这一点。我在项目中使用的一种可能的解决方法是使用自定义 msbuild 任务生成发布和程序集版本信息。
一些作为 nuget 包可用的项目旨在解决这些问题,但那里没有什么非常完整的。看看SemVerHarvester和CroMagVersion ...
以上两种都有很多问题:
我已经为上述所有方法提供了解决方法,我打算很快在 github 上开源......同时我将描述我所做的事情:
我做了一个自定义的 msbuild 任务,它从 git 读取版本信息,然后根据这些信息创建一个内存中的 AssemblyInfo 文件。我检查现有的 AssemblyInfo.cs 文件(即具有 AssemblyVersion 和其他属性的文件),当且仅当内存中的版本较新时才覆盖它。这允许增量重建。最后,我还输出了 ApplicationVersion、ApplicationRevision 和其他属性以支持 ClickOnce。
如果我将我的解决方法开源作为一个独立的解决方案,我可能会允许从文本文件、git、hg 等中获取版本信息
我仍然没有找到好的解决方案的问题:
ClickOnce 不直接支持多个发布渠道——比如 debug/beta/custom_feature/whatever,这让我想知道我是否应该放弃 clickonce 并改用Shimmer。