Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#.Net核心控制台应用程序调试。断言不显示消息框_C#_.net - Fatal编程技术网

C#.Net核心控制台应用程序调试。断言不显示消息框

C#.Net核心控制台应用程序调试。断言不显示消息框,c#,.net,C#,.net,根据此文档,下面的代码应生成一个消息框,但它所做的只是打印到“输出”选项卡: 如何让它生成Microsoft文档中广告的消息框 //********************************************************* //****Assignment 6 Section 1 //********************************************************* Console.WriteLine("\n Assignment 6

根据此文档,下面的代码应生成一个消息框,但它所做的只是打印到“输出”选项卡:

如何让它生成Microsoft文档中广告的消息框

//*********************************************************

//****Assignment 6 Section 1

//*********************************************************

Console.WriteLine("\n Assignment 6 - Asserts and Try/Catch.");

string fooString = null;
int fooInt = 0;

Debug.Assert(!String.IsNullOrEmpty(fooString), "Parameter must not be empty or null.");
Debug.Assert(fooInt > 0, "Parameter must be greater than zero.");
以下是Form1.cs中的代码(尝试使用和不使用Trace.Listeners代码)

名称空间单元\u 6\u WinForm
{
公共部分类Form1:Form
{
公共表格1()
{
Trace.Listeners.Clear();
DefaultTraceListener DefaultTraceListener=新的DefaultTraceListener();
defaultTraceListener.AssertUiEnabled=true;
Trace.Listeners.Add(defaultTraceListener);
//*********************************************************
//****作业6第1节
//*********************************************************
WriteLine(“赋值6-断言和Try/Catch。\n”);
字符串fooString=null;
int-fooInt=0;
Assert(!String.IsNullOrEmpty(fooString),“参数不能为空或null”);
Assert(fooInt>0,“参数必须大于零”);
//*********************************************************
//****作业6第2节
//*********************************************************
字符串[]fooStringArray=新字符串[5];
尝试
{

对于(int index=0;index,请参见Microsoft文档:

当应用程序在用户界面模式下运行时,将显示一个消息框,其中显示带有文件和行号的调用堆栈。消息框包含三个按钮:中止、重试和忽略。单击中止按钮可终止应用程序。如果应用程序正在调试中运行,则单击重试可将您发送到调试器中的代码r、 或者提供打开调试器(如果不是)。单击“忽略”将继续执行代码中的下一条指令

因为您并没有在UI模式下运行,所以消息将显示在控制台上

同样根据文档,要启用UI模式:

<configuration>  
  <system.diagnostics>  
    <assert assertuienabled="true"    logfilename="c:\\myFile.log" />  
   </system.diagnostics>  
 </configuration>  

根据Microsoft文档:

当应用程序在用户界面模式下运行时,将显示一个消息框,其中显示带有文件和行号的调用堆栈。消息框包含三个按钮:中止、重试和忽略。单击中止按钮可终止应用程序。如果应用程序正在调试中运行,则单击重试可将您发送到调试器中的代码r、 或者提供打开调试器(如果不是)。单击“忽略”将继续执行代码中的下一条指令

因为您并没有在UI模式下运行,所以消息将显示在控制台上

同样根据文档,要启用UI模式:

<configuration>  
  <system.diagnostics>  
    <assert assertuienabled="true"    logfilename="c:\\myFile.log" />  
   </system.diagnostics>  
 </configuration>  



这只适用于具有UI的应用程序,因为您使用的是控制台应用程序,这将只打印到输出选项卡,正如您所发现的那样。根据其他文章显示MessageBox在控制台应用程序中使用的印象,这是可能的。但是,通过项目属性将项目更改为Windows应用程序仍然不可行生成播发的消息框。我错过了什么?消息框将仅在具有的Windows应用程序中生成。仅将项目类型从控制台更改为Windows应用程序是不够的,因为这不会自动启动消息泵。创建新的Winforms或WPF应用程序,然后重试。请参阅注意事项中的文档,t您所参考的文档是针对.NET Framework 4.8的,而不是.NET Core。特定于.NET Core的文档位于
表单中
构造函数不在UI线程上运行(默认的Program.cs代码实例化表单,然后启动消息泵),因此Debug.Assert不会显示任何内容。这只适用于具有UI的应用程序,因为您使用的是控制台应用程序,这只会打印到输出选项卡,正如您所发现的那样。根据其他显示MessageBox在控制台应用程序中使用的文章,我认为这是可能的。但是,将项目更改为Windows应用程序n via project properties仍未生成播发的消息框。我遗漏了什么?消息框将仅在具有的Windows应用程序中生成。仅将项目类型从控制台更改为Windows应用程序是不够的,因为这不会自动启动消息泵。创建新的Winforms或WPF应用程序,然后请再次阅读。请参阅上的文档。请注意,您所参考的文档是针对.NET Framework 4.8的,而不是.NET Core。特定于.NET Core的文档位于
表单中
构造函数不在UI线程上运行(默认的Program.cs代码实例化表单,然后启动消息泵),因此Debug.Assert不会显示任何内容。如何选择“用户界面模式”?请看我的最新答案。我没有试过。只是通过文档引用。试着让我知道know@747Aviator正如我们在评论中所指出的,您需要一个具有活动消息泵的Windows应用程序。我尝试使用console应用程序进行此操作时运气不佳。但可能是我没有正确设置配置文件。@Amy我尝试使用Windows应用程序进行此操作m应用程序和行Debug.Assert需要调试器中的“继续”按钮,而不是生成弹出消息框。@747Aviator请告诉我们。您在Winforms应用程序的何处添加了Assert?您是将其添加到表单代码还是添加到Program.cs?请告诉我们。您如何选择“用户界面模式”?请看我的最新答案。我没有试过。只是通过文档引用。试着让我知道know@747Aviator正如我们在评论中所指出的,您需要一个具有活动消息泵的Windows应用程序。我尝试使用console应用程序进行此操作时运气不佳。但可能是我没有正确设置配置文件。@Amy我尝试使用Windows应用程序进行此操作m应用程序和Debug.Assert行需要“Continue”bu