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

Msbuild 在生成解决方案时创建网站webdeploy包,msbuild,msdeploy,webdeploy,msbuild-wpp,Msbuild,Msdeploy,Webdeploy,Msbuild Wpp,我有一个VS 2010 WCF服务解决方案,我想通过web部署包将其部署到IIS 7.5服务器。我希望在WCF服务项目构建时生成web部署包。我还看到了其他一些示例,这些示例演示了如何在生成后通过将MS build targets for web deploy导入到.csproj中来启动web deploy打包。但是我不能把我的头脑集中在我可能会或可能不会这样做的事情上 我希望我的web部署包在部署到目标服务器上时执行以下任务: 在目标服务器上创建一个新的网站,该网站具有使用网络服务标识的目标f

我有一个VS 2010 WCF服务解决方案,我想通过web部署包将其部署到IIS 7.5服务器。我希望在WCF服务项目构建时生成web部署包。我还看到了其他一些示例,这些示例演示了如何在生成后通过将MS build targets for web deploy导入到.csproj中来启动web deploy打包。但是我不能把我的头脑集中在我可能会或可能不会这样做的事情上

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

在目标服务器上创建一个新的网站,该网站具有使用网络服务标识的目标framework 4.0的应用程序池 添加站点绑定以在特定端口上启用net.tcp,并启用http和net.tcp prootocols 在此新网站下创建web应用程序,以指向特定的文件系统文件夹 运行.bat文件以启动两个与net.tcp相关的服务,以支持非http WCF激活
从我所读到的关于webdeploy的内容来看,其中一些可以通过webdeploy清单文件完成,包括特定的提供者。我不理解的是告诉MS build打包机制传递提供者以包含在清单和值中。我对Web deploy相当陌生,如果您能提供任何帮助或建议,我将不胜感激。

我采用的方法是使用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部署生成的包,下面的链接接受的答案是一篇关于如何实现这一点的好文章:


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

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

MSDeploy之上的MSBuild内容不支持预同步/后同步,但可以使用MsDeploySourceManifest显式包含runCommand提供程序:


仅供参考-runCommand只能在目标计算机上执行绝对路径

尝试过,但此后项目加载失败:下的元素无法识别。

感谢您花时间在这方面,我喜欢这个想法。但是,我不同意使用appHostConfig创建网站。我已经尝试过了,如果站点不存在,MS Deploy总是会失败。我解决这个问题的方法是在项目中保留一个单独的.cmd文件,并通过xcopy on post build事件将它们复制到包文件夹中。我在上面提到的.cmd文件中有两个appCmd命令,用于在目标服务器上设置应用程序池和站点。然后,我从这个批处理文件启动MS Deploy生成的.cmd文件,以启动MS Deploy过程。我知道这很难看,但它可以正常工作:。我收到一个错误:元素下的元素无法识别。这个答案没有帮助。
<!-- 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>