- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有一个项目已从 .NET 3.5 迁移到 .NET 4.0。该项目有一些对 .NET 1.0 程序集的引用,这些程序集是 COM 对象的包装器。这些 .NET 1.0 程序集和 COM 对象是外部公司的产品。项目编译,但在运行时,当软件引用那些 1.0 程序集中定义的对象时的第一个点抛出异常:
System.TypeLoadException:无法从程序集“ESRI.MapObjects2.Core,Version=2.4.1.0,Culture=neutral,PublicKeyToken=8fc3cc631e44ad86”加载结构“ESRI.MapObjects2.Core.ShapeTypeConstants”。
该结构被标记为符合类型等效条件,但它有一个静态或非公共(public)字段。实际的“结构”是一个枚举,在 Reflector 中它看起来像这样:
[Guid("B027CAB1-6908-11D2-AF98-006097DA3688")]
公共(public)枚举 ShapeTypeConstants
{
moShapeTypeEllipse = 0x1a,
moShapeTypeLine = 0x16,
moShapeTypeMultipoint = 0x18,
moShapeTypePoint = 0x15,
moShapeTypePolygon = 0x17,
moShapeTypeRectangle = 0x19
}
内部异常为空。我可以看到 0x80131522 (-2146233054) 的 HRESULT,这意味着 COR_E_TYPELOAD。我不认为我缺少任何 native dll 或程序集,因为我们的 .NET 工作正常(并且它使用相同的代码、相同的引用)。
如何解决这个异常?是否有一种简单的方法,例如在 dll 的配置文件中指定 requiredRuntime 或在 csproj 的引用部分中指定 requiredTargetFramework?
最佳答案
如果环境不好,那我也可以玩。
如果我们看一下实际的错误消息,它会提示“结构”中的“静态或非公共(public)”字段。所谓的结构体其实就是枚举。看似 COM 层上的包装器枚举。还有几十种不同的包装器枚举,每个值都是明确指定的。每个枚举还包含一个名为“value__”的私有(private)整型变量。更具体地说,它看起来像这样:.field private specialname rtspecialname int32 value__
那么我们为什么不直接将它们公开:
瞧!生成的 dll (ESRI.MapObjects2.Core.dll) 为 311.296 字节,而原始文件的长度为 323.584 字节,这让我仍然有些怀疑。但是,如果我用修改过的 dll 覆盖 GAC 中的原始 dll,一切正常,我们的软件不再崩溃。我无法确认一切都 100% 有效,因为我并不真正了解我们软件的 GIS 部分。但到目前为止我设法得到的是好的。什么可以让某人担心:如果公共(public)变量的存在会改变任何结构布局,它可能会导致枚举值的移动,或其他混淆。但希望它不会混淆任何东西。这是一个快速的 hack,在生产中,它需要在安装 MapObjects42 后覆盖 GAC 中的 ESRI.MapObjects2.Core.dll。叹。所以我不一定会建议任何人,但它似乎有效,它给了我一些满足感,一种报复的感觉。一天结束时,黑客给了我一点快乐。
关于.net - .NET 4.0 迁移后引用 .NET 1.0 程序集的 System.TypeLoadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15748509/
我尝试实现 azure 函数,但不断收到以下异常。 "TypeLoadException: Could not load type 'System.UriTemplate' from assemb
通过这个代码 module ObjectRe = type BM = A | N type Object = { Name: string Pattern: BM array
我正在编写一个 .NET 命令行应用程序,它将用户从现有数据库迁移到 aspnetdb。为了简化特定于用户的设置,我使用了 Joel Spolsky 撰写的关于 here 的配置文件类. 它在 ASP
我正在使用 Compact Framework 3.5/VS2008。我的 TypeLoadException 行为非常奇怪。以下代码抛出此错误。原因是数据库连接有问题。但是由于某些未知原因,此内部异
在我正在开发的一个简单应用程序中,我有三个相关的程序集: “MyCompany.Geography.Windows.Forms”,这是一个类库,其中包含 winforms 控件 “MyCompany.
所以我尝试将依赖项加载到我的代码中,然后我得到: TypeLoadException: Could not load type 'System.Data.SqlClient.SqlConnection
以下代码在 VS2013 和 VS2015 中编译,适用于从 2.0 到 4.6.1 的各种 .NET Framework 版本,但在执行时抛出 System.TypeLoadException: n
11 月 7 日 10:29 MST 更新 奇怪的是,如果我将属性从 ComponentModel 文件夹中移回 Common 项目的根目录,代码就可以正常工作。在为 InflowHealth.Com
这有点啰嗦,所以这里是快速版本: 为什么这会导致运行时 TypeLoadException?(编译器应该阻止我这样做吗?) interface I { void Foo(); } class
我正在编写一个 .NET 3.5 应用程序 (WinForms),它使用外部 DLL 中的类,并且每次应用程序尝试启动时我都会收到 System.TypeLoadException。 这是 VS 显示
一些背景知识:我最近从源代码 (https://github.com/ServiceStack/ServiceStack) 重新编译了 ServiceStack 库。在完成一些错误修复后,我还重新编译
当我尝试启动我的单元测试时,出现一个错误窗口: System.TypeLoadException: Method 'get_SolutionDirectory' in type 'JetBrains.
我在 Windows 应用商店应用程序中使用 Winmd(Windows 运行时组件)。当我尝试实例化在 winmd 中定义的类型时,出现以下异常: System.TypeLoadException
你能告诉我解决 System.TypeLoadException 问题的方法吗? 我的解决方案中的现有项目存在此异常,我从同一解决方案中的单元测试项目中引用了该项目。 当我运行我的单元测试时抛出这个异
我正在尝试使用以下代码将我的 Web API 连接到 MySql 数据库: public class Startup { public void ConfigureServices
我目前正在为我的公司管理一个 ASP.NET 应用程序。最近,当我尝试调试代码时遇到了 System.TypeLoadException。 确切的信息是: Inheritance security r
我在使用强类型集线器时遇到 TypeLoadException。我的界面是: public interface IClientCallback { void callback(T msg, s
我正在使用 VS2008 使用 C# 开发一个适用于 Honeywell Dolphin 6100 的应用程序,这是一款带有条码扫描器的移动数据终端,使用类似操作系统的 Windows CE 5.0。
你能否创建一个 .NET 4 版本的应用程序进行测试是老板们无辜的问题——当然! 但是在我将 Winforms 应用程序中的 27 个项目更改为 .NET 4 并重新编译后,在启动应用程序时,我得到了
在我们的 Azure 云服务中,我们使用 Mvc、WebApi 和 Autofac。 Mvc 和 WebApi 需要 System.Web.Http 版本5.2.3 Autofac.WebApi2想要
我是一名优秀的程序员,十分优秀!