首页 > 解决方案 > WinForms 设计器中出现错误“找到的程序集的清单定义与程序集引用不匹配”

问题描述

最近,“不知从何而来”,我在尝试在 Visual Studio 2017 中设计一个以前完全可打开的表单时遇到了一个异常:

找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

我还收到一个或多个调用堆栈错误:

at System.ComponentModel.ReflectPropertyDescriptor.SetValue(Object component, Object value)
at Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkPropertyDescriptor.SetValue(Object component, Object value)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializePropertyAssignStatement(IDesignerSerializationManager manager, CodeAssignStatement statement, CodePropertyReferenceExpression propertyReferenceEx, Boolean reportError)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeAssignStatement(IDesignerSerializationManager manager, CodeAssignStatement statement)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement) 

我真的很困惑,因为其他对话框都可以正常工作,而错误的对话框也一直工作到昨天。

编译和运行应用程序都成功。

在尝试了类似问题的解决方案之后,我仍然没有运气解决这个问题。

我的问题:

知道如何进行分析以找到此错误的根本原因吗?

更新1:

我不是(仅)在寻找直接的解决方案,而是最好寻找一些可靠的方法来解决异常的根本原因。

从堆栈跟踪中,我什至不知道是什么原因造成的。

更新2,解决方案:

感谢您的评论,我能够通过启动 Visual Studio 的第二个实例并将其附加到第一个实例来解决它,从而调试第一个实例。

然后,我启用了异常设置以中断所有 CLR 异常(在第二个 VS 实例中),并在第一个 VS 实例中的 Windows 窗体设计器中打开了错误的表单。

然后调试器在实际 FileLoadException 发生的位置停止。

然后,我能够通过在基本控件类中删除一些我自己的日志记录代码来解决它,这些代码在从 VS WinForms Designer 中运行时似乎无法正常工作。

我不会在这里删除我的问题,因为在谷歌搜索我收到的初始错误消息时,它可能会作为其他人(和我自己)的进一步参考。

标签: c#.netwinformsvisual-studio-2017windows-forms-designer

解决方案


推荐阅读