WPF main window 未显示调试版本

WPF main window not showing for Debug build

我正在 Visual Studio 中使用 WPF 开发一个 C# 项目。我的应用程序昨天正在构建并且 运行ning 非常完美。据我所知,我没有对构建过程进行任何更改。

今天,当我尝试 运行 调试构建时,它正确构建和部署,并且进程启动,但应用程序启动 window 从未显示(甚至在 Windows 任务栏)。我尝试按照 this (external) link 中的建议将 Visual Studio 调试器附加到进程,但进程在 Visual Studio > 调试 > 附加到进程... 弹出窗口中显示为灰色。即使我浏览到 Debug 文件夹并双击 *.exe 文件,它也不会显示。

不寻常的是,如果我 运行 在 Release 而不是 Debug 中,一切正常。我检查了项目 > 属性 > 调试配置; Debug 和 Release 是相同的(我只是在创建项目时使用了默认值)。其他项目在调试和发布版本中也能正常工作。我尝试比较 *.csproj 和 *.sln 文件,但我找不到任何显着差异。

我试过搜索这个,但真的很难找到有用的东西。 This question 是无关的,因为 window 甚至没有出现在我的任务栏中。如果我尝试包含“调试”一词,我会收到大量关于将输出重定向到控制台的问题,这不是我的问题。

我不确定什么 code/configurations 与这个问题相关,所以如果您需要有关设置的更多信息,请告诉我。

编辑 1: 我尝试在 App class:

的自动生成部分中的 InitializeComponent() 方法中打断
public partial class App : System.Windows.Application {
    
    private bool _contentLoaded;
    
    /// <summary>
    /// InitializeComponent
    /// </summary>
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
    public void InitializeComponent() {
        if (_contentLoaded) {
            return;
        }
        _contentLoaded = true;
        
        #line 5 "..\..\App.xaml"
        this.StartupUri = new System.Uri("Views\MainWindow.xaml", System.UriKind.Relative);
        
        #line default
        #line hidden
        System.Uri resourceLocater = new System.Uri("/MyProject;component/app.xaml", System.UriKind.Relative);
        
        #line 1 "..\..\App.xaml"
        System.Windows.Application.LoadComponent(this, resourceLocater);
        
        #line default
        #line hidden
    }
    
    /// <summary>
    /// Application Entry Point.
    /// </summary>
    [System.STAThreadAttribute()]
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
    public static void Main() {
        MyProject.App app = new MyProject.App();
        app.InitializeComponent();
        app.Run();
    }
}

如果代码在 if(_contentLoaded) {_contentLoaded = true; 之间,这将中断 Debug 或 Release,但在方法的其他任何地方,我得到“当前不会命中断点。没有可执行代码调试器的目标代码类型与此行相关联。”如果我尝试在 Main() 方法中的任何位置放置断点,我会收到相同的消息。

虽然调试在上面提到的特定时间间隔中断,但如果我继续它仍然不显示。

编辑 2:

事情开始变得奇怪了。由于该项目已在 Git 中备份,因此我一路回滚到第一次提交以及沿途的其他几次提交。我仍然无法为 Debug 显示任何内容,但 Release 仍然可以正常工作。我什至尝试删除本地存储库并重新克隆它,但没有成功。奇怪的是,备份文件夹中的所有内容 运行 都很好。为什么文件夹名称会有所不同?

我一开始并没有找出导致问题发生的原因,但我最终想出了两个可行的解决方案。

  1. 如编辑中所述: 将解决方案目录复制到另一个目录并 运行出于某种原因从那里将其安装。

  2. 出于某种原因,运行ning Debug|Any CPU 不起作用,但是 运行ning Debug|x86Debug|x64 起作用.

其他人不太可能 运行 了解我的确切情况,但我将我的解决方案留在这里供后代使用。也许其他人可以从中受益。