Visual Studio新建QA解决方案配置后Debug.Print无输出问题
解决步骤
按以下优先级逐一排查,90%以上的同类问题都是前两项配置缺失导致的:
- 先检查配置映射关系:打开顶部「生成」菜单下的「配置管理器」,确认QA解决方案配置行中,所有相关项目的「配置」列选中的是对应QA项目配置,而非自动映射到Release配置。新建解决方案配置时如果没勾选「创建新的项目配置」,会直接复用Release的项目编译设置,默认不带DEBUG相关输出。
- 检查编译常量定义:右键对应VB项目选择「属性」,切换到「编译」标签页,顶部配置下拉框选中
QA、平台匹配你实际编译的目标平台;点击页面下方「高级编译选项」,确认「定义DEBUG常量」「定义TRACE常量」两个复选框为勾选状态,自定义常量栏存在DEBUG=True,TRACE=True配置。Debug.Print仅在定义了DEBUG常量时才会被编译进程序集,My.Application.Log、My.Log的默认监听器加载依赖TRACE常量,复制Debug配置新建项目配置时这两项经常不会被自动同步。 - 检查诊断日志配置:打开项目根目录下的
app.config,如果你为QA配置做了配置转换,还要同步检查app.QA.config,确认<system.diagnostics>节点下没有移除默认的跟踪监听器,且日志开关级别没有设为Off。正常可输出的核心配置参考如下:
<system.diagnostics> <sources> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="DefaultTraceListener"/> </listeners> </source> <source name="My.Application.Log" switchName="ApplicationLogSwitch"> <listeners> <add name="FileLog"/> <add name="DefaultTraceListener"/> </listeners> </source> </sources> <switches> <add name="DefaultSwitch" value="All" /> <add name="ApplicationLogSwitch" value="All" /> </switches> <sharedListeners> <add name="DefaultTraceListener" type="System.Diagnostics.DefaultTraceListener, System"/> <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic" location="LocalUserApplicationDirectory" logFileCreationSchedule="Daily"/> </sharedListeners> </system.diagnostics>
- 检查VS输出设置:调试运行QA配置时,打开「工具-选项-调试-输出窗口」,确认「程序输出」选项为开启状态,没有屏蔽调试日志流;
Debug.Print的输出仅在附加调试器时才会显示在即时窗口、调试输出窗口,非调试启动(Ctrl+F5)不会输出该类内容。 - 验证符号加载:在任意
Debug.Print代码行打个断点,QA配置下调试运行如果断点提示「不会被命中」,回到项目编译属性页,确认「生成调试信息」选项设为Full或PDB-only,且编译输出路径和调试时加载的程序集路径一致,没有加载旧版本的编译文件。
验证小技巧:在代码里加一行
#If DEBUG Then MsgBox("DEBUG常量已生效") #End If,运行QA配置如果弹窗不出现,直接回到第二步检查编译常量即可,不用排查后面的配置。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

