0

我正在尝试从 .net 3.5 项目中获取某种类型的 Microsoft .net 4.0 dll。不要加载它们,因为我知道使用 Assembly.Load 或 LoadFrom 是不可能的。我唯一需要的是类型。这可能吗?怎么做?例如,这是我正在尝试获取的 dll ADONETSrc 类型是:

Microsoft.SqlServer.ADONETSrc, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91.

谢谢,

4

2 回答 2

2

鸡和蛋的问题。您可以对类型执行的任何操作都需要程序使用 v4 版本的 CLR 运行。使用 .config 文件<supportedRuntime>元素很简单。此时加载程序集也不再是问题。

如最初所述:不,元数据格式在 .NET 4.0 中已更改。v2 CLR 根本不知道如何读取它,并且会拒绝这样做,抛出一个 BadImageFormatException。类型信息存储在程序集元数据中,因此您永远无法访问它。

于 2013-09-15T14:18:02.293 回答
2

不幸的是,这是不可能的。加载 .net 4.0 类型需要加载 CLR 引擎 v4.0,.NET 2.0 CLR 引擎无法加载。

于 2013-09-15T12:35:12.280 回答