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

Edo*_*Edo 6 .net conditional-compilation

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

Sim*_*ens 10

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

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


EBa*_*arr 9

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

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

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

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