O que causou a NullReferenceException em WpfXamlLoader.TransformNodes ()?
-
28-10-2019 - |
Pergunta
Estou tentando rastrear um problema que só acontece no modo de liberação e é provavelmente causado pela ofuscação inválida de alguma propriedade.Eu sei que isso acontece ao inicializar um controle específico, mas esse controle é enorme.Passei um dia examinando todo o XAML e Bindings e ainda não consigo ver o que está causando essa exceção.
Existe alguma maneira de obter mais informações.Para saber o que causou essa exceção?
Exception : System.NullReferenceException
Message : Object reference not set to an instance of an object.
Source : PresentationFramework
Help :
Stack :
at System.Windows.Markup.WpfXamlLoader.TransformNodes(XamlReader xamlReader, XamlObjectWriter xamlWriter, Boolean onlyLoadOneNode, Boolean skipJournaledProperties, Boolean shouldPassLineNumberInfo, IXamlLineInfo xamlLineInfo, IXamlLineInfoConsumer xamlLineInfoConsumer, XamlContextStack`1 stack, IStyleConnector styleConnector)
at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at MyClass.InitializeComponent()
Solução 2
Não parece possível obter uma mensagem de exceção mais detalhada.Dividir o XAML problemático em partes menores é o caminho a percorrer.
Outras dicas
Não conheço uma maneira de obter uma mensagem de exceção mais detalhada, mas pode pelo menos ser útil para outras pessoas saber as possíveis causas.Acabei de rastrear um NullReferenceException
em WpfXamlLoader.TransformNodes
até um DependencyProperty
que foi registrado com DependencyProperty.Register(string, Type, Type)
.Mudança
public static readonly DependencyProperty FooProperty = DependencyProperty.Register(
nameof(Foo), typeof(object), typeof(Bar));
para
public static readonly DependencyProperty FooProperty = DependencyProperty.Register(
nameof(Foo), typeof(object), typeof(Bar), new FrameworkPropertyMetadata(null));
corrigiu o problema.