在构建解决方案时创建Web站点webdeploy包

时间:2012-09-05 16:27:23

标签: msbuild msdeploy webdeploy msbuild-wpp

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

我希望我的Web部署包在目标服务器上部署时执行以下任务:

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

从我读过的有关Web部署的内容中,其中一些可以通过webdeploy清单文件完成,并包括特定的提供程序。我不理解的是告诉MS构建打包机制传递提供程序以包含在清单和值中。我对Web部署相当新,任何帮助/指针解决这个问题都将非常感激。

3 个答案:

答案 0 :(得分: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上执行绝对路径。

答案 1 :(得分: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

答案 2 :(得分:-2)

尝试过,但项目之后无法加载:元素&lt;路径&gt;低于&lt; MsDeploySourceManifest&gt;未被承认。