Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Editing XAML leads Visual Studio's Designer to crash

Tags:

Original Question


I'm working on a WPF application with Visual Studio 2010, using Telerik.

I have been dealing with a lot of crashes everytime I use the designer : clicking on a element, changing its position, even changing its name leads to a crash, and displays the following exception :

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)
[...]

I tried the following things :

  • Uninstall and reinstall Telerik;
  • Uninstall and reinstall .NET 4.0;
  • Uninstall and reinstall Visual Studio.

None of these attempts worked.

This morning, I noticed that the designer didn't crashed at all, and I understood why : the designer crashes when I have opened or edited XAML.

After opening XAML, Visual Studio begin to freeze and the designer crashes everytime I try to click something. If I close Visual Studio and Build the solution (without opening XAML), everything works fine with the designer.

My guess is that something goes wrong when Visual Studio tries to "convert" XAML code to graphical elements in the designer, and only in that direction.


Question : Have you ever experimented this kind of thing ? Have you any idea of why modifiying XAML causes crashes and how to solve it ?

Thank you in advance.


New attemps done after reading answers

  • Debug the Visual Studio instance itself when the designer opens. The method which leads to the ArgumentNullException is GetRuntimeTime. I've been able to see the .NET code but I couldn't determine the source of the problem. See the full stack trace below :

enter image description here

Additionally, this is the exact line where the error occurs and the exception details. Note that the file is VSIsolationProviderService.cs and that I am able to see the source thanks to the .NET Reflector Object Browser.

enter image description here

  Message=Value cannot be null.
  Source=mscorlib
  StackTrace:
       to System.RuntimeType.MakeGenericType(Type[] instantiation)
  InnerException: null

Finally, the Local Variables inspector at the moment of the Exception shows the following object :

enter image description here

End of the object :

enter image description here

Answers to comments :

  • The value of this._targetFrameworkProvider at the line where the exception occurs is below. enter image description here
like image 869
Chostakovitch Avatar asked Feb 18 '15 10:02

Chostakovitch


People also ask

How do I open XAML Designer in Visual Studio?

To open the XAML Designer, right-click a XAML file in Solution Explorer and choose View Designer. to switch which window appears on top: either the artboard or the XAML editor.

Does blend support XAML?

Blend for Visual Studio helps you design XAML-based Windows and Web applications. It provides the same basic XAML design experience as Visual Studio and adds visual designers for advanced tasks such as animations and behaviors.

What is XAML in Visual Studio?

Applies to: Visual Studio Visual Studio for Mac Visual Studio Code. Extensible Application Markup Language (XAML) is a declarative language that's based on XML. XAML is used extensively in the following types of applications to build user interfaces: Windows Presentation Foundation (WPF) apps.


1 Answers

I guess, your best bet is to debug Visual Studio!

  • Run Visual Studio (instance #1) and load your solution
  • Run a 2nd instance of Visual studio (#2)
  • From instance #2 go, Debug->Attach to process->Select devenv.exe (instance #1, make sure to select Managed debugging)
  • Then select Debug->Exception, press "Find.." and search for System.ArgumentNull then check "Thrown"
  • Go to instance #1, load your view in the designer, this should trigger a break point in instance #2 and it should show you a full stack trace. This information should be enough to identify the offending control/component..
like image 62
Mo the Conqueror Avatar answered Oct 29 '22 13:10

Mo the Conqueror