我只是想知道是否有人认为使用MSBuild语法来定制.net项目的构建过程是否值得,或者是否真的不值得,因为可以使用visual studio轻松构建项目.
我在考虑夜间构建等方面,但是我不能使用使用VS内置的命令行构建选项的预定事件吗?那里有优秀的工具吗?
@kronoz
我会说是的.
关于MSBuild的一个好处是,如果你修改你的csproj文件以包含自定义构建步骤,那么这些步骤将在VS或MSBuild中发生.此外,如果你有一个构建服务器,你将不需要安装完整的VS,只需要SDK来构建你的项目.
MSBuild绝对值得学习.在初始学习曲线(实际上可能非常陡峭)之后,执行最常见的构建自动化步骤变得相当容易.
在RELEASE模式下构建程序集
签署具有强名称的程序集
运行单元测试
动态修改xml文件/ Web.config -s
修改程序集的版本号
验证FxCop/StyleCop等...
自动部署 - 创建SQL数据库,IIS网站,Windows服务等......
听起来你是一个在你自己的网站上工作的开发人员.如果是这种情况,根本没有必要,但作为您职业经历的一部分,您仍然是个好主意.
随着项目开发人员数量的增加,项目的自动化构建变得更加必要.两个开发人员很容易编写不兼容的代码,这些代码在组合时会中断(假设我正在调用函数foo(int x),并且您将签名更改为foo(int x,int y):当我们结合我们的代码库,代码将中断.
这些类型的错误增加了复杂性,并且随着集成构建之间的时间量而变得麻烦.通过设置夜间构建,甚至每次签入时发生的构建,这些问题都会大大减少.对于有多个开发人员的项目,这种做法几乎是行业标准.
现在,回答你的问题:这是一项跨越项目和公司的技能.您应该学习它以扩大您作为开发人员的知识和技能,并在简历中添加重要的一行.
对于任何编写.NET软件的人来说,MSBuild绝对值得学习..NET应用程序的构建服务器不再需要安装Visual Studio的原因(正如Andrew Burns所提到的)是因为MSBuild现在是.NET Framework的一部分.
了解MSBuild将为您选择用于实现持续集成的技术提供极大的灵活性.因为我花时间学习MSBuild,所以我能够将我们的一个团队使用的CI系统从CruiseControl.NET改为TeamCity而没有太大困难.那些CI服务器,或类似FinalBuilder(我不熟悉的),是执行夜间构建而不是计划任务的更好选择.学习如何实现自定义MSBuild任务将为您提供实现自定义构建的更大灵活性.Jivko Petiov列出了许多MSBuild更容易完成的任务.在数据库部署和配置的情况下,我编写了在MSBuild中执行此操作的脚本,它使开发和测试过程更加容易.
如果您将来使用Visual Studio Team System,那么使用MSBuild构建的应用程序将比通过其他方式构建的应用程序更容易进入该环境.
有很多资源可以帮助您开始使用MSBuild.我将从Microsoft Build Engine内部开始.其中一位合着者在网上也有很多东西,包括这个网站,以及CodePlex上的一个项目.
好吧,MSBuild是内置的,因此,如果您正在做简单的事情,那么建议您这样做。
但是对于像每晚构建这样的东西,我建议使用FinalBuilder。
请参阅“构建/配置管理工具”上的此问题。