Cho*_*tch 20 c# wpf xaml visual-studio-2010
我正在使用Visual Studio 2010处理WPF应用程序Telerik
.
每次我使用设计器时,我一直在处理很多崩溃:点击一个元素,改变它的位置,甚至改变它的名字都会导致崩溃,并显示以下异常:
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)
[...]
Run Code Online (Sandbox Code Playgroud)
我尝试了以下事项:
这些尝试都没有奏效.
今天早上,我注意到设计师根本没有崩溃,我明白了原因:设计师在我打开或编辑XAML时崩溃了.
打开XAML后,Visual Studio开始冻结,每次我尝试点击某些内容时设计器都会崩溃.如果我关闭Visual Studio并构建解决方案(不打开XAML),一切都可以正常使用设计器.
我的猜测是,当Visual Studio试图将XAML代码 "转换" 为设计器中的图形元素时,出现问题,并且仅在该方向上.
问题:你有没有尝试过这种事情?您是否知道为什么修改XAML会导致崩溃以及如何解决?
先感谢您.
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
Run Code Online (Sandbox Code Playgroud)
最后,Local Variables
Exception时刻的检查员显示以下对象:
对象结束:
this._targetFrameworkProvider
发生异常的行的值如下.
小智 9
我猜,你最好的办法是调试Visual Studio!
小智 6
我相信您看到的问题与您正在使用的控件之一有关.
让我首先向您展示一种再现这个问题的方法; 如果你看到同样的问题.(我使用VS 2013处理这个问题比2010年好一点)
首先,我创建了一个自定义控件,它是一个TextBox; 我的代码看起来像这样.
public class CustomTextBox : TextBox
{
public string testText { get; set; }
public CustomTextBox()
: base()
{
if (string.IsNullOrEmpty(testText))
{
throw new ArgumentNullException();
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我把这个控件放到了xaml中
<Grid>
<local:CustomTextBox/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
当控件调用它的构造函数时,我所做的就是在属性为null时抛出一个异常(当设计者尝试将其新建并渲染时,它将在设计器中执行).
在VS2013中,我只是在XAML本身的控件下面有一条红线,但是根据VS2010的过去经验,这个问题确实导致设计师倒闭.
我建议你做的是,在没有设计师的情况下通过XAML,一次取出任何第三方/自定义控件.其中一个控件可能会抛出异常,从而产生您所看到的内容.如果是其中一个Telerik控件,则可以选择联系他们.
归档时间: |
|
查看次数: |
3310 次 |
最近记录: |