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 仍然可以正常工作。我什至尝试删除本地存储库并重新克隆它,但没有成功。奇怪的是,备份文件夹中的所有内容 运行 都很好。为什么文件夹名称会有所不同?
我一开始并没有找出导致问题发生的原因,但我最终想出了两个可行的解决方案。
如编辑中所述: 将解决方案目录复制到另一个目录并 运行出于某种原因从那里将其安装。
出于某种原因,运行ning Debug|Any CPU
不起作用,但是 运行ning Debug|x86
或 Debug|x64
起作用.
其他人不太可能 运行 了解我的确切情况,但我将我的解决方案留在这里供后代使用。也许其他人可以从中受益。
我正在 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 仍然可以正常工作。我什至尝试删除本地存储库并重新克隆它,但没有成功。奇怪的是,备份文件夹中的所有内容 运行 都很好。为什么文件夹名称会有所不同?
我一开始并没有找出导致问题发生的原因,但我最终想出了两个可行的解决方案。
如编辑中所述: 将解决方案目录复制到另一个目录并 运行出于某种原因从那里将其安装。
出于某种原因,运行ning
Debug|Any CPU
不起作用,但是 运行ningDebug|x86
或Debug|x64
起作用.
其他人不太可能 运行 了解我的确切情况,但我将我的解决方案留在这里供后代使用。也许其他人可以从中受益。