【问题标题】:ApplicationFiles folder missing when ClickOnce publish with command line使用命令行发布 ClickOnce 时缺少 ApplicationFiles 文件夹
【发布时间】:2017-08-08 15:17:14
【问题描述】:

使用 IDE 发布 ClickOnce 工作正常。

尝试通过 MSBuild 命令行发布时

%MSBUILD% /target:publish /p:Configuration=Release;PublishDir="REMOTE_FOLDER"

仅Project.exe 和Setup.exe 副本。

当尝试%MSBUILD% /target:publish 命令时,所有必要的文件都会复制到build\app.publish 文件夹

如何通过命令行发布与 IDE 相同的 ClickOnce 设置

PSthis问题相似但不一样

【问题讨论】:

    标签: visual-studio command-line msbuild clickonce


    【解决方案1】:

    如何通过命令行发布与 IDE 相同的 ClickOnce 设置

    某些功能由 Visual-Studio 完成,而不是由 MSBuild 命令行完成。因此,从命令行执行时,单击一次部署的行为会有所不同。

    如果您想通过命令行发布 IDE 使用的相同 ClickOnce 设置,您可以使用自定义目标来实现它。编辑你的project(csproj)文件(右键项目节点->卸载项目->编辑xxx.csproj)并在其中添加以下代码:

      <PropertyGroup>
        <ProjLocation>D:\Test\Projects\ClickOncePublish\ClickOncePublish</ProjLocation>
        <ProjLocationReleaseDir>$(ProjLocation)\bin\Debug</ProjLocationReleaseDir>
        <ProjPublishLocation>$(ProjLocationReleaseDir)\app.publish</ProjPublishLocation>
        <DeploymentFolder>D:\Test\Publish\</DeploymentFolder>
      </PropertyGroup>
    
    
      <Target Name="Test" DependsOnTargets="Clean">
    
        <MSBuild Projects="$(ProjLocation)\$(ProjectName).csproj"
            Properties="$(DefaultBuildProperties)"
            Targets="Publish"/>
    
        <ItemGroup>
          <SetupFiles Include="$(ProjPublishLocation)\*.*"/>
          <UpdateFiles Include="$(ProjPublishLocation)\Application Files\**\*.*"/>
        </ItemGroup>
    
    
        <Copy SourceFiles="@(SetupFiles)" DestinationFolder="$(DeploymentFolder)\" />
        <Copy SourceFiles="@(UpdateFiles)" DestinationFolder="$(DeploymentFolder)\Application Files\%(RecursiveDir)"/>
      </Target>
    
      <Target Name="Clean">
        <Message Text="Clean project" />
        <MSBuild Projects="$(ProjLocation)\$(ProjectName).csproj"
        Properties="$(DefaultBuildProperties)"
        Targets="Clean"/>
      </Target>
    

    然后就可以使用 MSBuild 命令行构建项目了:

    msbuild /target:test
    

    执行构建命令后,所有预期的文件都通过命令行发布,与 IDE 使用的 ClickOnce 设置相同。

    注意:您应该将ProjLocation 的值更改为您的项目的路径。

    【讨论】:

    • 谢谢!!!做得好。但必须删除``行,因为循环
    • 但是复制publish.htm文件怎么办
    • @EminHasanov,我在默认项目中没有 publish.htm 文件。但是你可以尝试指定一个命令行参数如下:/property:WebPage=publish.htm。将这些参数传递给 MSBUILD 后,它会将您的 publish.htm 移动到您的发布位置。codemonkeyking.blogspot.sg/2009/04/…。如果这对您没有帮助。你可以用一些详细信息打开新线程,我会尽力给你一个解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多