【问题标题】:Exclude search paths from dproj when building with msbuild使用 msbuild 构建时从 dproj 中排除搜索路径
【发布时间】:2014-03-06 17:36:17
【问题描述】:

我正在尝试使用 msbuild 构建一些 Delphi XE 项目。 虽然大多数工作都没有问题,但一些具有很多(且很长)搜索路径的项目无法构建并显示以下错误消息:

MSB6003: The specified task executable could not be run. The filename or extension is too long

我找到了原因:我通过 /p:DCC_UnitSearchPath= 添加了不同的搜索路径,其中一些不在 dproj 文件中。这使得命令非常长并且 msbuild 失败。

所以基本上我在这里要做的只是使用我通过 DCC_UnitSearchPath 设置的单元搜索路径,但排除/忽略 dproj 文件中的搜索路径。

有没有办法做到这一点?

谢谢,

格雷格

【问题讨论】:

  • 我的处理方式是设置一个空的搜索路径并包含项目中的所有单元
  • 问题在于,我们有 >500 个项目,每个项目的搜索路径因不同的构建配置而异。我们正在使用额外的构建文件,以便能够将这些不同的配置与 FinalBuilder 一起使用,但我们现在希望将 msbuild 用于某些项目。所以把所有单元都放到项目中对我来说不是一个选择。
  • 我一直在考虑这个问题。为什么要在命令行指定搜索路径?为什么没有在 .dproj 文件中设置它们?
  • 您应该在 .dproj 文件中使用不同的配置来实现这一点。您不需要在命令行中指定该数据。命令行构建应该与在 IDE 中实现的构建完全相同。这使得测试和调试更加清洁、更加健壮和可靠。您需要选项集和配置继承。有趣的是,这是 RAD Studio 完全碾压 VS 的一个领域。 VS在这方面太糟糕了。但 RAD Studio 做到了。在这里为 Emba 加油。
  • 终于找到原因了:XE自带的库路径条目太多;我删除了十多个路径,现在它可以工作了。

标签: delphi msbuild


【解决方案1】:

将部分搜索路径移至环境变量以访问Spring4DDSharpVirtualTreeView

DSharp=C:\Users\Developer\Versioned\DSharp
Spring4D=C:\Users\Developer\Versioned\Spring4D
VirtualTreeView=C:\Users\Developer\Versioned\VirtualTreeView

然后在您的配置中像这样指定它们:

$(DSharp)\Source\Aspects;$(DSharp)\Source\Bindings;$(DSharp)\Source\Collections;$(DSharp)\Source\ComponentModel;$(DSharp)\Source\Core;$(DSharp)\Source\Logging;$(DSharp)\Source\PresentationModel;$(DSharp)\Source\Validation;$(DSharp)\Source\Windows;$(Spring4D)\Source\Base;$(Spring4D)\Source\Base\Collections;$(Spring4D)\Source\Core\Container;$(Spring4D)\Source\Base\Reflection;$(Spring4D)\Source\Core\Services

【讨论】:

    猜你喜欢
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    相关资源
    最近更新 更多