OpenEdge Progress 找不到自定义 DLL

OpenEdge Progress not finding custom DLL

我在将自定义 DLL 加载到 OpenEdge Enviroment 时遇到一些问题。

我已经将我的 DLL 复制到 PROPATH 值并将 DLL 导入到 ProAsmRef.exe 中(DLL 与 ProAsmRef 和 assemblies.xml 在同一文件夹中)

问题是,当我尝试在过程中加载我的自定义文件时,它向我发送了当前错误:

**Unknown table name PCControl. (200)

我已经在我的定义块中导入了 DLL:

USING PCControl.*.

我的 DLL 依赖于另一个 DLL (System.DirectoryServices.dll) 但已经在 assemblies.xml.

我不明白为什么 PCControl 没有导入,因为我已经有另外两个 DLL,它们工作得很好...

感谢您的帮助!

我的 DLL 代码:

using System;
using System.DirectoryServices;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Outlook;

namespace PCControl{

public class PCC{

public static string AzureLogin(string user, string password) {

        string status;

        try {
            DirectoryEntry entry = new DirectoryEntry("LDAP://AUTOEXPR.COM", user, password) {
                AuthenticationType = AuthenticationTypes.Secure,
                Username = user,
                Password = password
            };

            DirectorySearcher _searcher = new DirectorySearcher(entry);
            _searcher.Filter = "(objectclass=user)";
            SearchResult _sr = _searcher.FindOne();
            string? _name = _sr.Properties["displayname"][0].ToString();

            status = "SUCCESS - User " + user + " has logged in.";

        } catch (System.Exception e) {
            status = "ERROR - While logging in: " + e.ToString();

        }

        return status;
    }
}
}

我的XML:

    <?xml version="1.0" encoding="utf-8"?>
<references xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <assembly name="ClassADT, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <assembly name="ClassOPC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <assembly name="PCControl, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <assembly name="System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</references>

我的login.p(恢复):

    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE Login C-Win 
PROCEDURE Login :
/*------------------------------------------------------------------------------
  Purpose:     
  Parameters:  <none>
  Notes:       
------------------------------------------------------------------------------*/
 
    DEF VAR lSuccess AS CHAR NO-UNDO.
 
    lSuccess = PCControl.PCC:AzureLogin("arorap1", "12345").
 
    MESSAGE lSuccess
        VIEW-AS ALERT-BOX INFO
        TITLE "ok".
 
 
END PROCEDURE.
 
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
 

此问题与我的 DLL 代码无关...我已将此函数添加到我同事的 DLL 中并且它运行良好:

USING ClassADT.*.

DEFINE VARIABLE LSuccess AS CHAR NO-UNDO.
    IF AVAIL usr_param AND usr_param.usr_ativo EQ TRUE THEN
        lSuccess = ClassADT.MyAdt:MyLogin(txtUser:SCREEN-VALUE, txtPassword:SCREEN-VALUE).
            

当您使用中间 class 变量时会发生什么?

def var ologin as PCControl.PCC no-undo.

ologin = new PCcontrol.PCC().
ologin:AzureLogin( 'user', 'pass' ).

认为只有OpenEdge static classes可以像你这样直接使用

所以...我设法通过将 assemblies.xml 从 bin 文件夹复制到根文件夹来修复它。

不知何故,Progress 没有从 PROPATH 文件夹中读取 XML...我已将程序集添加到 DLC117,它正在运行 DLL 中的所有功能。