gpt4 book ai didi

.net - Intellisense 无法检测 vb.net 创建的 dll 中的函数

转载 作者:行者123 更新时间:2023-12-03 03:34:07 25 4
gpt4 key购买 nike

我认为答案相当简单,但我似乎找不到直接的答案。我可以看到很多关于这个主题的内容,但没有任何具体解决这个问题(请参阅下面我能找到的最接近的答案)

我使用 vb.net 创建了一个 .dll,并将其导入到 Excel 中使用,没有问题。当我dimset此类的实例时,智能感知会拾取库和类名称,但不会显示函数/变量或子例程名称。例程和变量编译并运行得很好,但我希望这个库可供其他人使用,因此智能感知将非常有帮助。

VB.net 中的示例代码:

Namespace wtf
Public Class samplerJam
Public jjj As String
Public Sub method1()
jjj = "Hello"
End Sub
End Class
End Namespace

我错过了一些非常简单的东西吗?

(找到 this answer to similar question 但根据该设置我应该能够看到我的子/功能)

最佳答案

这可能有点晚了,但我在尝试解决 VB.NET 中类似的问题时偶然发现了这个问题,因此希望这可以对您/将来的某人有所帮助。

智能感知

就解决智能感知方面而言,您原来的答案将会起作用。然而我的方法涉及使用 GUID。

假设我有一个名为 Foo 的类,我希望将其暴露给 Excel/Access。我将创建一个由 Foo 实现的 Interface -

Public Interface IFoo
Function HelloWorld() As String
End Interface

Public Class Foo
Implements IFoo

Public Function HelloWorld() As String Implements IFoo.HelloWorld
Return "Hello World!"
End Function
End Class

如您所见,Foo 有一个名为 HelloWorld 的函数,该函数在接口(interface)中声明,并在类中实现。

现在,为了确保我们在智能感知中得到这一点,我们可以向我们的接口(interface)/类添加一些属性,以将它们公开给 Excel。我的界面变化如下 -

<ComVisible(True)>
<Guid("2055A907-9D7A-4DC9-A46B-6E283713A5AB")>
<InterfaceType(ComInterfaceType.InterfaceIsIDispatch)>
Public Interface IFoo
Function HelloWorld() As String
End Interface

我的类(class)将更改为 -

<ComVisible(True)>
<Guid("2C4D41A7-235E-4F48-BE99-62118B2852A7")>
<ClassInterface(ClassInterfaceType.None)>
<ProgId("Foo")>
Public Class Foo
Implements IFoo

Public Function HelloWorld() As String Implements IFoo.HelloWorld
Return "Hello World!"
End Function
End Class

要生成 GUID,您可以在 Visual Studio 中使用一些简单的步骤。工具 > 创建 GUID > 选项 6(用于 VB.NET)或选项 5(用于 C#)。

您的 DLL 现在已准备好与智能感知一起使用!

在目标机器上注册

Powershell

此过程是手动的,如果您千载难逢地执行一次/只有 1 台目标计算机超出您自己的计算机,那么没问题。

您想要找到与用于构建 DLL 的 .NET 版本相对应的 .NET 文件夹。假设您至少使用 .NET 4.0+,它将位于此处 -

C:\Windows\Microsoft.NET\Framework\v4.0.30319\

您需要使用Regasm来注册dll。

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\
.\RegAsm.exe PathToYourDLL\DLLName.dll

请注意,如果您的路径包含空格,请在文件路径周围使用“引号”

创建 MSI

如果您有几台目标计算机,创建 MSI 来为您执行注册可能会更容易。

您可以从 Microsoft Marketplace ( https://marketplace.visualstudio.com/items?itemName=VisualStudioClient.MicrosoftVisualStudio2017InstallerProjects ) 下载扩展并构建 MSI/EXE 来完成注册。

有很多关于如何使用此扩展创建安装向导的教程,默认情况下 VS 会在您的 dll 上设置属性,以便在安装过程中为您注册它们

关于.net - Intellisense 无法检测 vb.net 创建的 dll 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44599389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com