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

Ben*_*est 11 .net cruisecontrol.net continuous-integration visual-studio-2008 visual-studio

使用<devenv>标签和<msbuild>标签之间的主要区别在于CruiseControl.NET?

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

Ben*_*ann 19

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

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


Ped*_*dro 7

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

  • 我见过在VisualStudio中构建解决方案的情况,但由于程序集不在正确的位置,因此不会直接从msbuild.VisualStudio似乎在代码树中进行搜索,并将纠正路径问题.我假设devenv.exe会做同样的自动更正,但情况可能并非如此. (2认同)

Tom*_*idd 5

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

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

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

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