仅当我的项目处于某些bulid配置时,我才需要包含某些源文件。这可能吗?
我目前已复制Debug
和Release
,并创建了DebugAlt
和ReleaseAlt
。我只需要在Debug和Release中编译某些表单,并在备用配置中将它们排除。
我可以将这样的内容写入.csproj
文件吗?
<Compile Include="frmTools.cs" Condition="CONFIG=Debug OR Config=Release"/>
更新
根据MS Build docs,这可能是这样的:
<Choose>
<When Condition="'$(Configuration)'=='Debug'">
<ItemGroup>
<Compile Include="frmTools.cs">
<SubType>Form</SubType>
</Compile>
</ItemGroup>
</When>
</Choose>
这是中途工作;项目加载完美但frmTools
从未编译。因为When条件总是计算为false。为什么?我做错了什么?
答案 0 :(得分:1)
因此,您可以使用http://msdn.microsoft.com/library/ms164307.aspx。
请考虑您需要在文本编辑器中手动编辑项目文件,Visual Studio不允许您通过GUI编辑它。
但是,您仍然可以在Visual Studio中打开项目。
答案 1 :(得分:1)
我终于得到了它。查找DefineConstants
数组可以检查是否已定义某个常量var,并相应地包含/排除源文件。
<Choose>
<When Condition="$(DefineConstants.Contains('MYCONST'))">
<ItemGroup>
<Compile Include="frmTools.cs">
<SubType>Form</SubType>
</Compile>
</ItemGroup>
</When>
</Choose>
我们只需将const添加到一些项目配置中,然后检查Project XML中的const值,而不是检查哪个项目配置处于活动状态。