C# 使用生成配置在Visual Studio中创建项目的多个版本

C# 使用生成配置在Visual Studio中创建项目的多个版本,c#,visual-studio-2010,configuration,build-process,preprocessor-directive,C#,Visual Studio 2010,Configuration,Build Process,Preprocessor Directive,我需要使用配置创建项目的多个版本,就像使用define、if、endif一样 使用这些预处理器指令的缺点是,我需要在项目的几乎每个文件中定义符号,但我希望通过构建配置来处理这个问题 我甚至不确定构建配置是否能帮助我做到这一点 我想要的是,如果我创建一个名为Development的配置,另一个名为QA,我的代码如下所示: if #Development or if $QA 请指导我实现这一目标。配置管理器正是出于这个原因而存在的 转到Configuration Manager并创建新配置 从预定

我需要使用配置创建项目的多个版本,就像使用define、if、endif一样

使用这些预处理器指令的缺点是,我需要在项目的几乎每个文件中定义符号,但我希望通过构建配置来处理这个问题

我甚至不确定构建配置是否能帮助我做到这一点

我想要的是,如果我创建一个名为Development的配置,另一个名为QA,我的代码如下所示:

if #Development or if $QA

请指导我实现这一目标。

配置管理器正是出于这个原因而存在的

转到Configuration Manager并创建新配置 从预定义的调试配置复制 命名配置开发并应用于所有项目 选择作为活动配置,开发配置应该已经是 主动式 转到每个需要if开发的项目的属性页 有条件编译并在BUILD选项卡的第一个文本框中插入开发符号 现在,您的每个项目都可以使用if开发预处理器指令

如果您也需要此版本,请重复上述步骤,但从预定义的版本配置中复制,并提供不同的名称

现在,可以直接从VisualStudio标准工具栏中的“解决方案配置”组合工具中切换有或没有定义开发符号的配置,而无需编辑每个项目


您还可以查看MSDN文章

除了Michael Freidgeim的解决方案之外,您还可以将属性条件用于中心初始化操作或其他无效函数:

[Conditional("DEVELOPMENT")]
public static void InitDemo()
{
      Models.LogFile.ErrorLog("This is a Development Version!");
      // init settings
}

在此处找到:

谢谢Steve,为什么我需要从预定义配置复制配置?因为调试配置包含调试会话期间所需的设置,所以对于发布配置,例如调试和跟踪符号。如果您从头开始,您可能会丢失丢失的符号所提供的功能。我不确定第三步是什么,请更清楚地说明。我在project PropertiesOrry中找不到COMPILE选项卡,该选项卡由意大利语VS翻译而来,从顶部开始的第二个选项卡应命名为“Build”,插入符号的文本框应标记为“Conditional Symbols”或类似内容。是页面中的第一个文本框。我被你的答案弄得不知所措,不是因为它解决了我的问题,而是因为我在Visual Studio中工作了这么长时间,从来没有想过要知道这个文本框的用法。非常感谢