Visual Studio项目的独立构建系统

5
我们使用Make来编译我们的产品,其中包括C、C++、Java和一些其他零碎的部分。尽可能地,我们将编译整个项目所需的所有工具都检入源代码控制中,以消除本地依赖并确保开发机器上的一致性。
最近,我们添加了一些使用Visual Studio编写的组件,并希望采用类似于Visual Studio解决方案的方法。调用“devenv”不是一个好选择。直接调用“csc.exe”(就像我以前使用Nant时做的那样)需要在构建脚本中跟踪文件依赖项,而我宁愿让Visual Studio解决方案自己处理。
MSBuild似乎是一个不错的选择,尽管它在%windir%\Microsoft.NET\Framework\[version]\中的默认位置让我担心机器之间的可变性,无论是路径中的[version]还是事实上你将看到“Framework”和“Framework64”目录。我不介意要求所有开发人员安装任何.NET框架版本,但我担心你的v3.5可能与我的不同。

有人有喜欢的解决方案吗?尝试过任何你不喜欢的东西吗?

4个回答

6

MSBuild 是最低摩擦选项。在构建时,不同的 .NET Framework 版本并不是很重要 - 如果您使用比已安装版本更高的 .NET Framework 版本中的重要组件,则项目将无法构建。我曾经工作过的最后一个地方,我们建立了一个巨大的多环境构建系统,NAnt 是基础,它连接到 MSBuild 以使用 NAnt 的 MSBuild 任务。如果您只是在做 MS 相关的东西,那么 MSBuild 就足够了,但我们有许多 MSBuild 不支持的功能,因此需要 NAnt 封装。


感谢大家的回答。- Eric - Eric McNeill
什么是“fx版本”? - Peter Mortensen

1

我同意其他人的意见。为了方便起见,只需将vsvars.bat(Visual Studio命令提示符的批处理文件)作为构建脚本的一部分,然后MSBuild就会正常工作。


0

MSBuild是这项工作的正确工具。只需将您的框架版本与您使用的Visual Studio捆绑的框架版本匹配即可。

32位与64位应该不重要,我认为 - 我非常确定32位和64位版本的Csc.exe都可以交叉编译到其他平台。 MSBuild项目文件(*.*proj XML文件)应包含MSBuild构建应用程序所需的所有内容。


0
我们使用Nant来驱动msbuild。如果您担心框架的不同版本,特别是服务包,请使用FxCop检查是否允许意外的依赖项出现。有关详细信息,请参见this answer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接