我正在尝试将ActiveX Microsoft Excel 11.0对象库添加到我的.NET项目中。它可以在我的计算机上正常工作,但是当我 checkin 代码时,就不能在我的同事那里使用。将其固定在他身上,这使我很烦。添加后,我们的计算机之间的 namespace 是不同的。

事实证明,不同之处在于,当我添加引用时,它将tlbimp用作WrapperTool,但对他来说,它使其成为primary引用。

我如何以相同的方式使它对我们俩都起作用?他的机器不喜欢tlbimp导入互操作,而我的机器不喜欢primary互操作。

最佳答案

我们遇到了类似的问题,并且选项“tlbimp”适用于所有计算机。

我的(不完善的)理解是:.NET使用包装程序集访问COM组件。如果指定“主要”,则使用现有的,预先生成的“主要互操作程序集”。根据http://msdn.microsoft.com/en-us/library/hfac4fky.aspx的说法,“主互操作程序集由它们所描述的类型库由同一发布者提供”。如果使用“primary”对您不起作用,则您的计算机上不存在该程序集。

默认值为“tlbimp”,并且(根据我的收集)通常可以正常工作。如果它在您同事的计算机上不起作用,该错误消息将很有帮助。报告了VS2003的错误(搜索知识库文章“安装Windows XP Service Pack 2后在Visual Studio .NET中添加对COM对象的引用时收到错误消息”),但我不知道这是否适用到最新版本的VS。

如果您无法完成这项工作,则建议您阅读有关“主互操作程序集”的更多信息,并尝试查找Excel主互操作程序集在同事计算机上的位置,然后将其复制到所有开发人员的计算机上。

希望这可以帮助。

关于.net - Excel COM Interop-tlbimp与主要WrapperTool,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2991736/

10-10 18:53