【发布时间】:2011-01-04 17:43:25
【问题描述】:
我最近在使用 Visual Studio 2010 时遇到了一些严重问题。当我在控件/窗口的InitializeComponent() 中遇到某些类型的 XAML 错误时,它会以一种特殊的方式崩溃。
程序中断,Visual Studio 启动,就像它正在捕获异常(因为它是),然后在我的 XAML 文件中中途停止显示一个损坏的突出显示,没有关于 什么 错误的详细信息。示例:
没有弹出消息,也没有详细说明任何地方出了什么问题,只有一个指向我的InitializeComponent()调用的调用堆栈。
现在通常我会尝试一些错误来解决这个问题,然后找出我搞砸的地方,但真正的问题不是我的代码。在这一点上,Visual Studio 完全没用。它报告我的应用程序仍处于“运行”模式。工具栏或菜单中的停止/中断/重新启动按钮不执行任何操作(但灰显)。
关闭应用程序并不会停止这种行为,关闭 Visual Studio 会使其陷入一个巨大的循环中,它对我大喊大叫,抱怨每个打开的文件都不在调试项目中,然后在我耗尽每个打开的文件时重复这个过程。
我必须强制关闭devenv.exe,在这种情况连续发生 3-4 次之后会浪费很多时间(因为我的项目通常很大,而工作室在@加载时可能会很慢)。
言归正传
- 有其他人经历过这种情况吗?
- 如何阻止工作室锁定。
- 我至少可以通过另一种方式从这个野兽中获取信息,以便我可以更快地修复我的 XAML 错误,而不是在 3-4 次试错编译后产生相同的崩溃?
我们将不胜感激。
Visual Studio 2010 版本:10.0.30319.1RTM
编辑和更新
FWIW,导致此问题的主要错误是XamlParseExceptions(我在发现我的 XAML 有问题后才发现这一点)。
我认为我需要更清楚,我不是在寻找我的代码问题的解决方案,因为这些通常是拼写错误/小问题,我正在寻找解决方案结果 VStudio 搞砸了。
上图中 100% 肯定导致的特定错误是由于忘记数据触发器上的 Value 属性而导致的 XamlParseException。
我已经修复了那个部分,但它仍然没有告诉我为什么我的工作室在 XAML 的解析中抛出一个完全正常的异常时会变成一堆绝育程序。
会导致此问题的代码(至少对我而言)
这是基本模板 WPF 应用程序,具有以下 Window.xaml 代码。问题是模板中<DataTrigger ...> 上缺少Value="True"。它会在调试时生成XamlParseException 和 Visual Studio 崩溃,如上所述。
<Window x:Class="XamlParseExplosion.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate x:Key="BankListItemTemplate">
<Border x:Name="ItemBorder" Width="250" Margin="1" BorderBrush="Blue" BorderThickness="5,0,0,0">
<Grid>
<Label Content="{Binding Name}" />
</Grid>
</Border>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsDirty}">
<Setter TargetName="ItemBorder" Property="BorderBrush" Value="Red" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Window.Resources>
<Grid>
<ListView ItemTemplate="{StaticResource BankListItemTemplate}" />
</Grid>
</Window>
最后说明
以下解决方案没有帮助我:
- 重新启动 Visual Studio
- 正在重新启动
- 重新安装 Visual Studio
- 禁用 ReSharper 和 Reflector 等插件
更新(稍后)带答案
我想对此进行补充(作为伪答案),因为我后来发现了有关此的更多信息,我想将这些信息传递给在 google 中找到此问题的人。
真正的问题: XamlParseException 在 Debug -> Exceptions 中被选中以在它发生时中断,因为这发生在 WPF 连线期间 vstudio 无法正确捕获它(通常它会下降几个级别并在 vstudio 可以处理的地方处理)。
只需将其关闭,生活就会再次美好。
我不想将此作为答案,因为 mazelo 提供的答案也是正确的,当 vstudio 以管理员身份运行时,它似乎能够正确捕获异常并从那里进行调试,所以我不想取消他的回答状态,因为他的解决方案确实有效。
【问题讨论】:
-
你能发布一些重现问题的来源吗?
-
@Andres 我已经更新了我的问题。
-
@Aren 只是为了澄清这发生在编译时和执行时?即...您编译它并锁定,是这样吗?当给定文件的设计器关闭时会发生这种情况吗?
-
您是否安装了 Resharper 等插件?或者你有干净安装的VS。你试过在不同的机器上打开你的项目吗?
-
@Tomas Voracek:我确实安装了 resharper。您认为这可能是导致挂断的原因吗?
标签: .net wpf visual-studio-2010 crash