如何在单独的文件中定义条件编译符号(不是.csproj或app.config)

时间:2009-08-03 09:10:21

标签: .net conditional-compilation

我们需要在类库项目中定义条件编译符号。这不应该在源代码管理中检查(它不适用于所有开发人员),因此应该在.csproj或app.config文件以外的其他位置定义它。如何实现这一目标?

2 个答案:

答案 0 :(得分:10)

我要做的是在配置管理器(Build-> Configuration Manager)中定义各种构建类型,并在每个构建类型上设置每个所需的常量。然后,您可以让团队的每个成员只选择他们想要执行的构建类型,它将自动使用适当的常量。 (我认为最近使用的构建类型存储在.suo文件中,这是“解决方案用户选项”,您通常不会检入源控件,因此将专门为每个用户维护)。 / p>

您可以使用/define在c#编译器命令行上定义预处理器常量。开关。但你会遇到如何调用它的问题。您对项目属性所做的任何更改都将保存到csproj文件中。您必须从命令行执行所有构建,而不是我确定您不想要的。您也可以在msbuild脚本中定义它们,但是您会遇到同样的问题。

答案 1 :(得分:9)

这是一个古老的问题,但是在预感中我厌倦了一些事情并且有效。事实证明,您可以在csproj.user文件中定义条件符号。我认为同样的事情适用于其他语言,但我没有尝试过。

所以只需在csproj.user中添加如下内容即可。

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DefineConstants>MySpecialConstant, TestBlahBlah</DefineConstants>
</PropertyGroup>

我实际上更喜欢@SimonPStevens解决方案,因为它包含TFS,而不是隐藏。然而,有时候这更容易......