我添加了一个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" />
我尝试过的一些事情:
非常感谢任何帮助。
谢谢
-------------------------------- UPDATE -------------- ------------------
所以有几件事:
工作的构建机器在W7上,故障机器在W7和W8的混合物上。
事实证明,您可以排除deploymentProvider元素(ProjectProperties - &gt; Publish - &gt; Manifest - &gt; Exclude部署提供程序URL)。如果被排除,系统会在运行时尝试通过它自己解决(在大多数情况下这已足够)。
所以我在几台机器上测试了构建版本(一台完全干净的W7虚拟机,一台W7开发机器,W8.1开发机器),它们都生成了错误的deploymentProvider系列。
仍然对此问题的实际根本原因感到好奇,所以我不想将其标记为已回答。