【发布时间】:2015-02-18 10:30:13
【问题描述】:
原始问题
我正在使用 Telerik 使用 Visual Studio 2010 开发 WPF 应用程序。
我每次使用设计器时都会遇到很多崩溃:点击一个元素,更改其位置,甚至更改其名称都会导致崩溃,并显示以下异常:
System.ArgumentNullException
Value cannot be null.
to System.RuntimeType.MakeGenericType(Type[] instantiation)
to Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkUtil.GetRuntimeType(Type type)
to Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkType.TryGetRuntimeType()
to Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkUtil.EnsureRuntimeType(Type type)
to Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkProvider.GetRuntimeType(Type reflectionType)
[...]
我尝试了以下方法:
- 卸载并重新安装 Telerik;
- 卸载并重新安装 .NET 4.0;
- 卸载并重新安装 Visual Studio。
这些尝试都没有奏效。
今天早上,我注意到设计器根本没有崩溃,我明白了原因:当我打开或编辑 XAML 时设计器崩溃。
打开 XAML 后,Visual Studio 开始冻结,并且每次我尝试单击某些东西时设计器都会崩溃。如果我关闭 Visual Studio 并构建解决方案(不打开 XAML),设计器一切正常。
我的猜测是,当 Visual Studio 尝试在设计器中将 XAML 代码“转换”为图形元素时出现问题,并且仅在那个方向上。
问题:你有没有尝试过这种东西?您知道为什么修改 XAML 会导致崩溃以及如何解决它吗?
提前谢谢你。
阅读答案后的新尝试
- 在设计器打开时调试 Visual Studio 实例本身。导致
ArgumentNullException的方法是GetRuntimeTime。我已经能够看到 .NET 代码,但我无法确定问题的根源。请参阅下面的完整堆栈跟踪:
此外,这是发生错误的确切行和异常详细信息。请注意,文件是VSIsolationProviderService.cs,感谢.NET Reflector Object Browser,我可以看到源代码。
Message=Value cannot be null.
Source=mscorlib
StackTrace:
to System.RuntimeType.MakeGenericType(Type[] instantiation)
InnerException: null
最后,出现异常时的Local Variables 检查器显示以下对象:
对象结束:
对cmets的回答:
- 发生异常的行
this._targetFrameworkProvider的值如下。
【问题讨论】:
-
你有 AnkhSVN 插件吗?
-
@Muds 我不知道在哪里可以检查这个,但我很确定不是。我在 Visual Studio 之外使用
TortoiseSVN。 -
您使用的实际 XAML 是什么?你能做一个重现错误的小项目吗?
-
@JJS 我使用的 XAML 是一个大项目的一部分。我的整个团队都遇到了设计师崩溃的问题。我已经能够通过
GetRuntimeType( puu.sh/hssuL/4919e1cee5.png ) 方法确定崩溃发生了。我开始认为这是VS2010的一个错误。 -
您也可以发布活动日志吗? blogs.msdn.com/b/visualstudio/archive/2010/02/24/…
标签: c# wpf visual-studio-2010 xaml