VS.NET AWS亚马逊工作区插件不工作

228
6
跳到解决方案
11-29-2022 06:35上午
JeraldAllen
通过
新贡献者III

大家好,我写了一个ArcGIS Pro 3.0插件。这是一个简单的应用程序,只有简单的任务。它在普通的windows桌面运行良好,但当运行在一个在Amazon WorkSpaces机器上,插件显示在插件带上,但是按钮显示“此命令不可用”。使用Amazon工作区有什么已知的问题吗?就像我说的,它可以在普通的Windows桌面计算机上运行,但不能在运行AWS云的计算机上运行。

Capture.PNG

0荣誉
1解决方案

接受的解决方案
狼
通过 金宝搏吧
金宝搏吧

我复制的信息,你正在得到我的样本下面。为了得到这条消息,我不得不重命名按钮代码后面的类名或名称空间。

在我的代码背后正确的代码将工作良好:

名称空间SEAS.IENC。PICREP_TOOLS{内部类PICREPButton:按钮{受保护的覆盖无效OnClick() {MessageBox.Show("test");}}}

但是重命名PICREPButton(区分大小写)会导致Pro发送以下消息:

Test.png呃,为了得到那个信息。

在原帖子中查看解决方案

6个回答
狼
通过 金宝搏吧
金宝搏吧

我认为你指的是“插件”而不是“插件”。加载外接程序是“JIT (Just In Time)”加载的,这意味着ArcGIS Pro启动时不会运行任何“外接程序”代码。Pro会一直等待,直到UI触发一些动作(比如按钮点击),然后Pro会尝试找到与按钮点击相关的类(我们称之为隐藏代码)。没有看到你的插件,我只能在这里推测,但似乎Pro无法在AWS机器上找到后面的代码。当外接程序DLL已重命名,但DLL在配置中引用时,通常会出现这种情况。Daml没有相应更新。或者,您的外接程序可能在构造函数中抛出了异常。不知道为什么这在你的开发机器上工作,但我建议你在你的开发机器上安装不同的插件。您可以使用“项目”菜单下的“外接程序管理器”菜单来比较已安装的外接程序。

0荣誉
JeraldAllen
通过
新贡献者III

非常感谢您的回复。是的,我在最初的声明中错误地说了插件。很抱歉。我必须与客户端检查,以确保没有任何文件被重命名,但我作为安装程序发送给他们的zip包是直接来自我的bin目录的文件。(如下图)。现在,在运行.addinx文件后,dll必须存在于外接程序的目录中吗?我注意到安装程序只是把加载项文件,但没有dll的。这是过去一直采用的方法,而且很有效,但我在部署方面没有太多经验。当他们双击。addinx文件来安装它时,它是在那里抓取dll并将其打包到已安装文件夹中的addinx中吗?也许我应该让他们把额外的文件复制到那个文件夹里? Anyways, thank you so much for your help with this.

jeraldallen_2 - 1669740651359. - png

jeraldallen_1 - 1669740550963. - png

jeraldallen_0 - 1669740513438. - png

0荣誉
狼
通过 金宝搏吧
金宝搏吧

我复制的信息,你正在得到我的样本下面。为了得到这条消息,我不得不重命名按钮代码后面的类名或名称空间。

在我的代码背后正确的代码将工作良好:

名称空间SEAS.IENC。PICREP_TOOLS{内部类PICREPButton:按钮{受保护的覆盖无效OnClick() {MessageBox.Show("test");}}}

但是重命名PICREPButton(区分大小写)会导致Pro发送以下消息:

Test.png呃,为了得到那个信息。

JeraldAllen
通过
新贡献者III

我最终也重现了这个错误。为了做到这一点,我必须创建一个新项目,并移植我最初为2.9编写的代码。在AWS上崩溃的代码使用ESRI迁移助手更新到3.0。客户端在两台本地桌面机器上进行了测试(就像我的那样),它只是在云中崩溃了。当我从头开始的时候,我确实有一些东西需要重构。其中之一是我必须为system。drawing。common添加一个nuget包。我还把所有的“。”点从我的名字空间中去掉,并使用下划线。所以,不幸的是,我引入了一些变量来修复它,但在将代码移植到新项目的过程中,当名称在配置中不匹配大小写时,我确实得到了这个错误。Daml文件的按钮。长文=谢谢大家!!!!!

0荣誉
丹尼
通过
新的因素

对于上面的额外dll问题,除了. esriaddinx文件外,您不需要安装任何文件-它是一个包含所需内容的压缩存档。

Charlie的诊断模式答案可能会记录错误。您可以在诊断模式下启动Pro:

ArcGISPro.exe /enablediagnostics /loglevel=错误

然后Pro会将事件日志写入您的Documents\ArcGIS\Diagnostics文件夹。

如果这不能说明问题,则无法显示功能区工具提示说明按钮的构造函数中发生了错误。通过在按钮构造函数中使用断点进行调试,您可能会发现问题。如果直到单击按钮才出现错误,则可以将断点放在按钮的OnClick()方法中。

另外,正如Wolf提到的,重命名PICREPButton会导致这个错误;如果是这种情况,调试将不会碰到断点,因为按钮不会加载。区分大小写的类名必须与Config中的名称相匹配。daml文件:

CharlesMacleod
金宝搏吧

尝试在启用诊断模式的情况下运行Pro,然后检查日志文件。更多信息请点击这里:https://github.com/esri/arcgis-pro-sdk/wiki/ProGuide-Command-line-switches-for-ArcGISPro.exe启用-…(你可能需要创建一个包含CMD行参数的快捷方式)

它看起来像你的插件正在加载(就像它出现在ribbon上一样),但在创建时抛出一个异常(例如在单击按钮时)。可能有一个依赖缺失/没有找到,但日志文件应该包含异常,你可以从那里去。

0荣誉