我有一个.OCX文件,我通过visual studio 2010工具(tlbimp)将其转换为interop程序集。 当我想将创建的DLL添加到我的.NET项目时,我收到以下异常:
'DLLName.DLL'或其中一个依赖项需要更高版本的 .NET Framework比项目中指定的。你可以改变 单击项目菜单上的属性的.NET Framework目标 然后在“.NET Framework”下拉框中选择一个新目标。
有没有人有过这方面的经验?
答案 0 :(得分:4)
我可以重复一遍,虽然这并不容易:
获取它的唯一方法是从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,这样您就不必运送互操作库。如果您在“属性”窗口中找不到此属性,那么您还有另一个提示,即目标框架设置不是您认为的那样。