【问题标题】:How to publish web project to specific local folder via TeamBuild and MSBuild如何通过 TeamBuild 和 MSBuild 将 Web 项目发布到特定的本地文件夹
【发布时间】:2012-05-24 10:57:00
【问题描述】:
我一直在寻找解决这个问题的方法 - 但找不到合适的解决方案。
我有一个 C# .NET 解决方案,其中包含大约 16 个项目,并希望通过 TeamBuild 和 MSBuild 每晚构建它。
其中两个项目是 Web 项目,应该在构建解决方案或项目后发布 - 但问题是:它应该在其正常输出路径中编译,并发布到本地文件系统上的特定文件夹。在 Visual Studio 中,这没问题 - 我单击本地文件系统上的发布,项目发布正常。
我已经找到了一些 MSbuild 选项,例如 DelpoyOnBuild 等,但所有示例仅适用于 IIS WebServer 上的发布 - 但在这种情况下我不想使用 IIS。是否可以在 Build 之后让 MSBuild 将 Web 项目发布/部署到指定的本地文件夹?
最好的问候
塞巴斯蒂安
【问题讨论】:
标签:
msbuild
web
local
publish
tfsbuild
【解决方案1】:
是的,但是您必须稍微调整一下您的流程模板。一个单独的进程可以使用放置文件夹中的文件来处理发布部分。然后,您可以使用任何您喜欢的工具,通过 InvokeProcess 活动,或开发自己的自定义活动来处理它。
此过程是标准构建过程的一部分还是在单独的模板/构建定义中取决于您希望如何执行它。
我们使用Community TFS Build Extensions,通过这些额外的活动,我们可以使用InvokeBuild 开始其他构建,例如在另一个构建结束时。通过传递当前构建的 Uri,然后使用它们的 GetBuildDetail,任何构建都可以知道其前身并可以访问其所有详细信息(例如 DropFolder)。
【解决方案2】:
我现在使用构建后事件或调用 msbuild.exe 的简单命令文件来执行此操作。 msbuild 是带参数的 startet,以便它部署 Web 服务。这是我的命令:
MSBuild.exe /target:Build;PipelinePreDeployCopyAllFilesToOneFolder /p:Configuration=Release;_PackageTempDir=%binfolder% "projectfile.csproj"