我所拥有的是Excel 2010 VBA客户端正在使用的C#,.NET 4.5 ComVisible(true)
库。
我有两个问题:
1 -
在VBA中,当我从“工具 - >引用”添加对tlb的引用时,我得到“可用引用”对话框,该对话框显示我的库引用名称与我的.tlb文件的名称相同但没有扩展名。如果我的.tlb文件有空格,那么它将在对话框中用下划线替换。
以下主题讨论了类似的问题,但从VBA项目的角度来看: How can I put spaces in my VBA project name?
从我的C#项目中,如何控制将出现在“可用引用”中的名称 (包括使用空格)?
2 -
关于我的库的命名空间,我如何选择一个独立于我的引用名称和我的.tlb名称的命名空间? e.g:
Dim oMyTest As New MyCustomNameSpace.MyTest
我在C#中尝试过以下操作,但它没有用,它总是将.tlb文件名作为命名空间:
[ProgId("MyCustomNameSpace.MyTest")]
public class MyTest: IMyTest
我需要在C#中更改什么才能在VBA中控制我的命名空间?
答案 0 :(得分:4)
此MSDN Library section详细介绍了从汇编到类型库的转换。 “导出的装配转换”文章包含您要询问的相关详细信息。引用它们:
程序集名称通常包含句点,类型库名称中不允许使用句点。导出过程将程序集的名称字段中的句点转换为下划线。
如果在设计时应用于程序集,则导出过程会将AssemblyDescriptionAttribute复制到与类型库关联的帮助字符串或DocString。无法设置类型库中的HelpFile字段和HelpContext字段。没有设置类型库中的LIBFLAGS。
请注意,ASsemblyInfo.cs中的[assembly:AssemblyDescription]属性默认使用空字符串。您可以直接编辑它,也可以使用Project + Properties,Application选项卡,Assembly Information按钮。