空引用异常取决于加载的解决方案项目?

时间:2011-04-28 14:22:47

标签: visual-studio-2010 nullreferenceexception

好的,这个问题有点奇怪。

我有一个VS2010内置的应用程序,可以在自己的解决方案中运行良好。但是,如果我将项目加载到一个更大的解决方案(包含110多个项目),我开始获得NullReferenceExceptions,有时如果我继续通过它们它可以正常工作,有时它不会。

问题仍然存在:当我将项目作为更大的解决方案的一部分加载时,为什么这些对象不会被初始化,而不是当它在自己的解决方案中时?

编辑:以下是其中一个例外的示例堆栈跟踪:

A first chance exception of type 'System.NullReferenceException' occurred in DemoApp.exe

Additional information: Object reference not set to an instance of an object.

A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll

Additional information: Exception has been thrown by the target of an invocation.

System.Windows.Data Error: 17 : Cannot get 'ParentOrganDisplayName' value (type 'String') from '' (type 'OrganLocationViewModel'). BindingExpression:Path=ParentOrganDisplayName; DataItem='OrganLocationViewModel' (HashCode=19153159); target element is 'TextBox' (Name='organParentNameTxt'); target property is 'Text' (type 'String') TargetInvocationException:'System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at DemoApp.ViewModel.OrganLocationViewModel.get_ParentOrganDisplayName() in C:\Visual Studio 2010\Projects\DemoApp\ViewModel\OrganLocationViewModel.cs:line 100
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
   at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index)
   at MS.Internal.Data.PropertyPathWorker.GetValue(Object item, Int32 level)
   at MS.Internal.Data.PropertyPathWorker.RawValue(Int32 k)'

2 个答案:

答案 0 :(得分:0)

根据堆栈跟踪,ParentOrganDisplayName的getter具有NRE。所以你应该检查一下那里做了什么。

也许在您更大的解决方案中,您使用的应用程序略有不同?或者(由于更多的事情发生)一切都有点延迟,你的ViewModel(或其他东西)还没有正确初始化(a.k.a.竞争条件)。

答案 1 :(得分:0)

好吧,我找到了为什么它将异常放在更大的解决方案中而不是解决方案本身的原因:当异常发生时,解决方案本身并没有破坏!我开启了例外,当然,在同一个地方抛出相同的例外。