在C#项目中,我们通过“添加引用”设置将指向COM对象的引用添加到COM对象,这将导致IDE自动生成互操作程序集。因此这很好,但是我们基于.net 3.5 SP1 aka CLR 2.0进行构建,并且生成的互操作使用4.0 CLR使它们不兼容。有办法防止这种情况吗?

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

无论如何,我希望某个地方有一个标志可以允许这样做。

最佳答案

我恰好遇到了这个问题。我发现的解决方案是使用.Net Framework SDK(或Windows Platform SDK?)中的tlbimp 3.5版,该文件位于使用CLR 2的%ProgramFiles%\ Microsoft SDKs \ Windows \ v6.0A \ bin中。

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

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

tlbimp MyModule.dll \ 1

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

关于visual-studio-2010 - Visual Studio 2010 TlbImp在2.0项目中生成.net 4.0互操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2659738/

10-13 07:54