gpt4 book ai didi

c# - 无法在设计器中加载文件或程序集 System.Componentmodel.Annotations 4.2.0.0

转载 作者:行者123 更新时间:2023-12-03 14:53:35 24 4
gpt4 key购买 nike

当我尝试在我的 c# .NET Framework 4.7.2 类库中打开表单时出现此错误。
检查自动生成绑定(bind)重定向

调用堆栈是

at System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type)
at System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)
at System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg)
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent)
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)
at System.RuntimeType.GetCustomAttributes(Type attributeType, Boolean inherit)
at System.ComponentModel.ReflectTypeDescriptionProvider.ReflectGetAttributes(Type type)
at System.ComponentModel.ReflectTypeDescriptionProvider.ReflectedTypeData.GetAttributes()
at System.ComponentModel.TypeDescriptor.TypeDescriptionNode.DefaultTypeDescriptor.System.ComponentModel.ICustomTypeDescriptor.GetAttributes()
at System.ComponentModel.TypeDescriptor.TypeDescriptionNode.DefaultTypeDescriptor.System.ComponentModel.ICustomTypeDescriptor.GetAttributes()
at System.ComponentModel.TypeDescriptor.TypeDescriptionNode.DefaultTypeDescriptor.System.ComponentModel.ICustomTypeDescriptor.GetAttributes()
at System.ComponentModel.TypeDescriptor.GetAttributes(Type componentType)
at System.ComponentModel.ReflectTypeDescriptionProvider.ReflectedTypeData.GetConverter(Object instance)
at System.ComponentModel.TypeDescriptor.TypeDescriptionNode.DefaultTypeDescriptor.System.ComponentModel.ICustomTypeDescriptor.GetConverter()
at System.ComponentModel.TypeDescriptor.TypeDescriptionNode.DefaultTypeDescriptor.System.ComponentModel.ICustomTypeDescriptor.GetConverter()
at System.ComponentModel.TypeDescriptor.TypeDescriptionNode.DefaultTypeDescriptor.System.ComponentModel.ICustomTypeDescriptor.GetConverter()
at System.ComponentModel.TypeDescriptor.GetConverter(Type type)
at System.ComponentModel.PropertyDescriptor.get_Converter()
at System.Windows.Forms.DataGridView.DataGridViewDataConnection.GetCollectionOfBoundDataGridViewColumns()
at System.Windows.Forms.DataGridView.RefreshColumns()
at System.Windows.Forms.DataGridView.RefreshColumnsAndRows()
at System.Windows.Forms.DataGridView.OnBindingContextChanged(EventArgs e)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.ControlCollection.Add(Control value)
at System.Windows.Forms.Form.ControlCollection.Add(Control value)
at System.Windows.Forms.Design.ControlDesigner.DesignerControlCollection.Add(Control c)

我看了 this question并尝试将以下内容添加到 .exe 的 app.config 中,但没有帮助
  <dependentAssembly>
<assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="4.2.0.0" newVersion="4.7.0.0" />
</dependentAssembly>

实际的形式是在一个 dll 中,所以我也尝试将它添加到 dll 的 app.config

在我的项目文件中,我有
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>  
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>

我看到 Nuget 上甚至没有 4.2.0。

enter image description here

我想知道我是否可以关闭尝试调用
DataGridView.DataGridViewDataConnection.GetCollectionOfBoundDataGridViewColumns()

在设计时

只需单击“忽略并继续”似乎是安全的。

Team Explorer Changes 表示这不会更改代码。

[更新]

如果我尝试将 DataGridView 控件复制并粘贴到另一个窗体中,则会收到处理此命令时出现错误。无法加载文件或程序集
an error occurred

我能够从工具箱中添加一个新的 DataGridView 控件,但是当我尝试将绑定(bind)源附加到我得到的
Error setting value MyBindingSource to property DataSource

Error setting value

[更新]

我发现绑定(bind)源的项目数据源已被删除。
那是当我单击绑定(bind)源的数据源属性上的向下箭头时,数据源不在要从中选择的列表中。

原来我忘记在源代码管理中包含项目属性 DataSources。

但是,当我添加一个新的 DataGridView 并尝试设置选择绑定(bind)源时,我仍然收到错误无法加载文件或程序集

绑定(bind)源基于对象。错误发生在特定对象而不是另一个对象上。也许它是导致问题的对象的属性。

[更新]

当绑定(bind)对象包含也是对象的属性时,会出现此问题
public class BOMObj
{
// public FramePart FramePart { get; set; } // error occurs if I uncomment this
public string PartTypeName => $"{FramePart?.ComponentType}";
public string thing3 => "thing 3";
public string thing { get; set; }
public string thing2 { get; }

我尝试在构造函数中实例化 FramePart 但没有帮助
   public BOMObj() {
FramePart = new FramePart();
}

我想这段代码不能在设计时运行是有道理的。但为什么缺少文件消息?

[更新]
因为 this question我非常有信心我的重定向没问题。请注意,该问题仅在设计时发生。

[更新]

在进程监视器中查找 System.ComponentModel.Annotations

ProcMon capture

但看不到任何失败消息。

我还尝试安装导致警告的 4.1.0 版
NU1605  Detected package downgrade: System.ComponentModel.Annotations from 4.7.0 to 4.1.0. Reference the package directly from the project to select a different version. 

最佳答案

尝试修复 .Net Framework,开始 > 运行 > appwiz.cpl 并选择 .Net 中的选项进行修复。

接下来第一条错误消息是“无法加载文件或程序集”。它在哪里寻找这个 DLL?运行Process Monitor并检查 Visual Studio 正在寻找的路径。要么将 DLL/程序集放在预期可以找到的位置,要么再次重新引用它。尝试回滚到 4.1 并使用该 NuGet 版本或尝试更高版本的包,如 4.4.1。

Install-Package System.ComponentModel.Annotations -Version 4.1.0

所有这些评论的人都会根据版本得到不同的结果: https://stackoverflow.com/a/44079161/495455

第二个错误与第一个错误的根本原因相同,因此首先诊断并解决根本原因,避免故障排除症状。

关于c# - 无法在设计器中加载文件或程序集 System.Componentmodel.Annotations 4.2.0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62048835/

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