Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 是否值得学习使用MSBuild?_.net_Msbuild - Fatal编程技术网

.net 是否值得学习使用MSBuild?

.net 是否值得学习使用MSBuild?,.net,msbuild,.net,Msbuild,我只是想知道人们是否认为学习使用MSBuild语法来定制.net项目的构建过程是值得的,或者考虑到使用visual studio可以轻松构建项目,这是否真的不值得 我在考虑夜间构建,等等,但是我不能使用一个使用VS中内置的命令行构建选项的预定事件吗?有更好的工具吗?@kronoz 我会说是的。 MSBuild的一个优点是,如果修改csproj文件以包含自定义构建步骤,那么这些步骤将从VS或MSBuild中执行。此外,如果您有构建服务器,则无需安装完整的VS,只需安装SDK即可构建项目。好的,MS

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

我在考虑夜间构建,等等,但是我不能使用一个使用VS中内置的命令行构建选项的预定事件吗?有更好的工具吗?

@kronoz
我会说是的。

MSBuild的一个优点是,如果修改csproj文件以包含自定义构建步骤,那么这些步骤将从VS或MSBuild中执行。此外,如果您有构建服务器,则无需安装完整的VS,只需安装SDK即可构建项目。

好的,MSBuild是内置的,因此如果您正在执行一些简单的操作,则建议您安装完整的VS

但对于像夜间构建这样的东西,我会建议


请参见此

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

听起来您是在自己的站点上工作的单个开发人员。如果是这样的话,那就没有必要了,但是作为你职业经验的一部分,学习仍然是一个好主意

随着项目开发人员数量的增加,项目的自动化构建变得越来越必要。对于两个开发人员来说,编写不兼容的代码是非常容易的,当代码组合在一起时,代码会中断(想象一下,我正在调用一个函数foo(intx),而您将签名更改为foo(intx,inty):当我们组合代码基时,代码会中断

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


现在,为了回答您的问题:这是一项跨项目和跨公司的技能。您应该学习它以拓宽作为开发人员的知识和技能,并在简历上添加一行重要内容。

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

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


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

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

  • 在发布模式下生成程序集
  • 使用强名称对程序集进行签名
  • 运行单元测试
  • 动态修改xml文件/Web.config-s
  • 修改程序集的版本号
  • 正在验证FxCop/StyleCop等
  • 自动部署-创建SQL数据库、IIS网站、windows服务等

在您这样的场景中,如果您还没有构建系统,那么是的,MSBuild绝对值得。您不仅可以将其用于各种构建前和构建后任务(请参见Jicko Petiov的回答),还可以将其很好地集成到一个持续集成环境中(如CruiseControl)


有一种情况可能不值得这么做,那就是您已经有了一个自动/脚本化的生成系统。例如,我自己没有花时间使用MSBuild,因为在MSBuild存在之前,我就一直在使用NAnt来完成此任务…

MSBuild绝对值得任何人和所有编写.NET软件的人学习ason.NET应用程序的生成服务器不再需要安装Visual Studio(如Andrew Burns所述),因为MSBuild现在是.NET Framework的一部分

了解MSBuild将使您在选择用于实现持续集成的技术时具有极大的灵活性。因为我花时间学习了MSBuild,所以我能够将我们的一个团队正在使用的CI系统从CruiseControl.NET更改为TeamCity,而没有太大困难。这些CI服务器,或者类似FinalBuilder的东西(我不熟悉),是比计划任务更好的夜间生成选项。学习如何实现自定义MSBuild任务将使您在实现自定义生成时具有更大的灵活性。Jivko Petiov列出了许多MSBuild使之更容易实现的任务。对于数据库部署和配置,我编写了在MSB中执行此操作的脚本它使开发和测试过程更加容易

如果未来使用VisualStudioTeamSystem,那么使用MSBuild构建的应用程序将比通过其他方法构建的应用程序更容易迁移到该环境中

有很多资源可以帮助您开始使用MSBuild。首先,我要说的是。其中一位合著者在web上也有很多东西,包括,和

@克洛诺斯,我会说是的,这件衣服很整洁 有关MSBuild的问题是,如果 修改csproj文件以包括 自定义构建步骤,然后执行这些步骤 将从VS内部或从 MSBuild。如果您曾经有过生成 不需要安装的服务器 完整VS,仅用于构建您的 项目

==>这并不完全正确。例如,在生成服务器上生成安装项目需要安装Visual studio!!

如果在中开发。
<PropertyGroup>
   <PropertyKey>value</PropertyKey>
</PropertyGroup>
<ItemGroup>
   <ItemListKey>List values<ItemListKey>
</ItemGroup>
<Task Source="" Target="" />
Besides using for build, I successfully used MSBuild to create a module that manages configuration files such as web.config and foo.exe.config files. it is a hybrid module that consists of .net console app, MSBuild script and batch file. what this module does is that during a project upgrade, it will create a XML transform template with connection strings, endpoints and appSettings from old configuration files. after the project has been upgraded, the module will transform newly deployed configuration files without affecting any new entries. if you have dozens of configuration files this is very effective.