2012-09-05 93 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