在生成解决方案时创建网站webdeploy包



我有一个VS 2010 WCF服务解决方案,我想通过web部署包将其部署到IIS 7.5服务器。我希望在WCF服务项目构建时生成web部署包。我已经看到了其他例子,说明如何通过将web部署的MS build目标导入.csproj来在构建后启动web部署打包。但我无法理解我可能无法或无法这样做的事情。

我希望我的web部署包在部署到目标服务器上时能完成以下任务:

  • 在目标服务器上创建一个新网站,该网站具有到使用网络服务标识的目标框架4.0的应用程序池
  • 添加站点绑定以在特定端口上启用net.tcp,并启用http和net.tcp prootocols
  • 在此新网站下创建web应用程序以指向特定的文件系统文件夹
  • 运行.bat文件启动两个与net.tcp相关的服务,以支持非http WCF激活

从我读到的关于web部署的任何内容来看,其中一些可以通过webdeploy清单文件完成,并包括特定的提供者。我不理解的是告诉MS构建打包机制传递要包含在清单和值中的提供程序。我是Web部署的新手,如果能提供任何帮助/建议来解决这个问题,我将不胜感激。

前三项可以使用appHostConfig提供程序完成,如果将IncludeIisSettingsUseIis属性都设置为true,则应包括该提供程序。

最后一项可以通过runCommand提供程序作为清单的一部分或通过preSync/postSync完成。

WPP(MSDeploy之上的MSBuild内容)不支持preSync/postSync,但可以使用MsDeploySourceManifest:显式包含runCommand提供程序

<!-- 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只能在目标机器上执行绝对路径。

我采用的方法是使用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)失败,出现401个身份验证问题

尝试过,但此后项目加载失败:元素<路径>下方<MsDeploySourceManifest>无法识别。

最新更新