C# 在为VBA添加引用对话框公开.NET(COM)tlb库时选择该库的自定义引用名称

C# 在为VBA添加引用对话框公开.NET(COM)tlb库时选择该库的自定义引用名称,c#,vba,excel,interop,com-interop,C#,Vba,Excel,Interop,Com Interop,我拥有的是一个C#,.NET4.5ComVisible(true)库,Excel 2010 VBA客户端正在使用它 我有两个问题: 一,- 在VBA中,当我从“工具->引用”向我的tlb添加引用时,我会得到“可用引用”对话框,其中显示我的库引用名称,该名称与.tlb文件的名称相同,但没有扩展名。如果我的.tlb文件有一个空格,那么它将在对话框中替换为下划线 以下线程从VBA项目的角度讨论了类似的问题: 在我的C#项目中,如何控制将出现在“可用引用”中的名称 (包括使用空格)? 2- 关于我的

我拥有的是一个C#,.NET4.5
ComVisible(true)
库,Excel 2010 VBA客户端正在使用它

我有两个问题:

一,-

在VBA中,当我从“工具->引用”向我的tlb添加引用时,我会得到“可用引用”对话框,其中显示我的库引用名称,该名称与.tlb文件的名称相同,但没有扩展名。如果我的.tlb文件有一个空格,那么它将在对话框中替换为下划线

以下线程从VBA项目的角度讨论了类似的问题:

在我的C#项目中,如何控制将出现在“可用引用”中的名称 (包括使用空格)?

2-

关于我的库的名称空间,我如何选择一个独立于我的引用名和.tlb名的名称空间?e、 g:

MyTest作为新的MyCustomNameSpace.MyTest
我在C#中尝试了以下方法,但没有成功,它总是选择.tlb文件名作为命名空间:

[ProgId(“MyCustomNameSpace.MyTest”)]
公共类MyTest:IMyTest
要在VBA中控制我的命名空间,我需要在C中更改什么?


本文详细介绍了从程序集到类型库的转换。“Exported Assembly Conversion”(导出的程序集转换)文章提供了您需要了解的相关详细信息。引用他们的话:

程序集名称通常包含句点,这在类型库名称中是不允许的。导出过程将程序集名称字段中的句点转换为下划线

导出过程将AssemblyDescriptionAttribute(如果在设计时应用于程序集)复制到与类型库关联的帮助字符串或文档字符串。未设置类型库中的HelpFile字段和HelpContext字段。未设置类型库中的任何LIBFLAGS


请注意,默认情况下,ASsemblyInfo.cs中的[assembly:AssemblyDescription]属性使用空字符串。您可以直接编辑它,也可以使用Project+属性、应用程序选项卡、程序集信息按钮。

谢谢,问题1解决了!对问题2有什么想法?我在MSDN documentation中没有找到解决方案。COM没有任何名称空间的概念。您只能使用typelib名称。我所说的“namespace”是类名之前的前缀,在我的示例中,MyCustomNameSpace是一种名称空间,尽管它不是这样调用的。