gpt4 book ai didi

c# - WPF/MVVM :'Could not load file or assembly' 和 'Type reference cannot find type'

转载 作者:行者123 更新时间:2023-12-04 10:26:48 26 4
gpt4 key购买 nike

所以我一直在做一个项目,一切都很顺利,直到 NullReferenceException: Object reference not set to an instance of an object错误开始仅在 View 的 XAML 设计器中与堆栈跟踪一起弹出。但是,该项目运行良好。

为了找出这个错误的原因,我开始注释掉有问题的 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 folderType reference cannot find type named'{clr-namespace:[ProjectName].ViewModels.SubViewModels;assembly = [ProjectName]}ErrorViewModel.
同样,这仅发生在 XAML 设计器中,这些错误的行号是 View 模型和 subview 的声明:
<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>

奇怪的是,这些错误的数量取决于我打开了多少个 View (总是在声明中),而且我仍然可以运行该项目。

构建或重建或清理的数量似乎无关紧要,我已经验证了项目的 dll 位于 bin 文件夹中,我尝试过但未能使用 fuslogvw(无法弄清楚如何获取项目的日志,我只管理使用 PowerShell.exe 捕获一些我没有使用的东西),并且我已经查看了我能找到的所有关于这些错误的 150 多个问题。任何线索我应该怎么做才能解决这个问题?

更新:在考虑了下面 Mark 的回答后,我从项目中排除并移动了可疑的 View 和 ViewModel,并将它们替换为全新的同名文件。在我再次添加回 DataContext 之前,一切似乎都很好。有没有办法让项目被破坏,所以即使我正在清理和重建解决方案,VS 正在使用错误数据之类的?这令人抓狂。

更新 2:我不是盲目地在黑暗中刺伤,我想我只是将所有文件复制到一个新文件夹并恢复到我最后一次工作正常的提交,然后只需复制更改并重试。恢复后,我构建了旧项目,并且在尝试复制新文件之前遇到了完全相同的问题!

那必须指向损坏的文件还是没有?

最佳答案

该 View 是由 XAML 设计器创建的,并且由于您已在 XAML 中声明了数据上下文,因此它也创建了一个实例。你的东西vm:Pg7FirmwareUpdateViewModel运行不正常,这就是导致错误的原因。如果没有看到该类的源代码,就真的无济于事。

这就是为什么像 MVVM Light 这样的东西暴露了 IsInDesignMode属性,因此您可以确保不会在设计器中执行有问题的代码部分。

关于c# - WPF/MVVM :'Could not load file or assembly' 和 'Type reference cannot find type',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60608637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com