我在 Visual Studio 2017 的 vb.net 中工作。我对 Visual Basic 还是很陌生。我更熟悉VBA。
我制作了代码原型以访问 Autodesk Vault 2019、下载文件并在 Autodesk Inventor 2019 中打开它。此代码是使用 Visual Studio 中的 Autodesk Inventor 插件模板创建的。代码编译没有错误并按预期运行。
此应用程序的最终目的是将代码编译为 DLL,然后在另一个软件 (CorelDraw) 中从 VBA 调用该 DLL(带参数)。为了做到这一点,我知道我需要将代码放在类库模板中,以便正确编译为 DLL。
在执行此操作时,我对以下代码行有疑问:
ActiveInvApp = Marshal.GetActiveObject("Inventor.Application")
“Marshal”来自“System.Runtime.InteropServices”,它在应用程序的开头使用以下代码行导入:
Imports System.Runtime.InteropServices
问题是 Visual Studio 无法识别“GetActiveObject”。它用红色波浪线突出显示它。当我将光标悬停在它上面时,它会显示工具提示:“'GetActiveObject' 不是 'Marshal' 的成员”。
在撰写本文时,我打开了两个 Visual Studio 2017 实例。一个带有此代码的类库版本,一个带有 Autodesk Inventor AddIn 版本。AddIn 版本对这行代码没有问题,类库也有。
根据有关创建 DLL 类库的一些说明,我的代码以以下内容开头:
Namespace VaultCOMFunctions
Public Module StringLibrary
<Extension>
Public Sub OpenFromVault(PartNum As String)
'Code for opening the file goes here
我不确定这是否相关。就像我说的,我对 VB.net 有点陌生。
我花了很多时间弄乱参考资料以试图解决这个问题,但没有运气。这可能是什么原因造成的?我找不到任何存在类似问题的现有论坛帖子(此处或其他地方)。