有一个项目已从.NET 3.5迁移到.NET 4.0。该项目有一些对.NET 1.0程序集的引用,这些程序集是COM对象的包装程序。这些.NET 1.0程序集和COM对象是外部公司的产品。该项目编译,但在运行时期间在第一点当软件引用了那些1.0组件定义的对象抛出异常:在.NET 4.0迁移后引用.NET 1.0程序集的System.TypeLoadException
System.TypeLoadException: Could not load the structure 'ESRI.MapObjects2.Core.ShapeTypeConstants' from assembly 'ESRI.MapObjects2.Core, Version=2.4.1.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86'.
结构被标记为获型等价,但它有一个静态或非公有领域。实际的“结构”是一个枚举,在反射它看起来像这样:
[Guid("B027CAB1-6908-11D2-AF98-006097DA3688")] public enum ShapeTypeConstants { moShapeTypeEllipse = 0x1a, moShapeTypeLine = 0x16, moShapeTypeMultipoint = 0x18, moShapeTypePoint = 0x15, moShapeTypePolygon = 0x17, moShapeTypeRectangle = 0x19 }
的内部异常是空的。我可以看到0x80131522(-2146233054)的HRESULT,意思是COR_E_TYPELOAD。我不认为我有任何丢失的本地dll或程序集,因为我们的.NET工作正常(并且它使用相同的代码,相同的引用)。
如何解决此异常?有没有简单的方法,如在dll的配置文件中指定requiredRuntime或在csproj的参考部分中指定requiredTargetFramework?
什么是给定的'TypeLoadException'的'InnerException'? –
使用[供应商支持论坛](http://forums.arcgis.com/forums/59-MapObjects?s=efd1427d2bef5d9c6805bfd987d9ccaa) –
Hans:我做到了。 MapObjects2是停产产品。我期望在那里直接面向新的ArcGIS API,但我正在寻求更简单的修复方法。 http://forums.arcgis.com/threads/81091-Game-over-The-structure-is-marked-as-eligible-for-type-equivalence-but-it-has-... –