2012-02-15 57 views
7

是否可以構建一個包含clickonce應用程序的web部署包,該應用程序可以使用標準webdeploy工具部署到Web服務器?創建clickonce webdeploy包

這裏將是理想的過程:

  1. 的MSBuild 「YourFullyQualifiedProjectName.csproj/vbproj」/ T:包裝
  2. OBJ \調試\包\ YourFullyQualifiedProjectName.deploy.cmd/Y

這背後的原因是我們可以構建包括Web包在內的整個解決方案,運行所有測試,然後在測試通過後部署。

我目前在做一個基於文件的部署到臨時文件夾,將其複製到一個web項目中,然後打包web項目。有沒有更好的解決方案?

+0

您是否想創建一個僅包含ClickOnce內容的Web Deploy包,或者是否希望將其包含到爲Web項目生成的Web Deploy包中(即解決方案中的一個不同項目是一個Web項目) ? – 2012-02-17 05:51:55

+0

只是我需要部署的ClickOnce內容。 – danielrbradley 2012-02-17 09:11:35

回答

9

我已經創造了這個博客在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\[email protected])</MSDeployPath> 
    <MSDeployPath Condition="'$(MSDeployPath)'==''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\[email protected])</MSDeployPath> 
    <MSDeployPath Condition="'$(MSDeployPath)'==''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\[email protected])</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來在輸出目錄中創建包。您應該能夠像使用任何其他軟件包一樣獲取該軟件包並進行發佈。

你可以試試看,讓我知道它是否適合你?

+0

這太棒了,謝謝你的非常完整的解決方案,非常感謝! – danielrbradley 2012-02-17 10:44:13

+1

+1我相信,如果被問到,Sayed能夠用msbuild製作特濃咖啡 – mCasamento 2013-01-15 17:45:47

+1

@mCasamento我希望我可以用MSBuild製作特濃咖啡。會救我一噸$$$ :) – 2013-01-15 18:47:28