1

我在 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 有点陌生。

我花了很多时间弄乱参考资料以试图解决这个问题,但没有运气。这可能是什么原因造成的?我找不到任何存在类似问题的现有论坛帖子(此处或其他地方)。

4

1 回答 1

1

答案由@Simon_Mourier 在原始帖子的评论中发布。Visual Studio 项目的目标是 .NET Core。为了解决这个问题,我只是将项目切换到目标 .NET Framework,错误就消失了。

于 2019-07-16T15:13:21.830 回答