代码之家  ›  专栏  ›  技术社区  ›  Warren P

Delphi构建自动化和持续集成仅使用MS构建可行吗?

  •  21
  • Warren P  · 技术社区  · 15 年前

    我希望实现一个连续的单元测试运行系统,我听说过这个系统叫做“SmokeTest”或“Tinderbox”,(一个构建服务器,它可以清除版本控制签出并在给定的源库或项目中构建所有内容的完整系统),以及类似于Delphi的小型团队的“持续集成”。

    我不愿意致力于一个商业化的“构建服务器”产品,我希望我可以做很多这只是与MS构建支持内置于Delphi。

    我正在寻找资源、想法和一个开始的地方。我不知道如何使用MS Build来实现这一目的。 Steve Trevethen 有一篇博文,介绍了旧的dcc32命令行构建,一些评论提到了自Delphi2007年以来一直在这里的ms-build。我正在使用Delphi2010。我在寻求指导和洞察力,以及经验,这将告诉我,这是一条合理的下山之路吗?如果不是,我应该走哪条路?

    我发现您可以用/p:dcu_DCuOutput=覆盖msbuild命令行中的单元(dcu)和exe输出目录。请注意,我查看了dproj文件中的XML,以了解如何重写内容。

    但是,它只执行make,而不执行build,并且/t:rebuild不起作用(edit:yes它起作用)。它在dproj文件上运行良好,但在groupprojects上不起作用。)

    我希望在任何地方都有更多带有Delphi文档的msbuild?“RADStudio2010”产品文档中的MS构建帮助显示了关于MS构建的一到两个方面,但实际上是粗略和不完整的。

    相关问题:

    MSBuild command lines

    3 回复  |  直到 8 年前
        1
  •  15
  •   Nick Hodges    15 年前

    Delphi2010使用msbuild作为它的主要构建引擎。这意味着IDE和命令行都做了完全相同的事情。它还意味着您可以使用命令行轻松地构建现有项目。事实上,我们德尔福团队一直都在做这件事。您不必担心编译器本身的开关——由IDE创建的dproj文件将

    在“开始”菜单上有一个命令行,用于在现有Delphi项目中使用msbuild。它正确设置了环境,因此您可以简单地调用:

    msbuild myproject.dproj项目

    还可以从命令行调用特定的生成配置,使用IDE可以使用命令行参数为msbuild轻松创建所述配置。

    如果您想自己创建环境,可以运行rsvars.bat批处理文件来设置。该文件可以在\bin目录中找到,并且应该可以从默认命令行中获得。

    文件包含以下内容:

    @SET BDS=<your BDS directory>
    @SET BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\7.0
    @SET FrameworkDir=C:\Windows\Microsoft.NET\Framework\v2.0.50727
    @SET FrameworkVersion=v2.0.50727
    @SET FrameworkSDKDir=
    @SET PATH=%FrameworkDir%;%FrameworkSDKDir%;%PATH%
    @SET LANGDIR=EN
    

    因此,如果您想创建自己的持续集成构建,可以使用msbuild轻松地管理Delphi构建。

        2
  •  11
  •   Lars Truijens    15 年前

    dproj和groupproj是msbuild文件,您可以查看它们。信息的其他部分将在msbuild安装路径(c:\windows\microsoft.net\framework\v2.0.50727)中找到。在那里你可以找到几个borland.*.targets文件。

    在msbuild脚本中,可以看到用命名的不同目标。例如,groupfile包含make、clean和build目标,可以使用/t参数指定这些目标。DProj文件也是如此。DProj文件也有一个重建目标。它先进行清理,然后进行构建。如果要对groupfile具有相同的效果,可以指定两个目标:/t:clean;build

    您还可以在中找到许多可以用/p设置的参数。例如,用于指定配置的配置或用于指示dcc32停止输出无用空白的dcc_-quiet。

    因此,从命令行使用发布配置执行生成是以下命令:

    msbuild mygroup.groupproj /p:Configuration=Release /t:Build
    

    免责声明: 我看过Delphi2007的msbuild文件。稍后的Delphi版本可能更改了目标或参数的名称。只需在msbuild脚本中查看一下,找出哪个脚本是哪个脚本。

        3
  •  4
  •   mmmm    15 年前

    我不确定这是不是你需要的,但我有 CruiseControl.NET 为Delphi2009进行持续集成和Dunit测试的设置。ccnet有一组特定的任务用于msbuild,除了一些安装问题外,它对我来说非常有效。

    如果你需要的话,我可以告诉你我该怎么做才能让它工作。

    作记号