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

程序集 'C:\WINDOWS\PathToEsriDll' 和 'C:\Program Files (x86)\PathToEsriDll' 引用相同的元数据,但只有一个是链接引用

如何解决程序集 'C:\WINDOWS\PathToEsriDll' 和 'C:\Program Files (x86)\PathToEsriDll' 引用相同的元数据,但只有一个是链接引用

我遇到了一些与 .NET Framework 3.5 到 4.6.1 升级相关的问题。升级会触发错误CS1769 Type 'CustomClass1<CustomClass2>.CustomClass3<ESRI.ArcGIS.Geodatabase.IWorkspace>' from assembly 'CustomAssemblyReferencedByProjectWhereErrorOccurs,Version=x.x.x.x,Culture=neutral,PublicKeyToken=null' cannot be used across assembly boundaries because it has a generic type argument that is an embedded interop type ProjectWhereErrorOccurs. 为澄清起见,CustomAssemblyReferencedByProjectWhereErrorOccurs 是安装在 ProjectWhereErrorOccurs 中的 Nuget 包。

我对上述错误原因的理解可能存在缺陷,但我认为这意味着 CustomAssemblyReferencedByProjectWhereErrorOccurs 引用了包含 IWorkspace 的 ESRI dll,即 ESRI.ArcGIS.Geodatabase 和 { {1}} 也有对 ProjectWhereErrorOccurs 的引用,但在 ESRI.ArcGIS.Geodatabase 中,CustomAssemblyReferencedByProjectWhereErrorOccurs 选项设置为 Embed Interop Types,而在 False 中,选项 WAS 设置为 ProjectWhereErrorOccurs。为了修复此错误,我确保在 TrueEmbed Interop Types 中都将 False 设置为 ProjectWhereErrorOccurs。请参阅 https://stackoverflow.com/a/40761456/15739713http://www.dllshepherd.net/2011/02/build-error-using-com-references-in-net.html 了解是什么促使我进行了此修复。

所以,修复SEEMS 已经起作用了,但现在我得到了 CustomAssemblyReferencedByProjectWhereErrorOccurs CS1760 Assemblies 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\ESRI.ArcGIS.Geodatabase\v4.0_10.8.0.0__8fc3cc631e44ad86\ESRI.ArcGIS.Geodatabase.dll' and 'C:\Program Files (x86)\ArcGIS\DeveloperKit10.8\DotNet\ESRI.ArcGIS.Geodatabase.dll' refer to the same Metadata but only one is a linked reference (specified using /link option); consider removing one of the references. ProjectWhereErrorOccurs. 中的第一个程序集显然是一些全局程序集。 C:\WINDOWS 中的第二个程序集显然是 C:\Program Files (x86) 的一部分,但对我来说,这是令人困惑的部分:ArcObjectsCustomAssemblyReferencedByProjectWhereErrorOccurs 中的引用均指 {{1} } ProjectWhereErrorOccurs 中的 dll。

我已阅读 Assemblies refer to the same metadata but only one is a linked reference; consider removing one of the referencesMicrosoft.Office.Interop.Excel.dll' refer to the same metadata but only one is a linked reference,第一个链接中的评论建议使用 COM 参考。我不知道哪个是 COM 引用,但我尝试删除ArcObjects 的引用并将其添加回来,但这次指向 C:\Program Files (x86) 而不是 ESRI.ArcGIS.Geodatabase,但我得到了一个错误消息的修订版,C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\ESRI.ArcGIS.Geodatabase\v4.0_10.8.0.0__8fc3cc631e44ad86\ESRI.ArcGIS.Geodatabase.dll

有谁知道这里发生了什么,和/或如何解决这个问题?除了我知道的参考之外,还有什么指向 ESRI dll?

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