C# 尝试添加命令行支持后无法使用断点
更新3 这实际上是由我包含的使用C# 尝试添加命令行支持后无法使用断点,c#,wpf,xaml,C#,Wpf,Xaml,更新3 这实际上是由我包含的使用ILMerge的构建后操作引起的。有关更多详细信息,请参阅 更新2 这似乎不是添加命令行支持直接造成的,但我仍然不知道是什么原因造成的。有关更多详细信息,请参阅 更新 在进行以下更改以允许命令行支持后,我无法在所有断点上单步执行程序并显示此消息: 当前不会命中断点。尚未为此文档加载任何符号 我检查后发现缺少文件Microsoft.VisualStudio.Debugger.Runtime.pdb,但我不知道它去了哪里 有什么原因会因为App.xaml更新而发生这种
ILMerge
的构建后操作引起的。有关更多详细信息,请参阅
更新2
这似乎不是添加命令行支持直接造成的,但我仍然不知道是什么原因造成的。有关更多详细信息,请参阅
更新
在进行以下更改以允许命令行支持后,我无法在所有断点上单步执行程序并显示此消息:
当前不会命中断点。尚未为此文档加载任何符号
我检查后发现缺少文件Microsoft.VisualStudio.Debugger.Runtime.pdb
,但我不知道它去了哪里
有什么原因会因为App.xaml
更新而发生这种情况吗
我有一个
WPF
应用程序,需要为其实现命令行参数
在回答之后,我修改了App.xaml
以删除StartUpUri
属性:
<Application x:Class="WpfFileDeleter.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfFileDeleter"
>
<Application.Resources>
</Application.Resources>
</Application>
但在启动时在顶部插入断点并在Visual Studio中调试应用程序后,它只是挂起在就绪状态下,但实际上不允许我单步执行程序
我为StartUpUri
尝试了以下值:
StartUpUri = "App.xaml"
StartUpUri = "App.xaml.cs"
StartUpUri = "App.xaml.cs.OnStartUp"
但应用程序只是抛出一个“无法定位资源”IOException
根据ethicalogics的回答,在中定义启动参数就足够了
应用程序启动事件处理程序。如果从xaml中删除starupuri,则需要在sratup处理程序中定义一些东西,而不是那个东西
因此,App.xaml
如下所示:
<Application x:Class="MonitorTool.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MonitorTool"
StartupUri="Views/SplashScreen.xaml"
Exit="Application_Exit">
</Application>
private void Application_Startup(object sender, StartupEventArgs e)
{
string[] args = e.Args;
//Check for some value (for/foreach-loop) and do some stuff
MainWindow w = new MainWindow();
w.Show();
}
当您使用XAML方式启动时,请确保名称空间是正确的。我在一个名为Views
的文件夹中找到了MainWindow.xaml
或者像这样创建启动:startup=“Application\u startup”
并在App.xaml.cs
文件中创建一个方法。再次检查名称空间,确保所有内容都在这里
既然你的应用程序正在构建中,我想这应该是可行的,你至少应该达到这个方法
private void Application_Startup(object sender, StartupEventArgs e)
{
MainWindow window = new MainWindow();
window.Show();
}
注意
使用参数时,不需要使用overrideOnStartup()
,只需这样做:
<Application x:Class="MonitorTool.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MonitorTool"
StartupUri="Views/SplashScreen.xaml"
Exit="Application_Exit">
</Application>
private void Application_Startup(object sender, StartupEventArgs e)
{
string[] args = e.Args;
//Check for some value (for/foreach-loop) and do some stuff
MainWindow w = new MainWindow();
w.Show();
}
你需要在你的onstart()方法中做某事。。。MainWindow w=新的MainWindow();w、 Show()@激励但调试器从未真正达到该方法可能重复此方法可以修复断点问题:@激励我在那里尝试了答案,但毫无帮助,因为它说符号未加载的唯一模块是Microsoft.VisualStudio.debugger.Runtime.pdb,我在任何地方都找不到此文件!此外,我有其他项目,不能加载这些相同的符号,但他们仍然能够使用断点。。。;事实证明,实际上还有一些其他的问题,我根本无法一步一步地完成代码。我的所有断点都有以下消息:当前不会命中断点。尚未为此文档加载任何符号
。非常烦人,但除此之外,应用程序似乎正在工作。如果您在调试
或发布
模式下运行,您可以尝试清理和重建项目。有时候这会有帮助!我正在Debug
模式下运行-尝试清理它,但没有成功!