GetActiveObject不是元帅的成员

时间:2018-12-17 21:41:57

标签: vb.net dll com autodesk-inventor

我正在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")

“元帅”来自“ System.Runtime.InteropServices”,它是使用以下代码行在应用程序的开头导入的:

Imports System.Runtime.InteropServices

问题是Visual Studio无法识别“ GetActiveObject”。它以红色的波浪线突出显示。当我用光标悬停在鼠标上时,它显示工具提示:“'GetActiveObject'不是'元帅'的成员。”

在撰写本文时,我有两个Visual Studio 2017实例打开。一种带有该代码的类库版本,另一种带有Autodesk Inventor插件版本。 AddIn版本的这一行代码没有问题,而类库则有问题。

按照有关创建DLL类库的一些说明,我的代码从以下内容开始:

Namespace VaultCOMFunctions
Public Module StringLibrary
    <Extension>
    Public Sub OpenFromVault(PartNum As String)
    'Code for opening the file goes here

我不确定这是否有意义。就像我说的那样,我是VB.net的新手。

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

1 个答案:

答案 0 :(得分:0)

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