C# 未找到自定义配置的预编译符号

C# 未找到自定义配置的预编译符号,c#,.net,C#,.net,我正在使用VS2010,C#。我有一个名为WCFDebug的自定义配置。我通过Configuration manager添加了此配置。我还将条件编译符号添加到我的项目中: 问题是当我使用这样的代码时: #if WCFDebug /*My code here*/ #endif 程序从未找到我的配置-也没有任何其他配置,如调试: #if Debug /*This one is also not found*/ #endif 我应该怎么做,这样程序才能找到带有预编译符号的配置 编辑: 当然,我希

我正在使用VS2010,C#。我有一个名为WCFDebug的自定义配置。我通过Configuration manager添加了此配置。我还将条件编译符号添加到我的项目中:

问题是当我使用这样的代码时:

#if WCFDebug
/*My code here*/
#endif
程序从未找到我的配置-也没有任何其他配置,如调试:

#if Debug
/*This one is also not found*/
#endif
我应该怎么做,这样程序才能找到带有预编译符号的配置

编辑:

当然,我希望我的程序在运行时模式下的调试会话中找到此配置


在解决方案资源管理器中,右键单击“解决方案…”->配置管理器-这就是选择活动配置的方式。

首先,忘记我对您的问题的最后一点评论。现在很清楚,您实际上是在谈论VisualStudio构建配置,而不是通过应用程序配置文件提供的配置信息

但是您谈论“…我可以找到代码在一个构建配置或另一个构建配置中执行的时间”的方式确实表明您对VisualStudio构建配置如何工作的理解是非常错误的

请看一下这份文件:

重要的是要认识到,构建配置,顾名思义,只在构建时存在和运行

选择一个生成配置,然后进行生成,然后根据该生成配置生成生成.exe或.dll文件,就是这样。该特定的.exe或.dll文件现在和将来都会根据其构建方式运行。谈论“为什么它找不到我预定义的构建配置”毫无意义

您可以根据不同的生成配置生成不同的.exe文件。这是典型的调试和发布版本,例如。但它们是不同的.exe文件,因此,不必奇怪为什么使用Release构建的.exe文件找不到调试条件常量

接下来我想你是误解了。C#预处理指令(如#if)和条件编译符号(如调试和(在自定义配置中)WCFDebug)也仅在构建时存在

更多信息请点击此处: 在这里:

#if和#endif语句在构建时作用于
,以包含或排除它们之间的语句。一旦构建完成,生成的.exe文件就不再知道它们的存在。它要么有指定的代码,要么没有指定的代码,对于特定的.exe或.dll文件,这一点永远不会改变

现在,为什么事情没有如你所期望的那样工作,可能是因为你没有准确地理解这些事情实际上是如何工作的

如果确实存在与误解无关的无法正常工作的问题,那么我唯一可以建议您查看相关的.csproj文件,并检查配置名称和条件符号是否按其应有的方式存在。如果您的Visual Studio解决方案有多个项目,那么我认为这可能是一个问题,.csproj文件并不都正确地包含相同的配置信息


希望这能有所帮助。

我感觉您并不真正了解“配置”是什么。像“程序永远找不到我的配置”这样的短语没有任何意义。你说的是编译时还是运行时?无论如何,要指定编译时要使用的配置,可以通过Visual Studio工具栏上的下拉菜单进行选择。如果要使用自定义配置,则必须创建自己的配置并从下拉菜单中选择。当然,我希望在运行时找到它。@RenniePet有道理。“查找配置”是什么意思?设置活动配置,然后针对该配置进行编译。如果
WCFDebug
配置是活动配置,并且指定了
WCFDebug
编译符号,那么编译器将在
#If WCFDebug[…]#endif
中编译代码,否则不会。“当然,我希望在运行时找到它。”该语句毫无意义。配置仅在编译时存在。可能您将Visual Studio生成配置与.Net应用程序配置文件混淆了。它们是两个完全不同的东西。