我正在使用Telerik
在Visual Studio 2010上使用WPF应用程序。
每次使用设计器时,我一直在处理很多崩溃:单击元素,更改其位置,甚至更改其名称会导致崩溃,并显示以下异常:< / p>
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)
[...]
我尝试了以下事项:
这些尝试都没有奏效。
今天早上,我注意到设计师根本没有崩溃,我明白了原因:当我打开或编辑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
最后,异常时Local Variables
检查员显示以下对象:
对象结束:
this._targetFrameworkProvider
值如下。
答案 0 :(得分:9)
我想,最好的办法是调试Visual Studio!
答案 1 :(得分:6)
我相信您看到的问题与您正在使用的控件之一有关。
首先让我告诉你一种重现这个问题的方法;如果你看到同样的问题。 (我使用VS 2013处理这个问题比2010年好一点)
首先,我创建了一个自定义控件,它是一个TextBox;我的代码看起来像这样。
public class CustomTextBox : TextBox
{
public string testText { get; set; }
public CustomTextBox()
: base()
{
if (string.IsNullOrEmpty(testText))
{
throw new ArgumentNullException();
}
}
}
然后我将此控件放入xaml
<Grid>
<local:CustomTextBox/>
</Grid>
当控件调用其构造函数时,当属性为null时,我正在做的就是抛出一个异常(在设计器尝试新建它并渲染它时,它将在设计器中执行)。
在VS2013中,我只是在XAML本身的控件下方有一条红线,但从过去VS2010的经验来看,这个问题确实导致设计师失败。
我建议你做的是在没有设计师的情况下通过XAML并一次取出任何第三方/自定义控件。其中一个控件可能会抛出异常,从而产生您所看到的内容。如果是其中一个Telerik控件,则可以选择联系他们。
答案 2 :(得分:2)
正如Gavin先前所说,试着找到问题的控制。
如果右键单击.xaml文件,您仍然可以编辑VS中的文件,选择Open With
并选择Source Code (Text) Editor
。
如果您希望将其设置为大量文件,可以将其设置为默认值,并在完成后将其切换。
此解决方案将打开.xaml文件而不使用设计器,但使用(某些)intellisense。
答案 3 :(得分:1)
另外,我在某处读到如果你以管理员身份启动vs它会给你带来问题,请尝试启动Visual Studio而不是Admin
阅读This,您可以尝试一些随机的事情......
答案 4 :(得分:1)
您可以尝试使用XAMLPAD来测试您的XAML页面。
参考:https://msdn.microsoft.com/en-us/library/vstudio/ms742398(v=vs.90).aspx
希望这会对你有所帮助。
答案 5 :(得分:1)
如果您认为它可能与您正在使用的组件有关,您可能需要尝试调试Visual Studio设计模式并查看在哪种情况下抛出ArgumentNullException
或至少在何时获取CallStack抛出异常。
查看此链接: How to troubleshoot and debug Visual Studio design mode errors?
我个人使用Blend实例和一个Visual Studio实例而不是两个Visual Studio实例。
我还会尝试从一个没有任何外部依赖关系的完整新项目来查看它是否与您的Visual Studio安装相关
答案 6 :(得分:0)
VS2010打破某些XAML是一个众所周知的问题。
您是否尝试将此代码添加到违规控件的加载事件中?
if (System.ComponentModel.DesignerProperties.GetIsInDesignMode(this)) { return; }