【发布时间】:2013-10-04 10:56:35
【问题描述】:
我在解决方案中有 X 个项目: AllPlatformProject1,AllPlatformProject2... ProjectOnlyForWindows1, OnlyForWindows2... ProjectNotLinux1、ProjectNotLinux2...
我想排除“OnlyForWindows”和“NotLinux”,但如何排除? 我想使用 xbuild 并能够为所有目标执行此操作。
【问题讨论】:
我在解决方案中有 X 个项目: AllPlatformProject1,AllPlatformProject2... ProjectOnlyForWindows1, OnlyForWindows2... ProjectNotLinux1、ProjectNotLinux2...
我想排除“OnlyForWindows”和“NotLinux”,但如何排除? 我想使用 xbuild 并能够为所有目标执行此操作。
【问题讨论】:
你不能用一个 sln 来做到这一点。通常人们会创建多个解决方案,即使在同一个目录中也是如此。
Everything.sln
WindowsCentric.sln
LinuxCentric.sln
类似的东西。
“陷阱”是......当您添加“项目引用”时,两个项目都需要在 .sln 文件中。
【讨论】:
您是否尝试过使用不同的配置与您的目标配对并忽略特定项目中的配置?示例:
解决方案配置:
LinuxDebug
LinuxRelease
WindowsDebug
WindowsRelease
然后您告诉解决方案从 Windows* 配置中省略 linux 项目,反之亦然?
我承认,我没有利用 xbuild,但如果您使用的是解决方案而不是遍历 proj 文件,这种方法在 MSBuild 中有效。在 Traversal proj 文件的情况下,您只需将条件添加到 ItemGroup 包含项,以省略基于 $() 属性的项目。
【讨论】: