我怎么ClickOnce发布的版本相匹配的程序集信息.cs文件的版本吗?
-
09-06-2019 - |
题
每次我发布应用在 ClickOnce 我得让它更新修订数的一个。有没有办法获得这种变化自动更改的版本号程序集信息.cs文件(我们所有的错误报告看起来在大会本)?
解决方案
我们用团队的基础服务器的团队建造并加入一个方框,以TFSBuild.proj的 AfterCompile
目标以触发ClickOnce发布与我们的首选版本的编号:
<MSBuild Projects="$(SolutionRoot)\MyProject\Myproject.csproj"
Properties="PublishDir=$(OutDir)\myProjectPublish\;
ApplicationVersion=$(PublishApplicationVersion);
Configuration=$(Configuration);Platform=$(Platform)"
Targets="Publish" />
的 PublishApplicationVersion
变量是产生一个定义MSBuild任务使用的TFS集的数量,但可以使用 你自己定义的任务 或 现有的解决方案 得到版本数从程序集信息的文件。
这在理论上可以做你的项目文件(该文件只是一个MSBuild脚本,无论如何),但是我建议对部署从一开发机。
我敢肯定其他的 连续的一体化 (CI)的解决方案可以处理此类似。
编辑: 对不起,得到了你的问题倒退。从ClickOnce版本号程序集信息的文件应该是可行的。我敢肯定,请参阅社会的任务(上面的链接)有一个任务更新的程序集信息的文件,所以你只是需要一个定义的任务,拉版本的数量从ClickOnce配置XML。
但是,你也可以考虑更改你的错误报告,包括ClickOnce发布的版本:
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
Debug.WriteLine(System.Deployment.Application.ApplicationDeployment.
CurrentDeployment.CurrentVersion);
}
其他提示
我实施这种最近使用的一些定义的任务。一个问题,我找到了与执行这与ClickOnce是你所有的等文件更新。这导致ClickOnce更新下载所有申请文件的每一次更新。此绕过上不错的功能的ClickOnce部署在那里仅仅修改文件是重新下载一个更新。
只是一些思考在实现这样的事情与ClickOnce.
步骤:
- 使用外部递增的版本号(如果你利用一个连续的一体化服务器喜欢CruiseControl.NET然后它来自于建立标签)。
- 使用GlobalVersionInfo.cs(文件的链接引用由所有项目在解决方案),以保持目前的版本,并更新的建立与程序集信息的任务从 MSBuild社会 任务。
- 脚本 魔法师 命令行工具。NET开发工具包来更新ClickOnce清单,使用同一版本(见的
-v
和-mv
开关)。
顺便说一句,一个很好的好处是,只要你自动发布新ClickOnce部署版本通过的一体化脚本,如果你还指定最小的版本mage.exe (同的版本),然后每一个用户将自动更新在未来的应用程序推出。
你可能会需要创建一块代码的更新程序集信息.cs根据版本数量存在。csproj文件。(ClickOnce部署的版本是内部保存的XML标记。)
你会再改变你的.csproj文件,以运行,这些代码时发布|释放的建立是执行。请参阅人有博客有关如何执行定义的行动在某些建立的类型;检查 MSBuild队的博客.