使用MSBuild构建时,从dproj中排除搜索路径

7
我试图使用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文件中的搜索路径。
有办法实现这个吗?
谢谢,
Greg

问题在于,我们有500多个项目,每个项目的搜索路径都因不同的构建配置而异。我们使用额外的构建文件来能够在FinalBuilder中使用这些不同的配置,但现在我们想要在一些项目中使用msbuild。因此,将所有单元放入项目中对我来说不是一个选项。 - Greg
1
我对这个问题又想了一下。为什么要在命令行中指定搜索路径?为什么不在 .dproj 文件中设置呢? - David Heffernan
David,对于一些遗留项目,我们有编译器指令,因此需要为不同的构建配置使用不同的单元搜索路径。这就是原因。 - Greg
1
你应该在 .dproj 文件中使用不同的配置来实现这一点。你不需要在命令行指定数据。命令行构建应该与在 IDE 中实现的完全相同。这使得测试和调试更加清洁、强大和可靠。你需要选项集和配置继承。有趣的是,这是 RAD Studio 完全击败 VS 的领域之一。VS 在这方面太差了。但是 RAD Studio 做得非常好。为 Emba 点赞。 - David Heffernan
1
我终于找到了原因:XE自己的库路径有太多条目;我删除了十几个路径,现在它可以工作了。 - Greg
显示剩余2条评论
1个回答

6

将搜索路径的部分移动到环境变量中,以访问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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接