我正在尝试向我的.NET项目添加ActiveX Microsoft Excel11.0对象库。添加时,我们的机器之间的命名空间是不同的。
事实证明,不同之处在于,当我添加引用时,它使用tlbimp作为WrapperTool,但对于他来说,它使其成为primary引用。
我如何让它以同样的方式为我们两个人工作呢?他的机器不喜欢tlbimp导入的互操作,我的机器也不喜欢primary互操作。
发布于 2010-07-07 21:55:05
我们遇到了类似的问题,选项"tlbimp“在所有计算机上都有效。
我(不完全)的理解是:.NET使用包装程序集来访问COM组件。如果指定"primary",则使用现有的、预先生成的“主互操作程序集”。根据http://msdn.microsoft.com/en-us/library/hfac4fky.aspx的说法,“主互操作程序集是由与它们所描述的类型库相同的发布者提供的”。如果使用“主程序集”对您不起作用,则此程序集在您的计算机上不存在。
默认值是"tlbimp“,并且(根据我收集的)应该可以正常工作。如果它在您同事的机器上不起作用,错误消息将会有所帮助。报告了VS2003的错误(搜索知识库文章“在安装Windows XP Service Pack2后在Visual Studio .NET中添加对COM对象的引用时收到错误消息”),但我不知道这是否适用于VS的当前版本。
希望这能有所帮助。
发布于 2014-06-20 23:29:36
我可以通过编辑注册表来解决这个问题:
HKEY_CLASSES_ROOT\TypeLib{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.4
这是存在的,我添加了以下字符串值:
名称: PrimaryInteropAssemblyName
办公价值:、Version=12.0.0.0、Culture=neutral、PublicKeyToken=71e9bce111e9429c
https://stackoverflow.com/questions/2991736
复制相似问题