有条件地跳过C#源文件的编译
只有当我的项目处于某些bulid配置时,我才需要包含某些源文件。这可能吗 我目前复制了有条件地跳过C#源文件的编译,c#,build,compilation,C#,Build,Compilation,只有当我的项目处于某些bulid配置时,我才需要包含某些源文件。这可能吗 我目前复制了Debug和Release并创建了DebugAlt和ReleaseAlt。我只需要在Debug和Release中编译某些表单,并在备用配置中排除它们 我可以将类似的内容写入.csproj文件吗 <Compile Include="frmTools.cs" Condition="CONFIG=Debug OR Config=Release"/> 更新: 根据《科学》杂志的说法,这应该是有可能的
Debug
和Release
并创建了DebugAlt
和ReleaseAlt
。我只需要在Debug和Release中编译某些表单,并在备用配置中排除它们
我可以将类似的内容写入.csproj
文件吗
<Compile Include="frmTools.cs" Condition="CONFIG=Debug OR Config=Release"/>
更新:
根据《科学》杂志的说法,这应该是有可能的:
<Choose>
<When Condition="'$(Configuration)'=='Debug'">
<ItemGroup>
<Compile Include="frmTools.cs">
<SubType>Form</SubType>
</Compile>
</ItemGroup>
</When>
</Choose>
形式
这是半途而废;项目可以完美地加载,但是frmTools
从不编译。这是因为When条件的计算结果总是false。为什么?我做错了什么?因此您可以使用
请考虑在文本编辑器中手动编辑项目文件,VisualStudio不允许您通过GUI编辑此文件。p>
但是,您仍然可以在Visual Studio中打开这些项目。我终于可以使用它了。通过查找
DefineConstants
数组,可以检查是否定义了某个常量变量,并相应地包括/排除源文件
<Choose>
<When Condition="$(DefineConstants.Contains('MYCONST'))">
<ItemGroup>
<Compile Include="frmTools.cs">
<SubType>Form</SubType>
</Compile>
</ItemGroup>
</When>
</Choose>
形式
我们不需要检查哪个项目配置是活动的,只需向几个项目配置中添加一个常量,然后检查项目XML中的常量值 这到底是什么意思?你不必为你的程序不使用的代码付费。Hans,这(对我来说)的重点是能够在一个项目中保留调试类和表单,而这个项目不能在发布版本中。谢谢,Robinicks。我稍微修改了你的答案,所以我。。。