C# 静态类与COM互操作

C# 静态类与COM互操作,c#,vba,com-interop,C#,Vba,Com Interop,我试图在我正在使用的插件中使用一组静态类/变量,但一直出现错误: MyNamespace.Foo MyNamespace.Foos.get_ClampName();找不到(下面是完整的错误信息) 我已经创建了一个Nuget包(在我的Azure DevOps工件上),该包具有以下类: 公共结构Foo{ //添加了从字符串转换为字符串的隐式运算符 //字符串,反之亦然,以及存储字符串 } 公共静态类Foos{ 公共静态Foo ClampName=>“clampnametribute”; } 该包正

我试图在我正在使用的插件中使用一组静态类/变量,但一直出现错误:

MyNamespace.Foo MyNamespace.Foos.get_ClampName();找不到(下面是完整的错误信息)

我已经创建了一个Nuget包(在我的Azure DevOps工件上),该包具有以下类:

公共结构Foo{
//添加了从字符串转换为字符串的隐式运算符
//字符串,反之亦然,以及存储字符串
}
公共静态类Foos{
公共静态Foo ClampName=>“clampnametribute”;
}
该包正在.Net Framework(4.7.2)类库中应用,并在库中使用如下方式:

公共类栏{
公共空间{
字符串l_strlampname=thing.Attribute[MyNamespace.Foo.ClampName]+“”;
}
}
正在通过VBA将库加载到另一个应用程序中,如下所示:

Dim oInterface作为新条
公共子DoStuff()
软膏面
端接头
这将抛出错误:

运行时错误-2146233069(80131513)“:
找不到方法:“MyNamespace.Foo MyNamespace.Foos.get_ClampName()”


不幸的是,我无法更改加载此文件的过程,因此我必须通过VBA才能使其正常工作。有什么我遗漏的吗?

我将此作为的副本关闭,但COM似乎不是您的问题。就COM而言,它只调用了
DoStuff
,这是存在的。应该发生的错误是CLR找不到包含Foos的程序集。你做了些什么,没有告诉我们。可能是手工复制了DLL。因此,它现在可以找到程序集,但它似乎已过时,并且没有ClampName成员。可能是在更改DLL后忘记再次复制。需要太多的猜测,但这将是一个常见的不幸。谢谢你的评论。正如我所说的,我正在用一个nuget软件包把图书馆拉进来。在调试期间,我使用构建事件将库复制到一个新位置,并确保在包发生任何更改时进行重建。