Итак, я работал над проектом, и все шло нормально, пока ошибка NullReferenceException: Object reference not set to an instance of an object
не начала появляться только в конструкторе XAML для View вместе с трассировкой стека. Однако проект будет работать нормально.
Чтобы найти причину этой ошибки, я начал закомментировать код как в оскорбительном View, так и во ViewModel. Это дало бы противоречивые и странные результаты, когда я закончил с почти всем закомментированным кодом.
Например, это может вызвать ошибку:
private async void FirmwareUpdateAsync()
{
bool isOK = true;
isOK = await Task.Run(() => _usb.DeviceHandshakeAsync());
if (!isOK)
{
// Left Empty
}
}
Но это не будет:
private async void FirmwareUpdateAsync()
{
bool isOK = true;
isOK = await Task.Run(() => _usb.DeviceHandshakeAsync());
/*if (!isOK)
{
// Left Empty
}*/
}
Я потратил два дня, пытаясь понять это и пытаясь отследить точную причину, когда ошибка, по-видимому, переросла в Could not load file or assembly'[ProjectName], version=0.0.0.1, Culture=neutral, PublicKeyToken=null". The system cannot find the specified folder
и Type reference cannot find type named'{clr-namespace:[ProjectName].ViewModels.SubViewModels;assembly = [ProjectName]}ErrorViewModel.
Опять же, это происходит только в конструкторе XAML, а номера строк для этих ошибок являются объявлениями viewModels и subviews:
<Page.DataContext>
<vm:Pg7FirmwareUpdateViewModel/> <= Here
</Page.DataContext>
<Page.Resources>
<!-- Sets Progress Bar View -->
<DataTemplate DataType="{x:Type svm:ErrorViewModel}"> <= Here
<sv:ErrorView/>
</DataTemplate>
</Page.Resources>
Как ни странно, количество этих ошибок зависит от того, сколько представлений я открываю (всегда в объявлениях), плюс я все еще могу запустить проект.
Никаких сборок или перестроений или очистка, кажется, имеет значение, я проверил, что dll проекта находится в папке bin, я пытался, но не смог использовать fuslogvw (Не могу понять, как получить журнал для проекта, мне удалось только захватить что-то с помощью PowerShell. exe, который я не использовал), и я посмотрел на все 150+ вопросов об этих ошибках, которые я мог найти. Любая подсказка, что я должен сделать, чтобы это исправить?
ОБНОВЛЕНИЕ: Подумав об ответе Марка ниже, я исключил из проекта и переместил подозрительные View и ViewModels и заменил их новыми файлами с таким же именем. Все кажется в порядке, пока я снова не добавлю DataContext. Есть ли способ, которым проект может быть поврежден, поэтому, хотя я очищаю и перестраиваю решение, VS использует неверные данные или что-то в этом роде? Это сводит с ума.
ОБНОВЛЕНИЕ2: Вместо слепого удара в темноте, я решил, что просто скопирую все файлы в новую папку и вернусь к своему последнему коммиту, который работал нормально, затем просто скопируйте изменения и попробуйте снова. После возврата я построил старый проект, и у меня точно такая же проблема, прежде чем пытаться скопировать новые файлы!
Это должно указывать на поврежденный файл или что-то нет?