2013-01-10 171 views
3

我们正在升级到vs2k12和.net 4.5,所以我正在完成构建过程,并再次在我们的CI服务器上运行,但我正在有些困难。msbuild和解决方案中的多个web项目

这里的东西是如何工作的:

我们有带有两个网络项目的解决方案文件,开发商的机器上,这些都是“到位”编译(输出没有被重定向)和IIS指向各自的项目文件夹进行开发和测试,这部分是好的。

在我们的构建机器上,我们需要将每个Web应用程序(2)的输出重定向到单独的文件夹中,由我们的安装程序打包,这是我遇到困难的地方。发生什么事是其中一个Web项目内容在其他Web项目文件夹内结束,覆盖像Global.aspx和web.config这样的文件,因为每个项目都有自己的。我们曾经使用web部署项目来完成这个任务,但现在已经不推荐使用了,所以我试图使用msbuild的web发布机制/配置文件,但是我基本上输了。

我试过这里提到的东西:

我必须错过简单的东西,因为我所要做的只是一个文件系统副本,没有花哨的schmancy发布到某些web服务器的魔法。

此刻,我从我的恶性生成脚本调用的SLN文件的MSBuild这样的:

<msbuild project="${root.dir}\WebPortal\WebPortal ExtJS\WebPortal ExtJS.sln" verbosity="${tools.dotnet.msbuild.verbosity}"> 
    <property name="Configuration" value="${msbuild.configuration}" /> 
    <property name="OutputPath" value="${project.builddir}" /> 
    <property name="DeployOnBuild" value="true" /> 
    <property name="DeployTarget" value="PipelinePreDeployCopyAllFilesToOneFolder " /> 
    <property name="WebPublishMethod" value="FileSystem" /> 
    <property name="publishUrl" value="${project.builddir}" /> 
    <property name="DeleteExistingFiles" value="true" /> 
    <property name="DebugSymbols" value="${msbuild.debugSymbols}" /> 
    <property name="DebugType" value="${msbuild.debugType}" /> 
</msbuild> 

什么我需要做的,我的每一个web项目中获得的输出重定向从相同的解决方案文件构建时是否正确?我曾想过只是在每个csproj中设置输出文件夹,但是这也会改变在开发人员机器上编译输出时的输出文件夹的位置,我希望尽可能避免使路径更简单/不易混淆/更简洁。

+0

这些web应用程序项目或网站“项目”?您是否愿意让Visual Studio为您打包项目,还是您需要使用现有的安装程序技术? –

+0

他们是Web应用程序项目(如果重要的话,其中一个是WCF服务应用程序)。我想我愿意让视觉工作室把它们打包,只要它像标准的zip文件一样。我该如何去做到这一点? – Joe

+0

深夜为我找到所有的好链接,但在http://iis.net网站上查找MSDEPLOY。如果您使用'/ p:DeployOnBuild = true'运行MSBUILD,那么它将为您的每个站点创建MSDEPLOY包。这些可以部署到任何IIS站点,或者实际上可以直接导入到IIS中。 –

回答

4

所以我得到的一切工作,这里就是我我打电话的MSBuild现在:我创建

<msbuild project="${root.dir}\WebPortal\WebPortal ExtJS\WebPortal ExtJS.sln" 
       verbosity="${tools.dotnet.msbuild.verbosity}"> 
      <property name="Configuration" value="${msbuild.configuration}" /> 
      <property name="DeployDir" value="..\..\${output.dir}" /> 
      <property name="DeployOnBuild" value="true" /> 
      <property name="PublishProfile" value="BuildMachineDeployment" /> 
      <property name="DebugSymbols" value="${msbuild.debugSymbols}" /> 
      <property name="DebugType" value="${msbuild.debugType}" /> 
      <arg value="/m" /> 
     </msbuild> 

然后我的部署配置文件的.pubxml文件里面我将此属性设置为使用$(DeployDir)变量:

<publishUrl>$(DeployDir)\EmerGeo Portal</publishUrl> 

现在我解决方案中的所有Web项目都会自动构建并部署到正确的文件夹。

相关问题