【问题标题】:Compiling Massive VB.NET Project编译海量 VB.NET 项目
【发布时间】:2008-12-20 01:57:22
【问题描述】:

要编译我当前的项目,一个具有 ~90,000 loc + ~100 DLL 的 exe 大约需要半小时或更长时间,具体取决于工作站的速度。

构建过程是从 Powershell 脚本运行 devenv 的过程之一。这很好用,没有任何问题。

问题是它很慢。我想加快这个构建过程。

MSBuild(使用 VS-2005)是一种选择,但在命令行上指定 vb 编译器/链接器的图标时存在错误,因此无法成功链接。

还有哪些其他选项可以“制作”VB.NET 程序?

(不能选择更快的工作站。)

【问题讨论】:

    标签: vb.net makefile compilation


    【解决方案1】:

    您是否每次都必须编译整个解决方案?有了这么多的程序集,除非它们真正改变,否则它们似乎不太可能都需要构建。如果您的解决方案由多个项目组成,您可以考虑在构建环境中创建多个解决方案。一个主解决方案可以包含所有项目,另一个包含最常更改的项目。然后,您可以配置构建过程以专注于已更改的项目。根据您使用的源代码控制系统,您可以查询系统以确定自上次构建以来哪些项目发生了更改,并且只构建这些项目。

    【讨论】:

      【解决方案2】:

      NAntCruisecontrol.NET 用于持续构建。

      您提到不能选择更快的 PC,但是您有多少内存? 2GB 应该是开发人员机器的最小值。此外,使用快速 10K RPM 硬盘可以生成big difference

      您是否尝试在构建过程中禁用任何病毒扫描程序?

      【讨论】:

        【解决方案3】:

        如果可以,请升级到 3.5 版本的 MSBuild。它可以构建解决方案文件,并支持multiprocessor support(或here,如果您需要自己托管)使其能够并行构建项目。

        需要注意的是,您需要使用项目引用,以便它知道要构建什么。

        另外,现在需要多长时间?您是否查看过 CPU/内存使用情况(使用 PerfMon 之类的东西),看看它是否是瓶颈?

        【讨论】:

          【解决方案4】:

          除了为您的机器添加更多内核、CPU 能力和内存之外,您无能为力让构建过程更快,但这不是您的选择。

          大多数大型项目都不是独立于单个 EXE 中的。更常见的是,逻辑单元被移动到单独的程序集中,这些程序集可以是 DLL 或 EXE。最终结果是一大堆小程序集,而不是一个巨大的程序集。

          举一个例子,我参与的一个项目非常庞大,由 700 多个表格和 10 个类组成,其中 1000 个。功能相关的表单,例如与打印、报告生成、用户询问等相关的表单,都包含在自己的 EXE 中。如果我正在处理报告,我会从构建过程中排除所有与报告无关的项目,这有助于将编译时间从半小时缩短到几秒钟。

          这种编程风格可能很棘手,但如果做得好,它就可以正常工作并且完美无缺。

          【讨论】:

            【解决方案5】:

            如果您有大量项目,那么您应该尝试减少它们。您以后可以随时将它们拆分为dll。项目越少,构建的速度就越快。特别是如果它必须按特定顺序构建它们。

            将它们分解为更小的解决方案也是一种选择。

            【讨论】:

              猜你喜欢
              • 2016-11-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-01-14
              • 1970-01-01
              • 1970-01-01
              • 2012-07-16
              相关资源
              最近更新 更多