To compile and run an ABL class or procedure that instantiates a .NET class or references any .NET object type, ABL must be able to identify and locate the assembly where the specified .NET object type is implemented. For any ABL application that accesses .NET objects, the AVM automatically loads certain .NET assemblies depending on what .NET runtime you are using. ABL can therefore locate any .NET type that you reference from these assemblies without any further work on your part.

However, for any .NET type that you reference that is not in one of these assemblies, you must explicitly identify the appropriate assembly to ABL using an assembly references file. This XML file, named assemblies.xml, is required to compile and run your application This file must appear either in your working directory (the top-level directory for each project in Progress Developer Studio for OpenEdge) or in the directory you specify using the Assemblies (–assemblies) startup parameter.

Progress Developer Studio for OpenEdge provides an Assemblies dialog in the project properties dialog box (click Progress OpenEdge > Assemblies) and a separate Assembly References tool to create and edit assembly references files, as you require.
Note: The Assemblies dialog, the Assembly References tool (proasmref), and the Update Assembly References tool (updasmref) are only available on Windows. If you are building an assemblies.xml file for use on Linux, you can still use the tools on Windows and copy the resulting file over to Linux.

To create and edit an assembly references file using the Assembly References tool:

  1. Run the Assembly References tool in one of the following ways:
    • In Progress Developer Studio for OpenEdge, click Assembly References on the OpenEdge > Tools menu.
    • In the Procedure Editor, click Assembly References on the Tools menu.
    • On a Proenv command line, enter the proasmref command.

    The utility opens, as shown:



  2. To create a new assembly references file, select FileNew from the menu bar or click the New icon on the toolbar. An Assembly References screen appears:


    A Global Assemblies tab displays a list box that you can filter, which shows all assemblies that are currently registered in the .NET Global Assembly Cache (GAC).
    Note: The GAC only applies to .NET Framework. Therefore, you can only use the Global Assemblies tab for managing .NET Framework assemblies. For .NET Core assemblies, use the Local Assemblies tab instead. .NET Core assemblies are stored in the "host assembly store" which is a folder underneath the .NET Core installation.
    All Microsoft .NET assemblies in .NET Framework are installed in the GAC, as are most third-party assemblies that you might install, including the Infragistics assemblies that support the OpenEdge GUI for .NET. If you create or otherwise obtain a .NET assembly that is not registered in the GAC, you can access its DLL or EXE file using the Local Assemblies tab, which allows you to browse all the files on your system, with or without filtering.
  3. On the Global Assemblies tab, select an assembly and click the Add button. The selected assembly appears in the Assembly References list box below the Global Assemblies tab. Note that there might be multiple versions of the assembly listed in the displayed GAC. For a .NET Framework assembly, you typically select the latest assembly version that is supported by the .NET Framework version, in turn, supported by your release of OpenEdge (see General capabilities and limitations). Otherwise, you must ensure that you are using the appropriate version of any assembly that you select for your application.
    Note: You can add multiple assemblies at one time by scrolling to and group-selecting the assemblies you want to add before clicking the Add button.
  4. For .NET Core, you must first download the assemblies that you need. These usually come from a NuGet feed. There is no GAC with .NET Core, so you will need to place the downloaded assemblies into the assemblies directory. You can still use the Assembly Reference tool to build the appropriate assemblies.xml file by using the Local Assemblies tab.
  5. When you have added all the assemblies that you need, you can save the file to a location on your PROPATH by choosing the FileSave or FileSave As menu item. Once a new file is saved, the filename replaces <no file> in the title bar.
    Note: The Assembly References tool allows you to save an assembly references file by any filename you choose, and you might use different working filenames or store assemblies.xml files in different directories to manage assembly references required by different applications or application versions. However, ABL only recognizes and loads the assemblies.xml file that is in your current working directory or as in the directory specified by the –assemblies startup parameter.

    You can also open an existing assembly references file to view or edit by choosing the FileOpen menu item, or you can create another new file by choosing the FileNew menu item. In either case, the tool checks to make sure you have saved any unsaved changes to the current file before proceeding.

    Note: If you are using .NET Core instead of .NET Framework, you will need to download the assemblies you need and place them into the assemblies directory. You can use the Local Assemblies tab to build the appropriate assemblies.xml file.

    When editing a file, you can remove assemblies in much the same way that you add them, by selecting them in the bottom panel and clicking Remove, or by double-clicking the assembly you want to remove. In this case, the selected assembly disappears from the bottom list box.

    Note: You can remove multiple assemblies at one time by scrolling to and group-selecting the assemblies you want to remove in the bottom panel before clicking the Remove button. In this case, all the selected assemblies disappear from the panel.

    For more information on the options of the Assembly References tool, see the tool's online help.

    As noted, you need an appropriate assembly references file for both compiling and running ABL code that references .NET types. This means that you must also deliver the assembly references file with any OpenEdge GUI for .NET application that you deploy. For more information on GUI for .NET application deployment, see Manage ABL Applications.