MSBUILD运行的背景是什么?

时间:2013-02-12 21:47:51

标签: visual-studio-2010 msbuild cruisecontrol.net pre-build-event

当我们通过MSBuild运行构建时,MSBuild在/下运行的上下文是什么?

我问的原因是因为我有一个调用命令行程序(ajax minification)的预构建事件,如果项目是通过VS2010(在同一台机器上)构建的,那么它可以很好地工作,但是当我们构建时不起作用系统(CCNet)正在构建它。我得到的错误是9009,这意味着它无法找到该文件。命令行程序有一个为其位置设置的环境路径(环境路径是通过setx设置的,也许它是唯一为当前用户设置的?),因此只调用它的名称在除CCNet调用MSBuild之外的所有情况下都能正常工作。

1 个答案:

答案 0 :(得分:1)

MSBuild就像任何其他开发工具一样,它在启动它的任何用户上下文中运行。

当您通过Visual Studio运行msbuild时,它会像您一样运行,因为您的登录上下文运行了Visual Studio,后者又运行了构建。

如果您通过某些构建服务运行它,答案将取决于构建服务的运行方式。例如,TFS Build将为您为TFS Build服务的登录凭据配置的任何用户启动MSBuild。如果您已将CC.NET配置为作为服务运行,那么您还必须指定它正在运行的用户。这就是MSBuild也将作为。

运行

如果您需要为构建设置特定环境,则可以选择一些选项。最简单的方法虽然是一种“巨大的锤子”方法,但它是为所有用户在构建机器上全局配置环境。其他选项包括在构建中运行某种预配置步骤,或者在设置环境后编写启动批处理文件以手动启动服务。