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 and feature-rich applications by combining ABL logic with .NET capabilities. 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. This setup enables essential capabilities such as code completion, compilation, and database connectivity within a modern IDE. 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. Make sure to substitute all references to VS Code with Windsurf to maintain consistency with your current environment.

In the next section, you begin configuring Cascade for AI-assisted development. To launch the Cascade panel, press Ctrl+L within Windsurf.