【问题标题】:What is the point of MSBUILD/NANT if you are just going to write procedural code? Isn't Powershell better?如果您只是要编写程序代码,那么 MSBUILD/NANT 的意义何在? Powershell不是更好吗?
【发布时间】:2010-10-08 06:08:28
【问题描述】:

我目前正在MSBUILD中编写部署脚本,下载了几个扩展后,发现自己在查看构建文件并思考:

在 MSBUILD 中这样做有什么意义?

此部署脚本是完全程序化的:停止网站、删除文件夹、复制文件、更改权限、启动网站等。我认为没有花哨的依赖项,我认为这是 MSBUILD、NANT 和 MAKE 等工具的自然领域。

我认为使用 MSBUILD 的唯一原因是它是标准的,而且很容易将扩展放入您的 SVN 中,因此构建“正常工作”。

它的问题是我必须花费所有时间来研究如何在 MSBUILD 中做“基本的东西”(定位扩展,制定语法),这在 Powershell 甚至命令行中是微不足道的(虽然更冗长)。

总结一下: 程序性任务适合 MSBUILD 还是您更适合使用 Powershell 之类的东西?

【问题讨论】:

    标签: powershell msbuild


    【解决方案1】:

    看看 PSAKE,看看你的想法。

    http://www.jameskovacs.com/blog/IntroducingPsake.aspx http://powerscripting.wordpress.com/2009/01/25/episode-56-james-kovacs-talks-about-psake/ http://code.google.com/p/psake/

    实验!享受!参与!

    Jeffrey Snover [MSFT] Windows 管理合作伙伴架构师

    【讨论】:

      【解决方案2】:

      MSBuild 不是一种脚本语言,因此不应这样使用。不幸的是,MSBuild 具有如此丰富的可扩展性并且足够灵活,几乎可以用于任何事情。使用最适合任务的工具,如果您发现自己花费太多时间来创建功能太有限且质量太低,而与您使用其他技术能够创建的功能相比,您应该切换。

      【讨论】:

      • 生病将此标记为答案,因为它与我得出的结论相同:使用 MSBUILD 构建 sln/proj,但不要陷入对所有内容都使用 MSBUILD 扩展的陷阱......大多毫无意义
      【解决方案3】:

      这真的取决于你的情况。不过,如果由我决定,并且您使用的是 Visual Studio - 我会说是的,为了集成,请继续使用 MSBuild。

      另一方面,我会选择 MSBUILD,因为虽然任务非常程序化,但它让您可以灵活地在以后扩展此构建过程以处理更复杂的任务。

      【讨论】:

      • 不会使用类似 Powershell 的东西给我更大的灵活性来扩展流程吗?
      【解决方案4】:

      msbuild 随 .NET 一起提供。您必须将 powershell 添加到服务器/用户必须添加它 - 至少通过 Windows XP、server 2003。这在您的环境中可能是也可能不是问题。

      我认为程序性任务不适合用 MSBUILD 编写,因为我认为 msbuild 越短越好。我可能会使用 msbuild 来调用它们,但可能会编写一个扩展库来实现它们。

      【讨论】:

        【解决方案5】:

        我认为这取决于您的发布和部署流程的流程,因为使用 MSBuild 扩展或执行 power-shell 是有意义的。 MSBuild 允许在一个独立的执行流程中灵活地处理您的所有流程步骤。

        如果您需要一次全部发生,则 MSBuild 可让您控制“事件”或可以覆盖以满足您的要求的目标。

        如果需要在编译代码后部署工件,那么 MSBuild 非常适合执行此操作,因为您可以使用在 MSBuild 标准执行期间触发的“AfterBuild”目标。它可以使您的过程自成一体。

        Powershell 无法构建您的代码。它必须从您的脚本中调用 MSBuild。对我来说,这是一个让您的构建和部署独立的问题,因此会更好地组织。

        MSBuild 是 Microsoft 的核心构建平台和引擎。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-19
          • 1970-01-01
          相关资源
          最近更新 更多