1

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

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

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

从我读过的关于 web 部署的任何内容来看,其中一些可以通过 webdeploy 清单文件完成,包括特定的提供程序。我不明白的是告诉 MS 构建打包机制传递提供程序以包含在清单和值中。我对 Web 部署相当陌生,任何解决此问题的帮助/指针将不胜感激。

4

3 回答 3

1

前三项可以使用提供程序完成,如果您将和属性都appHostConfig设置为 ,则应该包含它。IncludeIisSettingsUseIistrue

最后一项可以通过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,只能在目标机器上执行绝对路径。

于 2012-09-25T06:00:13.797 回答
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 部署)因 401 身份验证问题而失败

于 2012-09-10T13:10:30.687 回答
-2

尝试过,但此后项目无法加载: < MsDeploySourceManifest > 下面的元素 < Path > 无法识别。

于 2013-09-13T16:49:42.737 回答