【问题标题】:Visual Studio soft-crashing when encountering XAML Errors in initialize初始化时遇到 XAML 错误时 Visual Studio 软崩溃
【发布时间】:2011-01-04 17:43:25
【问题描述】:

我最近在使用 Visual Studio 2010 时遇到了一些严重问题。当我在控件/窗口的InitializeComponent() 中遇到某些类型的 XAML 错误时,它会以一种特殊的方式崩溃。

程序中断,Visual Studio 启动,就像它正在捕获异常(因为它是),然后在我的 XAML 文件中中途停止显示一个损坏的突出显示,没有关于 什么 错误的详细信息。示例:

没有弹出消息,也没有详细说明任何地方出了什么问题,只有一个指向我的InitializeComponent()调用的调用堆栈。

现在通常我会尝试一些错误来解决这个问题,然后找出我搞砸的地方,但真正的问题不是我的代码。在这一点上,Visual Studio 完全没用。它报告我的应用程序仍处于“运行”模式。工具栏或菜单中的停止/中断/重新启动按钮不执行任何操作(但灰显)。

关闭应用程序并不会停止这种行为,关闭 Visual Studio 会使其陷入一个巨大的循环中,它对我大喊大叫,抱怨每个打开的文件都不在调试项目中,然后在我耗尽每个打开的文件时重复这个过程。

我必须强制关闭devenv.exe,在这种情况连续发生 3-4 次之后会浪费很多时间(因为我的项目通常很大,而工作室在@加载时可能会很慢)。

言归正传

  1. 有其他人经历过这种情况吗?
  2. 如何阻止工作室锁定。
  3. 我至少可以通过另一种方式从这个野兽中获取信息,以便我可以更快地修复我的 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>

最后说明

以下解决方案没有帮助我:

  1. 重新启动 Visual Studio
  2. 正在重新启动
  3. 重新安装 Visual Studio
  4. 禁用 ReSharper 和 Reflector 等插件

更新(稍后)带答案

我想对此进行补充(作为伪答案),因为我后来发现了有关此的更多信息,我想将这些信息传递给在 google 中找到此问题的人。

真正的问题: XamlParseException 在 Debug -> Exceptions 中被选中以在它发生时中断,因为这发生在 WPF 连线期间 vstudio 无法正确捕获它(通常它会下降几个级别并在 vstudio 可以处理的地方处理)。

只需将其关闭,生活就会再次美好。

我不想将此作为答案,因为 mazelo 提供的答案也是正确的,当 vstudio 以管理员身份运行时,它似乎能够正确捕获异常并从那里进行调试,所以我不想取消他的回答状态,因为他的解决方案确实有效。

【问题讨论】:

  • 你能发布一些重现问题的来源吗?
  • @Andres 我已经更新了我的问题。
  • @Aren 只是为了澄清这发生在编译时和执行时?即...您编译它并锁定,是这样吗?当给定文件的设计器关闭时会发生这种情况吗?
  • 您是否安装了 Resharper 等插件?或者你有干净安装的VS。你试过在不同的机器上打开你的项目吗?
  • @Tomas Voracek:我确实安装了 resharper。您认为这可能是导致挂断的原因吗?

标签: .net wpf visual-studio-2010 crash


【解决方案1】:

刚刚遇到类似问题,上面列出的答案对我不起作用。我会在这里发布我的解决方案,以防其他人发生这种情况。我有一个包含一些可疑 xaml 的窗口,当我尝试在 VS 中打开窗口选项卡时,它每次都会崩溃。当您想进入那里删除错误代码时真是太棒了!简单的解决方法:在记事本中打开xaml文件,删除坏代码,然后在VS中重建。很简单,但对我有用。

【讨论】:

  • 似乎是一种变通方法而不是修复方法。在这种情况下,Visual Studio 不应该变得不可恢复,但最终是的;如果您可以阻止XamlParseException 的发生,它将停止锁定,但是如果没有有关 Xaml 问题的信息,您如何解决问题?
【解决方案2】:

我遇到了类似的问题。几个小时后,我有了以管理员身份启动 Visual Studio 的想法。修复了问题,但还是不知道为什么。

【讨论】:

  • 天哪,谢谢!有效。哦,伙计,我找这个很久了!
  • 其实我要谢谢你!我整个早上都在担心这个问题,这个威胁是谷歌搜索后的第一个结果。在阅读时,我记得,我在一个月前解决了这个问题,但我忘记了解决方案;-)
  • 此问题的访问者请注意:此答案是正确的,但问题帖子底部有更具体的细节,因为我在将近 2 年后能够更详细地弄清楚这一点。
【解决方案3】:

它可能在嵌入式用户控件的初始化中崩溃。看看该控件的 DependencyProperties 是如何处理的。

【讨论】:

    【解决方案4】:

    要尝试的事情:

    • 在调试选项下关闭“异常助手”。
    • 在项目的调试属性下禁用“Visual Studio 托管进程”。

    如果您在“异常”对话框 (Ctrl+Shift+E) 中启用“CLR 异常中断”并禁用“仅启用我的代码...”,行为是否会有所不同?

    【讨论】:

      【解决方案5】:

      在我的 aspx 文件中发生了类似的事情,在 MOSS 上的项目。每次都有单行导致 VS 崩溃。我发现唯一的解决方案是删除行并仅在文件未在 VS 中打开时添加它。

      您检查文件格式了吗,我的意思是它是正确的 Unicode/Ansi/etc 文件吗?在二进制级别检查它。

      尝试打开新的 WPF 项目,通过 XAML(无代码隐藏),看看它是否仍然崩溃。 尝试使用 Initialize 没有帮助?

      编辑:我尝试了您发布的 XAML,没有错误。 VS版本相同。

      【讨论】:

      • 我发布的 XAML 是一个全新的项目,专门用于说明此错误。所有文件均为 UTF-8,正确且经过验证。
      【解决方案6】:

      尝试在 Visual Studio 设置中禁用视觉效果。我知道这听起来很疯狂,而且听起来无关紧要,但是当我在我相当旧的显卡上这样做时,它的崩溃要少得多。

      至于再次发生的崩溃,如果上述方法不起作用,我建议向 Microsoft Connect 提交报告。

      【讨论】:

      • :( 尝试禁用效果/加速,没有运气。
      【解决方案7】:

      更改您的显卡驱动程序。更新它们或恢复到 Microsoft 提供的驱动程序。

      在我的工作计算机上,我恢复为内置英特尔视频适配器,Visual Studio 和 Windows 资源管理器不再崩溃。

      【讨论】:

        【解决方案8】:

        这也发生在我身上。当有一个简单的场景时,我每次都可以重现这个问题:

        <UserControls:OperationLoader
                      DepProperty1="{Binding VMProperty1}"
                      DepProperty2="{Binding VMProperty2, Converter={StaticResource boolToInverse}}}"/>
        

        如果我移除转换器部分,一切都会正常工作。问题可能是转换器实现,如下所示:

        public sealed class BooleanToInverseConverter : BooleanConverter<bool>
        {
            public BooleanToInverseConverter() :
                base(false, true)
            {
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2021-04-30
          • 2016-04-08
          • 1970-01-01
          • 2016-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-25
          • 2021-10-29
          相关资源
          最近更新 更多