These warnings will become errors in the future

Yeah, a little:

1 Like

So system.io I (sort of) understand. But I don’t get this warning. What is it that Epicor objects to here?
warning ECF1002: The ‘System.Reflection.MemberInfo.Name’ property cannot be read.

YARN | Don't mince words, Bones. What do you really think? | Star Trek II: The Wrath of Khan (1982) | Video clips by quotes | 2a38e072 | 紗

1 Like

I imagine people might have been using reflection to interact with Epicor libraries in ways they didn’t appreciate and that got caught in the crossfire but that is a guess.

Well they could say “Stop that”… or “Your warranty is void” lol, “Thanks for the maintenance money sucka!”

Or like which line of code is triggering the warning?

3 Likes

Now that’s just crazy talk.

3 Likes

I also loved my '73 Vega… but automatic transmission, 7 speaker Harman Kardon, fuel injection, and just a skosh more room were nice. Even if the computer control can be a pain in the butt sometimes. And I can’t even change the oil myself without some tool that costs as much as the car itself. But I digress…

2 Likes

This is all I can find in the documentation. Is there more somewhere?

My point is this, in as nice and a clear way as I can say it.

Does Epicor want to allow custom code on the server? Yes or No.
That should be the end of the discussion.

If there was still a shared environment model, we could entertain a different discussion, but there is not. At least not one that allows custom code in the first place.

Epicor should be expanding the tooling, not limiting what we can do.

I use this to expand and enhance what Epicor provides, and sometimes even workaround bugs.
I use it to work more efficiently as well.

If I screw it up, that should be on me. Let me make the mistakes.


Now that being said, if Epicor could give US more control over what is allowed by DEV groups, that would be fantastic.

I could say, well our Senior Dev, you can do this, but little Billy, we need to hold your hand for a bit.

8 Likes

I couldn’t agree with you more… and I am WELL aware of the limitations/detours/roadblocks/snafus on the path to the web. This one too will be resolved, hopefully sooner.

Just a clarifications pleaae?. They are warnings, are they stopping the code from saving or working?

Apologies for the rant in advance.

The delimma with expanding the tool so it is that every bit easier develop for the customers, the harder it is to sell the SDK or CSG services, so there is a conflict with the way Epicor has structured itself and the partner network, Sadly not something that is not going to change overnight, or at all.

My take is this, make the toolset broader, sell more base product with maintenance and spend less time supporting bugs, more on QA, R&D, integrations and Plugins @klincecum.:wink:.

Less funds spent on supporting a good product, because “It just works” makes more sense… I tell you Epicor has come a long long way since the bad old days of Platinum Sql and the Era products, every time you opened those ones up it felt like you were their QA team.!

It would be really nice for Epicor to become a household name one day, not just in my home. :grin:

They are warnings that will become errors in the “future” whatever that means. So the code works for now but may not/will not work at some point. Totally agree except when you put the part about being their qa team in the past tense. Have you not tried to develop anything in 2024.1 yet?

Yes but limited so far

QA part I was meaning the customer being the QA team… That was many years ago now

Its literally every time I open application studio. Its a nightmare.

3 Likes

Have you opened Application Studio in 2021.2 recently? :thinking: Yes, it isn’t perfect in 2024.1, but there’s been a lot of advancement since then.

1 Like

Yes, but its still awful. Have you tried letting it autocomplete a binding in 2024? It completely freezes up. Half the time i can save and commit, and what I see on the screen literally does not get saved. Adding tags inserts odd values in the crumb bar. Still can’t use updatable baqs. I could go on. It should be minimally stable by now and its nowhere close.

1 Like

Got a new one, now what is it unhappy about?
Call System.IDisposable.Dispose on object created by ‘Ice.Services.ContextFactory.CreateContext()’ before all references to it are out of scope

They happen on-prem too. You cant use certain methods in EFX even without warnings. They happen in the EFX Editor, BPM Editor… I dont get why reading or writing a file is a big deal. @Rich @pferrington whats the plan.

I had to use writeFileLib to avoid the warnings and I couldnt even do File.Copy or Create a Directory.

// Get the filename and contents
var fileName = oResults.oFileName.ToString();
var fileContents = oResults.oFileContents.ToString();

// Set the local and remote paths
var localFullPath = System.IO.Path.Combine(localFolder, fileName);
var remoteFullPath = System.IO.Path.Combine(remoteFolder, fileName).Replace(@"\", @"/");

// Write the file to the local folder
using (var file = new Ice.Lib.writeFileLib(localFullPath, true))
{
	file.FileWrite(fileContents);
}

// Copy file to Archive
var archiveFolder = System.IO.Path.Combine(localFolder, "Archive");
var archiveFullPath = System.IO.Path.Combine(archiveFolder, fileName);

using (var file = new Ice.Lib.writeFileLib(archiveFullPath, true))
{
	file.FileWrite(fileContents);
}

Cant we add them to like a whitelist somewhere?

I’m not even reading a file. Literally inserting a record into a UD table using Epicor’s business objects. I don’t get what the problem is? Is this not how new records are supposed to get created?

 var context = Ice.Services.ContextFactory.CreateContext<ErpContext>();
                         using (var ud100svc = Ice.Assemblies.ServiceRenderer.GetService<Ice.Contracts.UD100SvcContract>(context)) {
                         var ud100NewDS = new UD100Tableset();
                         ud100svc.GetaNewUD100(ref ud100NewDS);
                         var newUD100Row = ud100NewDS.UD100.Where(r=>r.Added()).FirstOrDefault();
                         newUD100Row .Company = callContextClient.CurrentCompany;
                         newUD100Row .Key1= OrderNum.ToString();
                         newUD100Row.UDField<string>("CreatedBy_c");
                         newUD100Row.SetUDField<string>("CreatedBy_c", callContextClient.CurrentUserId);
                                            
                         ud100svc.Update(ref ud100NewDS);