C# 为什么在Visual Studio 2015中重新加载设计器时控制台应用程序会弹出?

C# 为什么在Visual Studio 2015中重新加载设计器时控制台应用程序会弹出?,c#,wpf,visual-studio,visual-studio-2015,C#,Wpf,Visual Studio,Visual Studio 2015,我有一种奇怪的行为: 昨天我在Visual Studio 2015上开发一个WPF应用程序,我想在调试时向控制台提示符写入一些值,所以我 今天,当我启动VisualStudio时,即使没有启动程序,也会弹出一个控制台窗口。这很奇怪。跟踪它时,发现它来自加载visual studio的设计器: 有人知道为什么会发生这种情况以及如何解决吗 当我禁用运行项目代码时,我会得到这样一个表单,其中ImageConrol看起来有点禁用,但控制台再也不会弹出: 要显示控件,WPF designer实际上运行您

我有一种奇怪的行为:

昨天我在Visual Studio 2015上开发一个WPF应用程序,我想在调试时向控制台提示符写入一些值,所以我

今天,当我启动VisualStudio时,即使没有启动程序,也会弹出一个控制台窗口。这很奇怪。跟踪它时,发现它来自加载visual studio的设计器:

有人知道为什么会发生这种情况以及如何解决吗

当我禁用运行项目代码时,我会得到这样一个表单,其中ImageConrol看起来有点禁用,但控制台再也不会弹出:


要显示控件,WPF designer实际上运行您的代码(不是所有代码,但仍然运行)。所以,设计器可能会执行您的
alloconsole
调用,这会导致您观察到的行为。要避免这种情况,请执行以下操作:

if (!DesignerProperties.GetIsInDesignMode(new DependencyObject())) {
    AllocConsole();
    Console.WriteLine("test");
}

WPF编辑器运行部分应用程序以提供实时预览。它通常很有用,但在某些情况下可能会很烦人,例如您所处的环境。@Theodoroschatzigannakis还因为(在其他应用程序中)ImageControl显示当前的实时图像,所以它保留图像物理文件,而我无法重命名、编辑、删除和移动该文件。。等,因为它正被另一个程序使用。你安装了任何第三方控件吗?@Rohit嗯,我安装了DevExpress的东西,还安装了ReSharper。我在几个应用程序中使用这些包,但在其他应用程序中不会出现这种行为xdesproc.exe是Visual studio在后台生成的设计呈现过程。之所以会出现这种情况,是因为设计器执行AllocSole方法(我实际上能够重现这种情况)。设计器不会执行所有代码,所以可能在您将此控制台用于未执行的部分之前)。应用此修复程序(或注释AllocSole out)时,不要忘记重建项目。您可以在屏幕截图上看到,您打开的控制台属于XDesProc.exe进程。这是WPF设计器过程。当您关闭属于此进程的控制台时,它会破坏整个进程,所以最终会终止WPF设计器(您也可以在屏幕截图上看到这一点)。为什么关闭该控制台会终止进程您可以在这里阅读:。是的,现在完全有意义了,所以感谢链接:)