Can't find dll's to be able to debug

Hi all, I’ve been working a lot with BPM and functions lately and I needed a more complete IDE and started working with Rider from Jetbrains it works pretty good I added my references and the intelisense works as expected but I notices there a some dll’s I can’t find in the local machine installation (client side) such as:
Erp.ErpContext
Ice.Tables
Ice.IceDataContext

I know I can get the dlls if we have an on premise installation but unfortunatelly Our epicor application is on the cloud so we don’t have access to the installation folder. Have any of you managed to get these files? We work with epicor 2023.1.3.

Thanks.

I got excited for a minute. It seems like Ice.Lib.EcfToolsSvc/GetAssemblyBytes is no longer available :frowning:
Odata and RPC have the same.

image

stay excited

You’ll need to do it in postman or something until I can make a tool.

Or you can call it internally in a BPM, and drop it in one of the EpicorData Folders, and use the
file transfer service to get it, or server file download.

Example from BPM:

Thanks I’m trying this approach now.

This worked perfectly, finally will work with a good IDE.

Than you very very very much.

Here’s how I got it working:

  1. Created a blank app with only a button to call my function.
    image

  2. Created a function with the following code:

CallService < Ice.Contracts.ServerPathSvcContract > (serverPathSvc => {
  List < string > dllList = new List < string > {
    "EntityFramework",
    "Epicor.Customization",
    "Epicor.Functions.Core",
    "Epicor.Ice",
    "Epicor.ServiceModel",
    "Epicor.System",
    "Erp.Data.910100",
    "Ice.Contracts.BO.BpHolds",
    "Ice.Data.Model",
    "Ice.Lib.Blaq",
    "Ice.Lib.Shared"
  };

  List < Ice.Lib.ServerPath.Types.PathInfo > pathInfo = new List < Ice.Lib.ServerPath.Types.PathInfo > ();

  pathInfo = serverPathSvc.GetPaths(Epicor.ServiceModel.Utilities.SpecialFolder.UserData, "", false);

  foreach(var name in dllList) {
    if (pathInfo.Count > 0) {
      CallService < Ice.Contracts.EcfToolsSvcContract > (EcfToolsSvc => {

        try {
          byte[] data = EcfToolsSvc.GetAssemblyBytes(name);
          string path = $ "{pathInfo.First().FullName}\\" + name + ".dll";
          if (data.Length > 0) {
            File.WriteAllBytes(path, data);
          }

        } catch (Exception e) {
          Filepath = e.Message;

        }
      });

    }

  }
});



  1. Went to server file download app:
    image

  2. Selected the files to download.

Again, thanks.

4 Likes

No problem.

I’m about 60% done with a tool where you can download any of them via a Kinetic Dashboard.

1 Like

Amazing can’t wait

1 Like

I was done but the browsers don’t like dll files, so I made it zip them. Gotta tidy up.

1 Like

Hello @klincecum do you know by chance what happened to Epicor.System :frowning:

I needed to clean format my machine and lost some files. It was available a couple weeks ago. We’re on version 2023.1

I believe you have the name wrong of what you are looking for.

Nevermind, not sure why it doesn’t list it, but it’s available. I’ll fix it.

Replace the code in the BAQ KEV_Get_Assemblies.GetList.GetAssemblies
with this code until I can figure out the issue.

// UBAQ Directive:
// Post-Processing Directive on GetList


//ref: Ice.Contracts.BO.BpMethod
//using Ice.Assemblies;


  var whereRows = (from whereRow in executionParams.ExecutionSetting
                        where whereRow.Name == "Where"
                        select whereRow);




  using (Ice.Contracts.BpMethodSvcContract bpMethod = ServiceRenderer.GetService<Ice.Contracts.BpMethodSvcContract>(Db))
  {
      List<Ice.Contracts.BO.BpMethod.ReferenceInfo> referenceAssemblies = bpMethod.GetAvailableReferences("Assemblies");


      //shim in Epicor.System until I figure out why it's not listed.
      referenceAssemblies.Add(new Ice.Contracts.BO.BpMethod.ReferenceInfo()
      {
          Name = "Epicor.System",
          FileName = "Epicor.System.Dll",
      });


      int x = 0;
      List<ResultsUbaqRow> resultsTemp = new List<ResultsUbaqRow>(); 
      foreach(Ice.Contracts.BO.BpMethod.ReferenceInfo refAss in referenceAssemblies)
      {
      
          ResultsUbaqRow newRow = new ResultsUbaqRow();
          
          newRow.Calculated_AssemblyName = refAss.Name;
          newRow.Calculated_FileName = refAss.FileName;
          newRow.Calculated_Version = refAss.Version;
          
          string fileNameNoExt = System.IO.Path.GetFileNameWithoutExtension(refAss.FileName);
          
          newRow.Calculated_ZipName = fileNameNoExt + ".zip";
          
          
          newRow.RowIdent = x.ToString(); x++;
          
          resultsTemp.Add(newRow);
      }
      result.Results.Clear();
      result.Results.AddRange(resultsTemp);
  };

It working now! I wonder if that was caused by the update. :thinking:

Thank you!