5

我们有一个使用 ClickOnce 部署的 Outlook 加载项。

开发人员签入构建后,PC 将构建排队并将应用程序发布到共享驱动器上的某个位置。

问题是构建不会将发布版本更改为当前的程序集版本,因此它会在以前版本的文件夹中发布,这会导致安装程序损坏,说无法安装该版本。

我读过那篇文章。我设置了[程序集:AssemblyVersion("1.0.*")]。依然没有。

<ApplicationVersion></ApplicationVersion>我想出了一种通过增加*.csproj 文件中的来解决这个问题的方法。但我希望它是自动化的。

另一种解决方法是在执行 msbuild.exe 时:

/target:publish   /property:PublishDir="\\sharedDir\\" /property:GenerateManifests=true
/property:ApplicationVersion=1.0.0.123

而且它仍然不是自动化的。我真的很想将当前版本号传递给 msbuild.exe 或在每个版本中将值替换<ApplicationVersion></ApplicationVersion>为实际版本号。还是有其他方法?

4

2 回答 2

6

我遇到了同样的问题,这就是我来到这里的方式。我能够使用您问题中的代码作为基础来解决。以下是使用 TFS 解决的步骤。

打开您的构建模板并打开工作流底部的参数选项卡。找到 MSBuildArguments 并修改默认值。以下是我最终得到的结果:

// Note: You can use /p for /property and /t for /target

"/t:Publish /p:PublishDir=<PublishDirectory> /p:ApplicationVersion="
    + Date.Today.ToString("yyyy") + "."
    + Date.Today.ToString("MMdd") + "."
    + Date.Now.Hour.ToString() + "."
    + Date.Now.Minute.ToString()

当然,现在您需要保存并签入新的构建文件。我在让构建定义使用新值时遇到问题,所以我刚刚创建了一个新的构建定义。

这将创建一个新的应用程序文件夹,如:

<ApplicationName>_2013_0315_09_55

我知道这是对旧帖子的新答案,所以我相信您已经找到了另一个解决方案,但我希望这可以帮助任何想要将 ClickOnce 部署与 TFS 一起使用的人。

于 2013-03-15T13:57:39.753 回答
0

我使用Hudson作为构建服务器并使用MSBuild进行构建。Hudson 使用内部版本号设置环境变量。然后,我将该环境变量作为命令行参数传递给我编写的程序,该程序解析assemlyinfo.cs文件并更新程序集版本、文件版本和程序集信息版本。

另一种方法是创建自定义任务而不是可执行文件来执行此操作(现在更容易,因为它现在支持内联任务)。以前版本的TFS在设置环境变量时做了类似的事情,但它可能在 TFS 2010 中发生了变化。

以下是可以帮助您的资源:

此外,我们正在使用Mage命令行来创建ClickOnce应用程序和部署清单。我们将 Mage 称为ExecMSBuild 项目中的任务。

于 2012-05-08T02:53:04.433 回答