MSBuild没有生成发布Web页面(ClickOnce)

14

我遇到了一个问题,当我通过MSBuild(4.0)发布ClickOnce应用程序时,在app.publish文件夹中没有创建publish.htm(或default.htm)。

在Visual Studio中发布时,它会被创建...

在我的.csproj文件中,我设置了以下属性,但仍然无法正常工作...

<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
<WebPage>default.htm</WebPage>
任何想法吗?

谢谢

http://codemonkeyking.blogspot.com/2009/04/nantmsbuild-clickonce-publishing.html 这是某人声称的解决方案,但后来发现并不是。 - Hany Hassan
2个回答

3
我在这里找到了一个很好的解决方案您可以使用具有{VERSION}占位符的publish.htm模板。MSBuild Community Tasks需要FileUpdate任务。 BUILD_VERSION是由我的构建脚本设置的环境变量。 PublishDir属性在msbuild的参数中设置。
  <!-- .... -->

  <Target Name="DoPublish">
    <MSBuild Projects="$(ProjectFileName)" Targets="Publish" Properties="ApplicationVersion=$(BUILD_VERSION)" />
    <!-- Write publish.htm file for ClickOnce -->
    <Copy SourceFiles="$(ProjectDir)\publish.htm" DestinationFiles="$(PublishDir)\publish.htm"/>
    <FileUpdate Files="$(PublishDir)\publish.htm"
                IgnoreCase="true"
                Multiline="true" 
                Singleline="false"
                Regex="{VERSION}" 
                ReplacementText="$(BUILD_VERSION)"/>
  </Target>

</Project>

我会在我的下一个项目中进行测试,但它看起来是一个非常好的解决方案。谢谢。 - Andrey
你好。这是否意味着在管道中的每个部署都必须手动指定BUILD_VERSION的值,并手动递增? - esmehsnj
是的,Visual Studio 不控制它。应该指定环境变量。我会像 GitVersion 项目一样通过 Git 标签自动计算它。 - Der_Meister

2

我正在使用Visual Studio 2015,但遇到了与您相似的问题。解决方法是在Visual Studio中打开项目文件的属性 > 进入“发布”设置,在右侧窗格中点击选项...。这将打开“发布选项”对话框。选择“部署”,如果您看到“部署网页”为空(我的就是),则输入“publish.htm”。然后,您应该能够勾选“每次发布后自动生成部署网页”(您需要勾选此项)。点击确定关闭对话框,然后重新发布。您的“publish.htm”文件现在应该出现了。


4
它只适用于通过 Visual Studio 发布。但如果您使用命令行,它将无法工作。 - Alexander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接