值得学习使用MSBuild吗?

时间:2020-03-05 18:48:49  来源:igfitidea点击:

我只是想知道人们是否认为值得学习使用MSBuild语法来自定义.net项目的生成过程,或者考虑到使用Visual Studio可以轻松地构建项目,这是否真的不值得。

我在考虑每晚构建等方面的问题,但是然后我不能使用预定事件,该事件使用VS中内置的命令行构建选项吗?有高级工具吗?

解决方案

回答

@kronoz
我会说是。
关于MSBuild的整洁之处在于,如果我们修改csproj文件以包括自定义生成步骤,则这些步骤将在VS或者MSBuild中进行。另外,如果我们拥有构建服务器,则无需安装完整的VS,只需安装SDK即可构建项目。

回答

好吧,MSBuild是内置的,因此,如果我们正在做简单的事情,那么建议我们这样做。

但是对于像每晚构建这样的东西,我建议使用FinalBuilder。

请参阅"构建/配置管理工具"上的此问题。

回答

MSBuild非常简单易用,我们可以使用VS来管理项目和解决方案文件,只需将SLN传递给MSBuild。

回答

听起来我们是一个在自己的网站上工作的开发人员。如果是这种情况,则完全没有必要,但是作为专业经验的一部分,学习仍然是一个好主意。

随着从事项目工作的开发人员数量的增加,自动构建项目变得更加必要。对于两个开发人员而言,编写不兼容的代码很容易,因为它们在组合时会破裂(假设我正在调用函数foo(int x),而我们将签名更改为foo(int x,int y):结合我们的代码库,代码将被破坏。

这些类型的错误增加了复杂性,并且使集成构建之间的时间变得麻烦。通过设置每晚构建,甚至设置每次签入时都会发生的构建,可以大大减少这些问题。在具有多个开发人员的项目中,这种做法几乎是行业标准。

因此,现在回答问题:这是一项横跨项目和公司的技能。我们应该学习它,以扩展我们作为开发人员的知识和技能,并在简历中添加重要的一行。

回答

使用MSBuild从命令行进行构建相对容易学习。首先打开Visual Studio命令提示符,然后运行" msbuild /?"。只需通读帮助一次,然后再决定是否要了解更多详细信息。

编写项目文件要复杂一些。大多数人不需要学习它,因为我们可以在Visual Studio中完成大多数事情。但是,它对于某些问题也非常强大。

过去,我将MSBuild用作脚本语言,并结合了许多自定义任务。 MSBuild具有出色的日志记录支持+内置的依赖项管理。但是,这不是一门容易学习的语言。 PowerShell是更好的选择。

回答

MSBuild绝对值得学习。经过最初的学习曲线(实际上可能非常陡峭)之后,执行最常见的构建自动化步骤变得相当容易。

  • 以RELEASE模式构建装配体
  • 用强名签名程序集
  • 运行单元测试
  • 即时修改xml文件/ Web.config-s
  • 修改程序集的版本号
  • 验证FxCop / StyleCop等...
  • 自动部署-创建SQL数据库,IIS网站,Windows服务等...

回答

在我们还没有构建系统的情况下,是的,MSBuild是绝对值得的。我们不仅可以将其用于各种预构建和后构建任务(请参阅Jicko Petiov的答案),而且还可以将其很好地集成到持续集成环境(例如CruiseControl)中。

可能不值得的一种情况是,我们已经拥有一个自动/脚本化的构建系统。例如,我本人并没有花时间在MSBuild上,因为自从MSBuild出现之前,我就一直在使用NAnt来完成此任务。

回答

对于任何编写.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内部开始。其中一位合著者在Web上还有很多东西,包括该站点,以及有关CodePlex的项目。

回答

@kronoz I would say YES. The neat
  thing about MSBuild is that if you
  modify your csproj files to include
  custom build steps then those steps
  will happen from within VS or from
  MSBuild. Also if you ever have a build
  server you will not need to install
  full VS, only the SDK to build your
  projects.

==>这并非完全正确。例如,在构建服务器上构建安装项目将需要安装Visual Studio!