.net - 创建 clickonce webdeploy 包

标签 .net msbuild clickonce msdeploy webdeploy

是否可以构建包含可使用标准 webdeploy 工具部署到 Web 服务器的 clickonce 应用程序的 Web 部署包?

这将是理想的过程:

  • MSBuild "YourFullyQualifiedProjectName.csproj/vbproj"/T:Package
  • obj\Debug\Package\YourFullyQualifiedProjectName.deploy.cmd/Y

  • 这背后的原因是我们可以构建包括 web 包在内的整个解决方案,运行所有测试,然后仅在测试通过后部署。

    我目前正在考虑对临时文件夹进行基于文件的部署,将其复制到 Web 项目中,然后打包 Web 项目。有更简洁的解决方案吗?

    最佳答案

    我为此创建了一个博客 http://sedodream.com/2012/02/18/HowToCreateAWebDeployPackageWhenPublishingAClickOnceProject.aspx其中有更多细节,但相关部分如下

    如果您有一个要从中创建 ClickOnce 包的客户端项目,则可以尝试以下操作。

    编辑您的客户端项目的项目文件,并在底部(在 </Project> 标签正上方)添加以下内容。

      <PropertyGroup>
        <!--Unless specified otherwise, the tools will go to HKLM\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\1 to get the installpath for msdeploy.exe.-->
        <MSDeployPath Condition="'$(MSDeployPath)'==''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\3@InstallPath)</MSDeployPath>
        <MSDeployPath Condition="'$(MSDeployPath)'==''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\2@InstallPath)</MSDeployPath>
        <MSDeployPath Condition="'$(MSDeployPath)'==''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\1@InstallPath)</MSDeployPath>
        <MSDeployExe Condition=" '$(MSDeployExe)'=='' ">$(MSDeployPath)msdeploy.exe</MSDeployExe>
      </PropertyGroup>
    
      <Target Name="CreateWebDeployPackage" AfterTargets="Publish" DependsOnTargets="Publish">
        <!--
        %msdeploy% 
          -verb:sync 
          -source:contentPath="C:\Temp\_NET\WebPackageWithClickOnce\WebPackageWithClickOnce\bin\Debug\app.publish" 
          -dest:package="C:\Temp\_NET\WebPackageWithClickOnce\WebPackageWithClickOnce\bin\Debug\co-pkg.zip"
          -->
        <PropertyGroup>
          <Cmd>"$(MSDeployExe)" -verb:sync -source:contentPath="$(MSBuildProjectDirectory)\$(PublishDir)" -dest:package="$(OutDir)cotest.zip"</Cmd>
        </PropertyGroup>
    
        <Message Text="Creating web deploy package with command: $(Cmd)" />
        <Exec Command="$(Cmd)" />
      </Target>
    

    在 PropertyGroup 我是:
  • 声明 web 部署包的名称
  • 试图查看 MSDeploy 的安装位置

  • 之后定义了 CreateWebDeployPackage,它将在 PublishOnly 目标之后执行(因为 AfterTargets="PublishOnly")。该目标将调用 msdeploy.exe 以在输出目录中创建包。您应该能够像发布任何其他包一样获取该包并发布它。

    你能试试吗,让我知道它是否适合你?

    关于.net - 创建 clickonce webdeploy 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9292986/

    相关文章:

    visual-studio-2010 - 如何更改 VS2010 中的构建文件夹?

    visual-studio - Visual Studio 2019 - 错误 MSB8020 : The build tools for Visual Studio 2013 cannot be found

    c# - 如何签署 ClickOnce 应用程序

    c# - 使用 XML 作为数据存储的自定义提供程序——我应该使用 XPath/XSLT 还是 DOM?

    .net - 如何:生成UnhandledException?

    c# - 如何使用采用 XDocument 的构造函数将 XML 反序列化为对象?

    .net - Delegate.EndInvoke() 真的有必要吗?

    msbuild - 我在哪里可以获得项目文件中所有可用属性的列表?

    c# - OpenWebKitSharp 并点击一次?

    c# - ClickOnce 发送参数不起作用