使用错误的PublishUrl生成的ClickOnce myApp.application

时间:2015-07-07 10:13:42

标签: tfs msbuild clickonce

我添加了一个MSBuild目标来更新PublishUrl,然后调用'Publish'目标,传递新值。这使我可以构建多个分支并将相应的ClickOnce应用程序放在分支特定的共享位置。

<PropertyGroup>
    <PublishUrl >\\someNetworkShare\</PublishUrl>
</PropertyGroup>
<Target Name="PublishClickOnce">
    <PublishUrl>$(PublishUrl)$(BranchName)\</PublishUrl>
    <MSBuild Projects="$(ProjectPath)" Properties="PublishUrl=$(PublishUrl); PublishDir=$(PublishUrl); Platform=AnyCPU" Targets="Publish" />
</Target>

问题是这在我的一台构建机器上不起作用。它在2个中完全正常,但不是第3个。

查看myApp.application文件,我可以看到deploymentProvider代码库指向未更改的PublishedUrl(但在调用'Publish'目标时已更新:

<deploymentProvider codebase="file://someNetworkShare/myApp.application" />

以上应该是:

<deploymentProvider codebase="file://someNetworkShare/branchName/myApp.application" />

我尝试过的一些事情:

  1. 更新'InstallUrl'以匹配'PublishUrl'
  2. 添加日志记录以确保在调用“发布”目标之前更新了“PublishUrl”。
  3. 为'PublishUrl'添加条件,仅在其为空时更新
  4. 非常感谢任何帮助。

    谢谢

    -------------------------------- UPDATE -------------- ------------------

    所以有几件事:

    1. 工作的构建机器在W7上,故障机器在W7和W8的混合物上。

    2. 事实证明,您可以排除deploymentProvider元素(ProjectProperties - &gt; Publish - &gt; Manifest - &gt; Exclude部署提供程序URL)。如果被排除,系统会在运行时尝试通过它自己解决(在大多数情况下这已足够)。

    3. 所以我在几台机器上测试了构建版本(一台完全干净的W7虚拟机,一台W7开发机器,W8.1开发机器),它们都生成了错误的deploymentProvider系列。

      仍然对此问题的实际根本原因感到好奇,所以我不想将其标记为已回答。

0 个答案:

没有答案