我试图让Resharper for c ++与我们的内部构建系统一起工作。 Resharper需要静态定义所有包含文件夹(不是任何目标的一部分),但是我们在构建之前运行的目标中设置包含路径。
我们有一个类似于nuget的系统设置,我们通过将它们添加到项目组来声明需要哪些组件。进入该组后,将下载并正确设置组件。我们不想设置包含不使用的组件的路径,因为它会导致编译器保释,因为文件夹不存在。
我需要根据项目是否在ItemGroup中有条件地定义属性。有没有办法在目标之外做到这一点?
目前我正在尝试使用Property功能,但由于某些原因我无法上班。我吠叫错了树吗?这就是我所拥有的:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<TheList Include="itemA"/>
<TheList Include="itemB"/>
<TheList Include="itemC"/>
</ItemGroup>
<PropertyGroup>
<_TheList>@(TheList)</_TheList>
<FoundIt>No</FoundIt>
<FoundIt Condition='$(_TheList.Contains("itemA"))'>Yes</FoundIt>
</PropertyGroup>
<Target Name="Test">
<Message Text="$(_TheList)" Importance="High" />
<Message Text="It was found: $(FoundIt)" Importance="High" />
</Target>
</Project>
打印:
itemA;itemB;itemC
It was found: No
将PropertyGroup定义移动到目标中会使其工作,这很奇怪,因为the property function documentation表明它应该在目标之外工作。