在CruiseControl.NET构建中使用'devenv'和'msbuild'有什么区别?

时间:2011-02-12 21:48:46

标签: .net visual-studio visual-studio-2008 continuous-integration cruisecontrol.net

使用< devenv>之间的主要区别是什么?标签和< msbuild>标签是在CruiseControl.NET中吗?

我理解他们调用不同的可执行文件,但有时我得到不同的结果(在编译时传递/失败),我想知道为什么两个构建命令之间存在差异。

3 个答案:

答案 0 :(得分:19)

基本上devenv(Visual Studio)包装MSBuild并添加许多Visual Studio特定的属性。

要使用devenv,您需要在计算机上安装Visual Studio。要使用MSBuild,您只需要拥有.NET框架。

答案 1 :(得分:7)

对我们来说,主要区别在于devenv将处理安装程序项目(* .vdproj),而msbuild则不会。如果我没记错的话,msbuild在查找引用的程序集时要宽容得多(特别是如果路径稍微关闭的话)。

答案 2 :(得分:5)

当我们从VSS / CruiseControl.NET(我猜测在我们的配置中使用devenv)转移到TFS(它使用msbuild,至少我们已配置它)时发现的一件事是有时ProjectGuids不同步。

因此,项目A引用项目B,项目A的项目或解决方案文件具有ProjectGuid和项目B项目文件的路径。但是,无论出于何种原因,Project B的ProjectGuid已经更改,而Project A的项目或解决方案文件没有更新以反映这一点。

Devenv很好,因为它只是使用项目B的项目文件的文件路径,或者它回退到它。然而,Msbuild在这一点上停止了冷,因为如果ProjectGuids不匹配则不行。此时,您可以在Visual Studio中修复它(我认为删除并重新添加项目工作)或手动通过记事本或其他东西。

我将由您决定哪个更好(严格遵守ProjectGuid或知道项目路径时的宽大处理)