我有最简单的C#控制台应用程序,它只能执行WriteLine和ReadLine。出于某种原因,它不会在其构建的机器上以独立模式运行。我在另一个盒子上尝试了构建的可执行文件,它运行正常。
尝试在这台机器上运行它只是挂在那里。它在VS内部工作正常,而不是从命令行。
尝试将VS附加到挂起进程时,会出现类似于" ConsoleApplication1触发断点的内容。但无法看到问题所在(它表明断点是ntdll.dll中的_LdrpDoDebuggerBreak @ 0())。
有关如何诊断正在发生的事情的任何想法?
EDIT(回答下面的评论):Release和Debug都发生了同样的行为。平台设置为自动。测试的两台机器都是64位。它正在开发的是Windows 7,我建立的那个(以及它挂起的地方)是Windows 10。
EDIT2:我注意到的其他事情是尝试运行应用程序并没有调出一个控制台窗口(因此它在此之前就会挂起)。此外,在连接到悬挂过程后拆卸也会挂起VS.
EDIT3:这是完整的压缩项目:(已删除)。它包含调试.exe文件以及好奇。它只是一个带有以下代码的vanilla控制台应用程序项目:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("ASD");
Console.ReadLine();
}
}
}
答案 0 :(得分:0)
除了WriteLine()和ReadLine()之外,您确定代码中没有任何内容吗?我没有对它进行测试,但这听起来就像我期望通过调用Debugger.Break()
所期望的行为。
MSDN页面有一个注释:
从.NET Framework 4开始,运行时不再严格控制启动Break方法的调试器,而是向Windows错误报告(WER)子系统报告错误。 WER提供了许多设置来自定义问题报告体验,因此很多因素将影响WER响应错误的方式,例如操作系统版本,进程,会话,用户,计算机和域。如果在调用Break方法时遇到意外结果,请检查机器上的WER设置。有关如何自定义WER的详细信息,请参阅WER设置。如果您想确保无论WER设置如何启动调试器,请务必改为调用Launch方法。
在它正在工作的机器上,它要么忽略这一行,因为你没有安装开发工具,要么你的设置只是跳过它。在您正在开发的机器上,设置会有所不同。可能的费用是基于Windows 7和10的默认值,但我不知道。
答案 1 :(得分:0)
终于明白了。这是我可爱的杀毒软件。希望这可以帮助将来的某个人,Avast没有提出通常的提示,表明它正在扫描应用程序或隔离它或任何东西。禁用防护罩(Avast Shields Control - >禁用10分钟)可使应用程序正常工作。哎呀!
谢谢大家的支持!
有趣的是,它运行的另一台机器仍在运行Avast,但我认为它是一个主要版本。这适用于版本10.4.2233。