Visual Studio 2017-2019 (Community, Professional, Enterprise and Standard) Extension for Epicor 10 Customization

Make sure when you go to Insights Conference you give @josecgomez a hug, he loves hugs.

1 Like

@josecgomez
I can successfully download an open the code for a customization. When I click the toolbox button visual studio reboots. No log file is created.

Visual Studio Community 2019 V16.3.6
Epicor Version 10.2.500.3

Downloaded the extension and helper libraries today, so they should be the most recent.

We just got an Epicor update today, maybe that is the issue?

Did you download the DLL’s for version 500 of Epicor?
The log file is in the Epicor folder, it should there
Make sure you are downloading the right version of the DLL’s

I downloaded the “CustomizationHelper.10.2.500.X” from the visual studio marketplace website.

It made a log file when I used a folder without permissions for the download folder, but now when I click the toolbox its crashing without making an error message.

Did you make sure the downloaded files are unblocked?>

Yep, they are marked unblocked. Might be possible that WebRoot is blocking it somehow, but I have no control over that.

Made a new folder and downloaded the customization again. Clicked toolbox and VS instantly closed. Checked log file, nothing:

2019-10-28 09:30:40.941 -04:00 [INF] ===========================================Application Launch==================================
2019-10-28 09:30:41.075 -04:00 [INF] Action was Add
2019-10-28 09:30:43.290 -04:00 [DBG] Created Temp Epicor Directory at: C:\Users\epurdy.SAMSCREEN\AppData\Local\Temp\587877b5-35e0-482b-b417-2542e400dd42
2019-10-28 09:30:49.629 -04:00 [INF] Got a valid Epicor Session
2019-10-28 09:30:58.985 -04:00 [INF] Downloading Customization. Company: 78863, CGCCode: , Key1: OEMSpecs, Key3:App.UD100Entry.UD100Form, Key3: , LayerType: Customization, ProductType: EP
2019-10-28 09:30:58.986 -04:00 [INF] Sync down is True
2019-10-28 09:30:58.986 -04:00 [INF] Download and Sync a regular customization
2019-10-28 09:30:58.999 -04:00 [DBG] Got in the Function
2019-10-28 09:30:58.999 -04:00 [DBG] Customization Verify
2019-10-28 09:30:59.000 -04:00 [DBG] Got Epicor DLL
2019-10-28 09:30:59.003 -04:00 [DBG] Finding File
2019-10-28 09:30:59.596 -04:00 [DBG] Initialize EpiUI Utils
2019-10-28 09:30:59.613 -04:00 [DBG] Get composite Customize Data Set
2019-10-28 09:31:00.273 -04:00 [DBG] Customization Get By ID
2019-10-28 09:31:00.454 -04:00 [DBG] Get composite Customize Data Set
2019-10-28 09:31:00.480 -04:00 [DBG] Init Custom Controls
2019-10-28 09:31:00.480 -04:00 [DBG] Creating Handle for Top Control
2019-10-28 09:31:03.419 -04:00 [DBG] Generate Refs
2019-10-28 09:31:03.701 -04:00 [DBG] Write Project
2019-10-28 09:31:03.706 -04:00 [DBG] Create Folder
2019-10-28 09:31:03.710 -04:00 [DBG] Write Script
2019-10-28 09:31:03.712 -04:00 [DBG] Write ScriptRO
2019-10-28 09:31:03.715 -04:00 [DBG] Write Command
2019-10-28 09:31:03.813 -04:00 [DBG] Write Customization
2019-10-28 09:31:03.930 -04:00 [INF] ========================Application Close=====================

Weird anything in the Event Viewer (regular event viewer)

Actually yes, two error entries:

Application: devenv.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: Newtonsoft.Json.JsonReaderException
   at Newtonsoft.Json.JsonTextReader.ParseReadNumber(Newtonsoft.Json.ReadType, Char, Int32)
   at Newtonsoft.Json.JsonTextReader.ParseNumber(Newtonsoft.Json.ReadType)
   at Newtonsoft.Json.JsonTextReader.ReadNumberValue(Newtonsoft.Json.ReadType)
   at Newtonsoft.Json.JsonTextReader.ReadAsInt32()
   at Newtonsoft.Json.JsonReader.ReadForType(Newtonsoft.Json.Serialization.JsonContract, Boolean)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(System.Object, Newtonsoft.Json.JsonReader, Newtonsoft.Json.Serialization.JsonObjectContract, Newtonsoft.Json.Serialization.JsonProperty, System.String)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(Newtonsoft.Json.JsonReader, System.Type, Newtonsoft.Json.Serialization.JsonContract, Newtonsoft.Json.Serialization.JsonProperty, Newtonsoft.Json.Serialization.JsonContainerContract, Newtonsoft.Json.Serialization.JsonProperty, System.Object)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(Newtonsoft.Json.JsonReader, System.Type, Newtonsoft.Json.Serialization.JsonContract, Newtonsoft.Json.Serialization.JsonProperty, Newtonsoft.Json.Serialization.JsonContainerContract, Newtonsoft.Json.Serialization.JsonProperty, System.Object)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(Newtonsoft.Json.JsonReader, System.Type, Boolean)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(Newtonsoft.Json.JsonReader, System.Type)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(System.String, System.Type, Newtonsoft.Json.JsonSerializerSettings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.String, Newtonsoft.Json.JsonSerializerSettings)
   at VSExtension.EpicorTWControl.<BtnTools_Click>b__17_0()

