我们正在升级到 vs2k12 和 .net 4.5,所以我正在完成我们的构建过程并让我们的 CI 服务器上的所有内容重新运行,但我遇到了一些困难。
以下是事情应该如何运作:
我们有一个包含两个 Web 项目的解决方案文件,在开发人员的机器上,这些是“就地”编译的(输出未重定向),IIS 指向相应的项目文件夹进行开发和测试,这部分很好。
在我们的构建机器上,我们需要将每个 Web 应用程序 (2) 的输出重定向到由我们的安装程序打包的单独文件夹中,这是我遇到困难的地方。发生的事情是其中一个 web 项目内容最终位于其他 web 项目文件夹中,覆盖了 Global.aspx 和 web.config 等文件,因为每个项目都有自己的。
我们曾经使用 web 部署项目来实现这一点,但它们现在已被弃用,所以我尝试使用 msbuild 的 web 发布机制/配置文件,但我基本上迷路了。
我试过这里提到的事情:
我一定遗漏了一些简单的东西,因为我要做的只是一个文件系统副本,没有花哨的 schmancy 发布到某个网络服务器的魔法。
目前,我正在从我的 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 中专门设置输出文件夹,但这也会改变在开发人员机器上编译时输出的位置,如果可能的话,我想避免这种情况,以使路径更简单/更少困惑/更干净.
最佳答案
所以我让一切正常,这是我现在调用 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 项目都会自动构建并部署到正确的文件夹中。
关于.net - 解决方案中的 msbuild 和多个 Web 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14265799/