shuotonashi
(Victor Hugo Garcia Rocha)
May 24, 2023, 8:53pm
1
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.
shuotonashi
(Victor Hugo Garcia Rocha)
May 24, 2023, 9:56pm
3
I got excited for a minute. It seems like Ice.Lib.EcfToolsSvc/GetAssemblyBytes is no longer available
Odata and RPC have the same.
klincecum
(Kevin Lincecum)
May 24, 2023, 10:02pm
4
stay excited
You’ll need to do it in postman or something until I can make a tool.
klincecum
(Kevin Lincecum)
May 24, 2023, 10:07pm
5
klincecum:
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.
shuotonashi
(Victor Hugo Garcia Rocha)
May 24, 2023, 10:14pm
7
Thanks I’m trying this approach now.
shuotonashi
(Victor Hugo Garcia Rocha)
May 25, 2023, 12:17am
8
This worked perfectly, finally will work with a good IDE.
Than you very very very much.
Here’s how I got it working:
Created a blank app with only a button to call my function.
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;
}
});
}
}
});
Went to server file download app:
Selected the files to download.
Again, thanks.
4 Likes
klincecum
(Kevin Lincecum)
May 25, 2023, 12:47am
9
No problem.
I’m about 60% done with a tool where you can download any of them via a Kinetic Dashboard.
1 Like
klincecum
(Kevin Lincecum)
May 25, 2023, 2:12am
11
I was done but the browsers don’t like dll files, so I made it zip them. Gotta tidy up.
shuotonashi
(Victor Hugo Garcia Rocha)
July 7, 2023, 1:08am
13
Hello @klincecum do you know by chance what happened to Epicor.System
I needed to clean format my machine and lost some files. It was available a couple weeks ago. We’re on version 2023.1
klincecum
(Kevin Lincecum)
July 7, 2023, 1:18am
14
I believe you have the name wrong of what you are looking for.
klincecum
(Kevin Lincecum)
July 7, 2023, 1:32am
15
Nevermind, not sure why it doesn’t list it, but it’s available. I’ll fix it.
klincecum
(Kevin Lincecum)
July 7, 2023, 1:40am
16
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);
};
shuotonashi
(Victor Hugo Garcia Rocha)
July 7, 2023, 1:45am
17
It working now! I wonder if that was caused by the update.
Thank you!