我们正在升级到vs2k12和.net 4.5,所以我正在进行构建流程并在我们的CI服务器上重新使一切正常,但我遇到了一些困难。
以下是事情应该如何工作:
我们有一个解决方案文件,其中包含两个Web项目,在开发人员的机器上,这些项目被编译“就地”(输出未重定向),并且IIS指向各自的项目文件夹进行开发和测试,这部分很好。
在我们的构建机器上,我们需要将每个Web应用程序(2)的输出重定向到单独的文件夹中,以便由我们的安装程序打包,这就是我遇到困难的地方。正在发生的是,一个Web项目的内容最终会出现在另一个Web项目的文件夹中,覆盖像Global.aspx和web.config这样的文件,因为每个项目都有自己的文件。
我们曾经使用Web部署项目来完成此操作,但它们现在已被弃用,因此我正在尝试使用msbuild的Web发布机制/配置文件,但我基本上迷失了方向。
我尝试了这里提到的东西:
我需要在每个 Web 项目中做什么才能在从同一解决方案文件构建时使输出正确重定向?我考虑过只是在每个 csproj 中特定设置输出文件夹,但这也会改变开发人员机器上编译时输出的位置,如果可能的话,我想避免这种情况,以使路径更简单/不易混淆/更干净。
以下是事情应该如何工作:
我们有一个解决方案文件,其中包含两个Web项目,在开发人员的机器上,这些项目被编译“就地”(输出未重定向),并且IIS指向各自的项目文件夹进行开发和测试,这部分很好。
在我们的构建机器上,我们需要将每个Web应用程序(2)的输出重定向到单独的文件夹中,以便由我们的安装程序打包,这就是我遇到困难的地方。正在发生的是,一个Web项目的内容最终会出现在另一个Web项目的文件夹中,覆盖像Global.aspx和web.config这样的文件,因为每个项目都有自己的文件。
我们曾经使用Web部署项目来完成此操作,但它们现在已被弃用,因此我正在尝试使用msbuild的Web发布机制/配置文件,但我基本上迷失了方向。
我尝试了这里提到的东西:
- http://vishaljoshi.blogspot.ca/2010/11/team-build-web-deployment-web-deploy-vs.html(团队构建Web部署:Web Deploy vs. MSBuild)
我可能错过了一些简单的东西,因为我只是想进行文件系统复制,没有什么花哨的发布到某个Web服务器的魔法。
目前,我正在从我的nant构建脚本中调用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 中特定设置输出文件夹,但这也会改变开发人员机器上编译时输出的位置,如果可能的话,我想避免这种情况,以使路径更简单/不易混淆/更干净。