Exception Info: System.Reflection.TargetInvocationException
   at System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[])
   at System.Delegate.DynamicInvokeImpl(System.Object[])
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object)
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(System.Object)
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
   at MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
   at System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame)
   at System.Windows.Threading.DispatcherOperation.Wait(System.TimeSpan)
   at System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherOperation, System.Threading.CancellationToken, System.TimeSpan)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
   at VSExtension.EpicorTWControl.BtnTools_Click(System.Object, System.Windows.RoutedEventArgs)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(System.Object, System.Windows.RoutedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(System.Object, System.Windows.RoutedEventArgs, Boolean)
   at System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject, System.Windows.RoutedEventArgs)
   at System.Windows.UIElement.RaiseEvent(System.Windows.RoutedEventArgs)
   at System.Windows.Controls.Primitives.ButtonBase.OnClick()
   at System.Windows.Controls.Button.OnClick()
   at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs)
   at System.Windows.UIElement.OnMouseLeftButtonUpThunk(System.Object, System.Windows.Input.MouseButtonEventArgs)
   at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(System.Delegate, System.Object)
   at System.Windows.RoutedEventArgs.InvokeHandler(System.Delegate, System.Object)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(System.Object, System.Windows.RoutedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(System.Object, System.Windows.RoutedEventArgs, Boolean)
   at System.Windows.UIElement.ReRaiseEventAs(System.Windows.DependencyObject, System.Windows.RoutedEventArgs, System.Windows.RoutedEvent)
   at System.Windows.UIElement.OnMouseUpThunk(System.Object, System.Windows.Input.MouseButtonEventArgs)
   at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(System.Delegate, System.Object)
   at System.Windows.RoutedEventArgs.InvokeHandler(System.Delegate, System.Object)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(System.Object, System.Windows.RoutedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(System.Object, System.Windows.RoutedEventArgs, Boolean)
   at System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject, System.Windows.RoutedEventArgs)
   at System.Windows.UIElement.RaiseTrustedEvent(System.Windows.RoutedEventArgs)
   at System.Windows.UIElement.RaiseEvent(System.Windows.RoutedEventArgs, Boolean)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputManager.ProcessInput(System.Windows.Input.InputEventArgs)
   at System.Windows.Input.InputProviderSite.ReportInput(System.Windows.Input.InputReport)
   at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr, System.Windows.Input.InputMode, Int32, System.Windows.Input.RawMouseActions, Int32, Int32, Int32)
   at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr, MS.Internal.Interop.WindowMessage, IntPtr, IntPtr, Boolean ByRef)
   at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
   at MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
Faulting application name: devenv.exe, version: 16.3.29418.71, time stamp: 0x5daa3192
Faulting module name: KERNELBASE.dll, version: 10.0.18362.418, time stamp: 0x2b181c2c
Exception code: 0xe0434352
Fault offset: 0x00113572
Faulting process id: 0x1a30
Faulting application start time: 0x01d58d93bd2a2b92
Faulting application path: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe
Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll
Report Id: de8d4b85-aeab-4d69-ac2d-0b120dd94377
Faulting package full name: 
Faulting package-relative application ID: 

Interesting a JSON Deserializer error…
What are your settings? What is your Download Path and Epicor Client Path?

image

Can you remove the space from the Epicor Customizations download path and try again? (shouldn’t matter but just curious)

Also send paste or PM your JSON file (that gets downloaded to the Customization) wondering if there’s something funny there.

Removing the space didn’t help. I’m gonna try a different customization now…

Tried a different customization, same crash.

@josecgomez Hi, I’m trying this this out for the first time in VS Pro 2019 V 16.3.7 trial… downloaded and installed extension and helper libraries for 10.2.300.x yesterday.
In the Customization Toolbox, The Run (TEST) works for me the first time, but I get the following error when I try it again or trying Edit/Run. Closing and relaunching the Toolbox gets me past it.

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
Record Not Found Error
Business Layer Exception
RecordNotFoundException
Description: Record not found.
Program: Epicor.Ice.dll
Method: InnerGetByID
Line Number: 696
Column Number: 21
Table: XXXDef

There’s a Log File (Created in the Epicor Client Folder) can you send that?
Also what do your settings look like/

Thanks…here you go…

image CustomizationEditor20191030.7z (2.0 KB)

@josecgomez Other than the error I reported, the only other place I am encountering an error is when I click BAQ Entry (even the first time). I get
Application Error

Exception caught in: Ice.Lib.Bpm.Client

Error Detail

Message: Could not load file or assembly ‘System.Collections.Immutable, Version=1.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Program: Ice.Lib.Bpm.Client.dll
Method: Setup

Client Stack Trace

at Ice.Bpm.Client.BpmClientLibBaseRegistrator.Setup()
at Ice.UI.App.BAQDesignerEntry.Misc.UbaqDIContainerBuilder.Setup()
at Ice.UI.App.BAQDesignerEntry.BAQTransaction.CreateContainer()
at System.Lazy1.CreateValue() at System.Lazy1.LazyInitValue()
at System.Lazy`1.get_Value()
at Ice.UI.App.BAQDesignerEntry.BAQTransaction.StarReferenceCachePreload()
at Ice.UI.App.BAQDesignerEntry.BAQTransaction.TransactionLoad()
at Ice.Lib.Framework.EpiTransaction.createTransaction()

Thanks I’ll check

@josecgomez Apologies, but I’m also trying the Debug button now and I’m getting the attached Parameter name path Value cannot be null error . The form does run using Run (Test) button.
debug_error.7z (3.7 KB)

Here are my settings now…
image

1 Like