微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

提供了我的类型的完全限定名称,但是当我运行程序时,它会在错误的程序集中查找类型

如何解决提供了我的类型的完全限定名称,但是当我运行程序时,它会在错误的程序集中查找类型

运行 WCF 服务时出现错误

"无法加载类型 'CompanyName.Services.WCF.GenericNotes.Entities.GenericNote' 来自 程序集 'CompanyName.Services.WCF.GenericNotes,版本=1.2.0.7,Culture=neutral,PublicKeyToken=null'。

确实,GenericNote 类型不在 CompanyName.Services.WCF.GenericNotes 中,但在 CompanyName.Services.WCF.GenericNotes.ENTITIES 程序集中,其 dll 包含在我的程序目录中。我通过从元数据中查看客户端的定义来确定我正在实例化的客户端需要这种类型,因此我无法触摸实际查找该类型的文件。那里提供了正确的“使用”指令。即使提供了全名,.NET 怎么会在错误的程序集中寻找类型?它如何确定在哪里寻找类型?

解决方法

这种情况通常发生的原因有两个:

  1. 在配置文件中指定了不正确的程序集(作为文本) - 检查您的应用程序正在使用的配置文件
  2. 在程序集之间移动了一个类型;意思是:当编译 SomeAssembly.dll 时,类型 wasCompanyName.Services.WCF.GenericNotes.dll 中,但它已移至 CompanyName.Services.WCF.GenericNotes.Entities.dll 而您 SomeAssembly.dll 尚未重建具有这种依赖性;为此,有两种选择:
    1. 使用更新的依赖项重新构建 SomeAssembly.dll,或
    2. [TypeForwardedTo(typeof(CompanyName.Services.WCF.GenericNotes.Entities.GenericNote))] 添加到 'CompanyName.Services.WCF.GenericNotes.dll 并重建它(请注意,这需要对现在具有该类型的项目的依赖);运行时使用此属性来解析已移动的类型(请注意,某些框架中也有 [TypeForwardedFrom(...)],其工作方式类似但方向不同)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。