Null Reference Исключения в зависимости от того, в какой проект решения загружается? - PullRequest
0 голосов
/ 28 апреля 2011

Хорошо, эта проблема немного странная.

У меня есть приложение, встроенное в 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 голосов
/ 28 апреля 2011

Ну, я нашел причину, по которой оно вызывает исключение в большем решении, а не в решении, где оно само по себе: решение, в котором оно само по себе не сломалось при возникновении исключений!Я включил исключения и, конечно же, одни и те же исключения создавались там же.

0 голосов
/ 28 апреля 2011

Согласно трассировке стека, метод получения ParentOrganDisplayName имеет NRE.Так что вы должны проверить, что там делается.

Возможно, в вашем более крупном решении вы используете приложение немного по-другому?Или (из-за большего количества происходящего) все немного задерживается, и ваша ViewModel (или что-то еще) еще не инициализировалась должным образом (состояние гонки).

...