【发布时间】: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自带的库路径条目太多;我删除了十多个路径,现在它可以工作了。