为什么我不能在.NET中使用TLBIMP创建的互操作程序集?

时间:2011-11-06 08:39:18

标签: .net visual-studio-2010 c#-4.0 com com-interop

我有一个.OCX文件,我通过visual studio 2010工具(tlbimp)将其转换为interop程序集。 当我想将创建的DLL添加到我的.NET项目时,我收到以下异常:

  

'DLLName.DLL'或其中一个依赖项需要更高版本的   .NET Framework比项目中指定的。你可以改变   单击项目菜单上的属性的.NET Framework目标   然后在“.NET Framework”下拉框中选择一个新目标。

有没有人有过这方面的经验?

1 个答案:

答案 0 :(得分:4)

我可以重复一遍,虽然这并不容易:

enter image description here

获取它的唯一方法是从Visual Studio 2010命令提示符运行Tlbimp.exe,其目标框架设置针对早期版本的.NET。三重检查此设置。如果设置选择了.NET 4,则设置中会出现严重问题。

更好的捕鼠器是使用IDE创建互操作库。 Project + Add Reference,Browse选项卡,然后在那里选择.ocx文件。现在更改目标框架时,会自动重新生成互操作库以匹配CLR版本。您可以通过在互操作库上运行ildasm.exe来仔细检查所有这些。双击清单,它会在第一行显示目标CLR版本:

// Metadata version: v4.0.30319
.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 4:0:0:0
}

最后但并非最不重要的是,您确实希望将互操作库的“嵌入互操作类型”属性设置为True,这样您就不必运送互操作库。如果您在“属性”窗口中找不到此属性,那么您还有另一个提示,即目标框架设置不是您认为的那样。