首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Visual Studio2010,TlbImp在2.0项目中生成.net 4.0互操作

Visual Studio2010,TlbImp在2.0项目中生成.net 4.0互操作
EN

Stack Overflow用户
提问于 2010-04-18 03:41:13
回答 5查看 16.8K关注 0票数 17

在C#项目中,我们通过add References设置添加对COM对象的引用,指向COM对象,这会导致集成开发环境自动生成互操作程序集。这很好,但是我们是基于CLR3.5CLR2.0构建的,而生成的SP1使用的是4.0CLR,这使得它们不兼容。有没有办法防止这种情况发生?

我假设另一个选项是配置我们的构建脚本以尝试使用带有/references参数的tlbimp.exe?指向mscorlib v2.0?

无论如何,我希望有一面旗帜允许这样做。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-05-06 18:38:32

我就遇到了这个问题。我找到的解决方案是使用来自.Net Framework SDK (或Windows Platform SDK?)的tlbimp3.5版本。位于使用CLR 2的%ProgramFiles%\Microsoft SDK\Windows\v6.0A\bin中。

我还发现我需要这些信息来从我导入的exe文件中获得正确的类型库,因为VS将只使用第一个类型库:

“从包含多个类型库的模块导入类型库时,可以选择将资源ID追加到类型库文件中。”

tlbimp MyModule.dll\1

来自http://msdn.microsoft.com/en-us/library/tt0cf3sx%28VS.80%29.aspx

票数 21
EN

Stack Overflow用户

发布于 2012-06-26 05:47:13

如果您使用的是生成事件,请尝试执行以下操作:

代码语言:javascript
复制
"$(SDK35ToolsPath)tlbimp" tlbimp arguments

$(SDK35ToolsPath)指向C:\Program Files (x86)\Microsoft \Window\v7.0A\Bin

如果要引用4.0,则$(SDK40ToolsPath)是指向C:\Program Files (x86)\Microsoft \Windowsv7.0A\Bin\NETFX4.0tools的宏。

在VS2010命令行中,"where tlbimp“将首先显示NETFX4.0工具文件夹中的tlbimp.exe。所以我们需要3.5 tlbimp.exe的$(SDK35ToolsPath)。

票数 5
EN

Stack Overflow用户

发布于 2010-10-27 03:01:19

我也遇到了同样的问题,但即使是在tlbimp.exe 2.0版本中,我仍然得到了一个4.0dll,它不能工作。

我最终得到了一个更简单的解决方案,以防有人遇到这样的情况:

向regsvr32注册动态链接库(确保以管理员身份运行,否则会出现错误),然后在项目中添加引用时,您将在COM选项卡中找到动态链接库。

像护身符一样工作!

除非您想要创建互操作dll以将其与应用程序一起发布,否则您将需要确定tlbimp.exe路由。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2659738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档