3

我拥有的是ComVisible(true)Excel 2010 VBA 客户端正在使用的 C#、.NET 4.5 库。

我有两个问题:

1 -

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

以下线程讨论了类似的问题,但从 VBA 项目的角度来看: 如何在 VBA 项目名称中放置空格?

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

在此处输入图像描述

2 -

关于我的库的命名空间,我如何选择一个独立于我的参考名称和我的 .tlb 名称的命名空间?例如:

Dim oMyTest As New MyCustomNameSpace.MyTest

我在 C# 中尝试过以下操作,但没有成功,它总是选择 .tlb 文件名作为命名空间:

[ProgId("MyCustomNameSpace.MyTest")]
public class MyTest: IMyTest

我需要在 C# 中更改什么来控制 VBA 中的命名空间?

4

1 回答 1

4

从程序集到类型库的转换在此MSDN 库部分中有详细描述。“导出的程序集转换”文章包含您询问的相关详细信息。引用他们:

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

如果在设计时将 AssemblyDescriptionAttribute 应用于程序集,则导出过程会将其复制到与类型库关联的帮助字符串或 DocString。类型库中的 HelpFile 字段和 HelpContext 字段均未设置。没有设置类型库中的任何 LIBFLAGS。

请注意,ASsemblyInfo.cs 中的 [assembly:AssemblyDescription] 属性默认使用空字符串。您可以直接编辑它或使用 Project + Properties、Application 选项卡、Assembly Information 按钮。

于 2012-10-23T18:12:30.670 回答