我正在尝试使用业务应用程序中的.NET程序集System.Text.RegularExpressions来减少验证负担。我尝试使用OpenEdge Architect“Assembly References”选项添加程序集,但它拒绝遵守
程序集未存储在windows / assembly(GAC)文件夹中,我可以通过选择Local Assemblies选项卡并导航到Windows \ Microsoft.NET \ assembly \ GAC_MSIL来找到它但是当我尝试添加dll时我得到的以下错误“不是有效的程序集”
我知道程序集没有损坏,因为我在开发C#.NET应用程序时一直使用它我还遇到了this article,它演示了ABL中使用的System.Text.RegularExpressions。如果有人能够提供任何可以使我工作的建议,我将非常感激。
提前致谢
答案 0 :(得分:0)
可能只是一个很长的镜头,但值得告诉你,有两个问题不是有效的程序集64 bit或dynamic serialization。
答案 1 :(得分:0)
以下内容出现在今天上午来自Progress的PANS电子邮件中:
http://knowledgebase.progress.com/articles/Article/000039027?popup=true
以下示例显示如何在ABL中使用正则表达式:
/*
* IN TESTING, THIS DOESN'T WORK WITH MY INSTALLATION OF VERSION 10.2B RHEL 6,
* BUT IT DOES WORK WITH VERSION 10.2B WINDOWS INSTALLATION
*
* THE ERROR RETURNED ON THE LINUX ENVIRONMENT IS:
* │Could not find class or interface Regex. (12886)
*/
USING System.Text.RegularExpressions.*.
DEFINE VARIABLE chaine AS CHARACTER NO-UNDO INIT "test@test.com".
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE regexp AS CLASS Regex NO-UNDO.
regexp = NEW Regex("^[^\x00-\x1F^\(^\)^\<^\>^\@^\,^\;^\:^\\^\~"^\.^\[^\]^\s]+(\.[^\x00-\x1F^\(^\)^\<^\>^\@^\,^\;^\:^\\^\~"^\.^\[^\]^\s]+)*@([^\x00-\x1F^\(^\)^\<^\> ^\@^\,^\;^\:^\\^\~"^\.^\[^\]^\s]+(\.[^\x00-\x1F^\(^\)^\<^\>^\@^\,^\;^\:^\\^\~"^\.^\[^\]^\s]+))+$").
DO i = 1 TO 100:
IF regexp:IsMatch(chaine) THEN MESSAGE "OK".
ELSE MESSAGE "KO" .
END.
DELETE OBJECT regexp.
上面的代码示例专门针对Windows。要在UNIX(或Linux)中使用正则表达式,您需要使用该OS的相应库。可以在这里找到一个例子: