0

我有一个适用于 Dynamics GP 的 AddIn DLL,但我遇到了一个只能在客户端服务器上重现的问题。因此,我想我只需在他们的服务器上安装 Visual Basic Express 2010,这样我就可以执行“附加到进程”并调试我的 DLL 代码。然后我发现这个功能在 Express 版本中不可用。

我在 stackoverflow 上阅读了这篇文章:Attach to process in VS2010 express using a web site。是否可以?

我还看到了几篇关于“启动外部程序”选项的在线帖子。我没有看到这个确切的选项,而是有一个“工作目录”字段和一个“命令行参数”框。另外,我不确定这在概念上是否真正适用于 Dynamics GP - 即是否正确设置此选项然后在我开始调试 DLL 时启动 GP?

您能否建议一种在客户端服务器上调试此加载项的方法?否则,我会陷入尝试在我的系统上重现错误的试错场景中,因为我没有观察到错误原因的模式,而且我已经花费了比我想要的更多的时间。

4

1 回答 1

1

我十分明白你的感受。我自己曾多次遇到相同的情况,在我的环境中一切正常,但一旦部署到远程服务器就会出现错误。

您需要做的是下载Visual Studio 2010 远程调试器。

将其安装在运行 Dynamics GP 的远程服务器上。

重建您的解决方案,然后将 .dll 和 pdb 复制到远程服务器 AddIns 文件夹。确保不要再次重建您的解决方案或进行任何更改。我们希望部署到服务器的 dll 和 pdb 与您在本地开发环境中的构建完全匹配。

现在以管理员身份运行远程调试工具。您可能还希望将模式更改为无身份验证,以便您可以轻松附加到它。继续并启动 Dynamics GP 并登录。

远程调试工具在远程服务器上运行后,返回本地计算机并在 Visual Studio 中选择“调试”->“附加到进程”。输入远程服务器的服务器名称。选择运行 Dynamics GP 的进程,通常是要附加的 Dynamics.exe。设置断点,然后在 Dynamics GP 中执行导致插件触发的操作。

如果您的断点不会被命中,您可以检查 Visual Studio 中的“模块”窗口,以准确查看哪些 dll 和调试信息已加载到内存中。

我也经常使用它来远程调试 WCF 服务和 CRM 插件。这是一个非常有用的工具,可以放在您的工具箱中。

另一个注意事项:我建议将 VST 中的所有代码包装在 try catch 中,在 GP 的消息框中显示详细的错误消息。如果你的 VST 抛出错误,很多时候 GP 不会指出它有问题,也不会显示任何错误信息。

于 2013-05-20T20:46:15.273 回答