每次我发布应用在 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.

步骤:

  1. 使用外部递增的版本号(如果你利用一个连续的一体化服务器喜欢CruiseControl.NET然后它来自于建立标签)。
  2. 使用GlobalVersionInfo.cs(文件的链接引用由所有项目在解决方案),以保持目前的版本,并更新的建立与程序集信息的任务从 MSBuild社会 任务。
  3. 脚本 魔法师 命令行工具。NET开发工具包来更新ClickOnce清单,使用同一版本(见的 -v-mv 开关)。

顺便说一句,一个很好的好处是,只要你自动发布新ClickOnce部署版本通过的一体化脚本,如果你还指定最小的版本mage.exe (同的版本),然后每一个用户将自动更新在未来的应用程序推出。

你可能会需要创建一块代码的更新程序集信息.cs根据版本数量存在。csproj文件。(ClickOnce部署的版本是内部保存的XML标记。)

你会再改变你的.csproj文件,以运行,这些代码时发布|释放的建立是执行。请参阅人有博客有关如何执行定义的行动在某些建立的类型;检查 MSBuild队的博客.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top