如何通过TeamBuild和MSBuild将web项目发布到特定的本地文件夹

如何通过TeamBuild和MSBuild将web项目发布到特定的本地文件夹,msbuild,web,local,publish,tfsbuild,Msbuild,Web,Local,Publish,Tfsbuild,为了解决这个问题,我一直在四处寻找,但找不到合适的解决方案。 我有一个C.NET解决方案,其中包含大约16个项目,希望通过TeamBuild和MSBuild每晚构建它。 其中两个项目是web项目,应该在构建解决方案或项目后发布,但问题是:它应该在其正常输出路径中编译,并发布到本地文件系统上的特定文件夹中。在VisualStudio中,这没有问题-我单击“在本地文件系统上发布”,项目就可以发布了 我已经找到了一些MSbuild选项,如DelpoyOnBuild等,但所有示例都只适用于IIS Web

为了解决这个问题,我一直在四处寻找,但找不到合适的解决方案。 我有一个C.NET解决方案,其中包含大约16个项目,希望通过TeamBuild和MSBuild每晚构建它。 其中两个项目是web项目,应该在构建解决方案或项目后发布,但问题是:它应该在其正常输出路径中编译,并发布到本地文件系统上的特定文件夹中。在VisualStudio中,这没有问题-我单击“在本地文件系统上发布”,项目就可以发布了

我已经找到了一些MSbuild选项,如DelpoyOnBuild等,但所有示例都只适用于IIS Web服务器上的发布-但在这种情况下我不想使用IIS。是否可以在生成后使MSBuild将web项目发布/部署到指定的本地文件夹

致意
Sebastian

是的,但您必须稍微调整您的流程模板。单独的进程可以使用drop文件夹中的文件处理发布部分。然后,您可以在InvokeProcess活动中使用任何您喜欢的工具,或者开发自己的自定义活动来处理它

此过程是标准生成过程的一部分还是在单独的模板/生成定义中取决于您希望如何执行它


我们使用,通过这些额外的活动,我们可以使用InvokeBuild来启动其他构建,例如在另一个构建的末尾。通过传递当前构建Uri,然后使用其GetBuildDetail,任何构建都可以知道其前身,并可以访问其所有详细信息,例如DropFolder。

我现在通过构建后事件或调用msbuild.exe的简单命令文件来实现这一点。msbuild是带有参数的startet,因此它部署web服务。这是我的命令:

MSBuild.exe /target:Build;PipelinePreDeployCopyAllFilesToOneFolder /p:Configuration=Release;_PackageTempDir=%binfolder% "projectfile.csproj"