我有一个 VisualC++ 项目作为 vcxproj,我需要有条件地包含 ProjectDependency 元素之一。
我尝试了几种不同的方法,但似乎没有任何效果。
在我的 fubar.vcxproj 我有以下内容:
<ItemGroup Condition="'$(BuildRaster)'=='True'">
<ProjectReference Include="Raster.vcxproj" Condition="'$(BuildRaster)'=='True'">
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<Private>false</Private>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
在我使用的收集器 .proj 文件中,我有这个
<ItemGroup>
<FUBARProject Include="$(Proj_Root)\fubar.vcxproj"/>
</ItemGroup>
<Target Name="BuildWithRaster">
<MSBuild Projects="@(FUBARProject)" Properties="ExportIncludes=true;Constants=IncludeRaster;BuildRaster=True"/>
</Target>
<Target Name="BuildWithoutRaster">
<MSBuild Projects="@(FUBARProject)" Properties="ExportIncludes=true;Constants=ExcludeRaster;BuildRaster=False"/>
</Target>
实际上有超过一百个依赖项目,所以这只是一个被删掉的版本的片段。有条件的 ProjectReference 似乎适用于 csproj,但不适用于 vcxproj。我尝试将条件放在 ProjectReference 和 ItemGroup 元素上;两者都没有改变。