有一個項目已從.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-... –