如何解决程序集 '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
。为了修复此错误,我确保在 True
和 Embed Interop Types
中都将 False
设置为 ProjectWhereErrorOccurs
。请参阅 https://stackoverflow.com/a/40761456/15739713 和 http://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)
的一部分,但对我来说,这是令人困惑的部分:ArcObjects
和 CustomAssemblyReferencedByProjectWhereErrorOccurs
中的引用均指 {{1} } ProjectWhereErrorOccurs
中的 dll。
我已阅读 Assemblies refer to the same metadata but only one is a linked reference; consider removing one of the references 和 Microsoft.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 举报,一经查实,本站将立刻删除。