The following steps describe how to configure and use .NET assemblies in an OpenEdge ABL project. .NET assemblies are used to extend the capabilities of ABL applications by allowing you to use .NET libraries and components directly within your OpenEdge projects. You can build more modern applications that combine ABL logic with .NET libraries. While compilation of .NET object references is supported, code completion requires additional setup.
  1. To enable compilation of .NET object references, create an assemblies.xml file in your current project directory. Here is a sample file:
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <references>
      <assembly name="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <assembly name="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <assembly name="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <assembly name="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <assembly name="System.Deployment, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <assembly name="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <assembly name="System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <assembly name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <assembly name="System.Runtime.Serialization.Formatters.Soap, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <assembly name="System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <assembly name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <assembly name="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    </references>
    
  2. To reference the assemblies in project configuration, add the following entry to your openedge-project.json file and restart the ABL language server to apply the configuration:
    "extraParameters": "-assemblies ."
  3. Declare a new variable of System.Object type in the previously created test1.p file:
    DEFINE VARIABLE oObject AS System.Object.
    This code compiles successfully, but code completion is not yet available.
  4. To enable code completion for .NET objects:
    1. Run the ABL: Generate assembly catalog command.

      A popup window appears.

    2. The catalog generation may take approximately 30 seconds, depending on the number of assemblies referenced.
    3. Upon completion, a new file named .builder/catalog.json is created in your project directory. Ensure that this catalog file contains multiple entries. It may include thousands of lines depending on the assemblies used.
  5. Restart the ABL language server. You should see a message inOutput similar to:
    Read catalog cache in <time> ms

    This message confirms that the catalog has been successfully loaded.

    You can now use code completion for .NET objects in your ABL code.

You have now completed the installation and configuration of the OpenEdge ABL extension in Windsurf, establishing a fully functional development environment for ABL projects. At this point, your environment supports code completion, compilation, database connectivity, and AI-assisted ABL development within Windsurf (or your IDE) and you can begin working with Cascade (or your AI agent) right away.

For advanced features such as compilation profiles, Code Analyzer for ABL (CABL), application debugging, and remote development, refer to the Riverside VS Code workshop documentation. Ensure that you substitute all references to VS Code with Windsurf to maintain consistency with your current environment.

The next section describes advanced Cascade configuration, including rules, memory, workflows, and models that further improves how the AI agent understands and works with your ABL codebase. To open the Cascade panel, press CTRL+L in Windsurf.