2012-09-05 90 views
1

我有,我想通過網絡部署軟件包7.5的服務器部署到IIS中的VS 2010 WCF服務解決方案。我希望在WCF服務項目構建時生成Web部署包。我已經看到了其他的例子,介紹如何通過導入用於web部署的MS Build目標到.csproj來構建Web部署打包。但我無法將自己的頭圍繞在我可能或不可能做到的事情上。創建一個網站webdeploy包時,解決方案建立

我希望我的Web部署包來完成以下任務在目標服務器上部署時:

  • 創建一個應用程序池在目標服務器上一個新網站的目標框架4.0,它使用網絡服務標識
  • 添加站點綁定到特定端口上啓用的net.tcp並啓用HTTP和的net.tcp prootocols
  • 下這個新的網站創建Web應用程序指向一個特定的文件系統文件夾
  • 運行.bat文件開始幾個net.tcp相關d服務來支持非http WCF激活

從我讀過的關於web部署的任何內容中,其中一些可以通過webdeploy清單文件和特定的提供程序來完成。我不理解的是告訴MS構建打包機制,以便通過提供者將其包含在清單和值中。我對Web部署相當陌生,任何幫助/指針解決這個將不勝感激。

回答

0

我採取的方法是使用的MSBuild建立包和MSDeploy將其部署到服務器。我用下面的命令行,在我的情況我使用巡航控制:

/p:Configuration=Release 
/p:MSDeployPublishMethod=WMSVC 
/p:DeployOnBuild=True 
/p:DeployTarget=Package 
/p:CreatePackageOnPublish=True 
/p:DeployIisAppPath=$(SolutionName)/$(ProjectName) 
/p:MsDeployServiceUrl=https://<servername>:8172/MsDeploy.axd 
/p:AllowUntrustedCertificate=True 
/p:username=<username> 
/p:password=<password> 
/p:EnablePackageProcessLoggingAndAssert=True 
/p:PackageLocation=$(WorkingMainDir)$(ProjectName)$(ProjectType)\Package\$(SolutionName).zip 
/p:IntermediateOutputPath=$(WorkingMainDir)$(ProjectName)$(ProjectType)\Temp\ 
/p:AutoParameterizationWebConfigConnectionStrings=true 
/p:UseWPP_CopyWebApplication=true 

然後我用msdeploy部署得到的包裝,下面的鏈接(接受答案)是一個很好的寫了關於如何做到這一點:

msdeploy (Web Deploy) failing with 401 auth issues

1

前三項可以用appHostConfig提供者,它應該包括如果你設置了IncludeIisSettingsUseIis特性既true完成。

最後一個項目可以通過runCommand提供商做到無論作爲您清單的一部分,或者通過preSync/postSync

WPP(上MSDeploy頂部的MSBuild的東西)有preSync/postSync不支持,但你可以包括runCommand提供商明確使用MsDeploySourceManifest

<!-- Create a WebProjectName.wpp.targets file in the root 
    of your web application (WebProjectName) 
--> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <PropertyGroup> 
    <AfterAddContentPathToSourceManifest> 
     $(AfterAddContentPathToSourceManifest); 
     AddPostSyncProviders 
    </AfterAddContentPathToSourceManifest> 
    </PropertyGroup> 

    <Target Name="AddPostSyncProviders"> 
    <MsDeploySourceManifest Include="runCommand"> 
     <Path>absolute path to exe on target machine</Path> 
    </MsDeploySourceManifest> 
    </Target> 
</Project> 

僅供參考 - runCommand只能執行上的絕對路徑目標機器as per this question

+0

感謝您在這個時候,我喜歡這個主意。但是,我想不同意使用_appHostConfig_創建網站。我已經嘗試過,如果站點不存在,MS Deploy總是失敗。 – siva

+0

我的工作方式是保持獨立。cmd文件,並通過xcopy在後期構建事件中將它們複製到包文件夾中。我在上述.cmd文件中有幾個appCmd命令來設置目標服務器上的應用程序池和站點。然後我從這個批處理文件啓動MS Deploy生成的.cmd文件來啓動MS Deploy進程。我知道這是醜陋的,但它只是工作:(。 – siva

+0

我收到一個錯誤:元素元素無法識別。 –

-2

嘗試過,但此後項目無法加載:元素<路徑> < MsDeploySourceManifest>無法識別。

+0

這個答案沒有幫助。 – smartmeta