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

I have tested this with 10.2.400.8 and it is working.
I did have instant crash and restart at first, once because I hadn’t downloaded the helper library (RTFM) and once because it could access the path I’d specified in “Download to folder” (Permission issue, I changed to another folder)

the client folder? What is the file name?

Just sort by modified , it should be EpicorCustomizationHelper something or other.

It is unauthorized as I see in the log. Also your path is in the logs alot,.

2019-08-22 08:47:58.899 -04:00 [INF] ===========================================Application Launch==================================
2019-08-22 08:47:59.105 -04:00 [INF] Action was Add
2019-08-22 08:48:03.856 -04:00 [DBG] Created Temp Epicor Directory at: C:\Users\bwhitt.1.3864\AppData\Local\Temp\fbef59a6-737b-4036-9488-ef4412239797
2019-08-22 08:48:04.049 -04:00 [ERR] Failed to Login
System.InvalidOperationException: The username is not provided. Specify username in ClientCredentials.

Server stack trace: 
   at System.ServiceModel.ClientCredentialsSecurityTokenManager.CreateSecurityTokenProvider(SecurityTokenRequirement tokenRequirement, Boolean disableInfoCard)
   at System.ServiceModel.ClientCredentialsSecurityTokenManager.CreateSecurityTokenProvider(SecurityTokenRequirement tokenRequirement)
   at System.ServiceModel.Security.SecurityProtocol.AddSupportingTokenProviders(SupportingTokenParameters supportingTokenParameters, Boolean isOptional, IList`1 providerSpecList)
   at System.ServiceModel.Security.SecurityProtocol.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.SecurityChannelFactory`1.ClientSecurityChannel`1.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open()

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at System.ServiceModel.ICommunicationObject.Open()
   at Epicor.ServiceModel.Channels.ChannelEntry`1.CreateNewChannel()
   at Epicor.ServiceModel.Channels.ChannelEntry`1.CreateChannel()
   at Epicor.ServiceModel.Channels.ChannelEntry`1.GetContract()
   at Epicor.ServiceModel.Channels.ImplBase`1.GetChannel()
   at Epicor.ServiceModel.Channels.ImplBase`1.HandleContractBeforeCall()
   at Ice.Proxy.Lib.SessionModImpl.Login()
   at Ice.Core.Session.InitSessionMod(String asUrl, Boolean fwVerCheck, String companyID, String plantID)
   at Ice.Core.Session.InitSession(Action setCredentials, String asUrl, LicenseType licenseType, String pathToConfigurationFile, Boolean fwVerCheck, String companyID, String plantID)
   at Ice.Core.Session..ctor(String userID, String password, String asUrl, LicenseType licenseType, String pathToConfigurationFile, Boolean fwVerCheck, String companyID, String plantID)
   at Ice.Core.Session..ctor(String userID, String password, LicenseType licenseType, String pathToConfigurationFile)
   at CustomizationEditor.Program.GetEpiSession(CommandLineParams o) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\Program.cs:line 363
2019-08-22 08:48:40.993 -04:00 [INF] ===========================================Application Launch==================================
2019-08-22 08:48:41.142 -04:00 [INF] Action was Add
2019-08-22 08:48:51.397 -04:00 [DBG] Created Temp Epicor Directory at: C:\Users\bwhitt.1.3864\AppData\Local\Temp\da9916f5-bd87-44c3-ac35-f25b260329de
2019-08-22 08:48:55.422 -04:00 [INF] Got a valid Epicor Session
2019-08-22 08:49:47.754 -04:00 [INF] Downloading Customization. Company: , CGCCode: , Key1: Template, Key3:App.AccountBudgetEntry.AcctBudgetForm, Key3: , LayerType: Customization, ProductType: EP
2019-08-22 08:49:47.754 -04:00 [INF] Sync down is True
2019-08-22 08:49:47.754 -04:00 [INF] Download and Sync a regular customization
2019-08-22 08:49:47.763 -04:00 [DBG] Got in the Function
2019-08-22 08:49:47.763 -04:00 [DBG] Customization Verify
2019-08-22 08:49:47.763 -04:00 [DBG] Got Epicor DLL
2019-08-22 08:49:47.765 -04:00 [DBG] Finding File
2019-08-22 08:49:49.517 -04:00 [DBG] Initialize EpiUI Utils
2019-08-22 08:49:49.523 -04:00 [DBG] Get composite Customize Data Set
2019-08-22 08:49:49.835 -04:00 [DBG] Customization Get By ID
2019-08-22 08:49:50.350 -04:00 [DBG] Get composite Customize Data Set
2019-08-22 08:49:50.423 -04:00 [DBG] Init Custom Controls
2019-08-22 08:49:50.423 -04:00 [DBG] Creating Handle for Top Control
2019-08-22 08:49:52.390 -04:00 [DBG] Generate Refs
2019-08-22 08:49:52.662 -04:00 [DBG] Write Project
2019-08-22 08:49:52.730 -04:00 [DBG] Create Folder
2019-08-22 08:49:52.750 -04:00 [DBG] System.UnauthorizedAccessException: Access to the path 'C:\Users\bwhitt_1_3864\Desktop\Epicor Customizations\App_AccountBudgetEntry_AcctBudgetForm_Template' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
   at System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
   at System.IO.Directory.CreateDirectory(String path)
   at CommonCode.EpicorLauncher.Resync(CommandLineParams o, StringBuilder refds, GenXDataDataSet ds, CustomizationDS nds, CustomScriptManager csmR, Dictionary`2 verdic) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 670
   at CommonCode.EpicorLauncher.DownloadAndSync(Session epiSession, CommandLineParams o) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 602
2019-08-22 08:49:52.783 -04:00 [INF] ========================Application Close=====================
2019-08-22 08:50:06.984 -04:00 [INF] ===========================================Application Launch==================================
2019-08-22 08:50:07.182 -04:00 [INF] Action was Add
2019-08-22 08:50:09.004 -04:00 [DBG] Created Temp Epicor Directory at: C:\Users\bwhitt.1.3864\AppData\Local\Temp\047f9ea4-9ed9-4b3c-9306-66481c93c108
2019-08-22 08:50:12.114 -04:00 [INF] Got a valid Epicor Session
2019-08-22 08:50:26.467 -04:00 [INF] Downloading Customization. Company: , CGCCode: , Key1: Template, Key3:App.AccountBudgetEntry.AcctBudgetForm, Key3: , LayerType: Customization, ProductType: EP
2019-08-22 08:50:26.467 -04:00 [INF] Sync down is True
2019-08-22 08:50:26.467 -04:00 [INF] Download and Sync a regular customization
2019-08-22 08:50:26.475 -04:00 [DBG] Got in the Function
2019-08-22 08:50:26.476 -04:00 [DBG] Customization Verify
2019-08-22 08:50:26.476 -04:00 [DBG] Got Epicor DLL
2019-08-22 08:50:26.478 -04:00 [DBG] Finding File
2019-08-22 08:50:28.642 -04:00 [DBG] Initialize EpiUI Utils
2019-08-22 08:50:28.661 -04:00 [DBG] Get composite Customize Data Set
2019-08-22 08:50:28.984 -04:00 [DBG] Customization Get By ID
2019-08-22 08:50:29.195 -04:00 [DBG] Get composite Customize Data Set
2019-08-22 08:50:29.264 -04:00 [DBG] Init Custom Controls
2019-08-22 08:50:29.264 -04:00 [DBG] Creating Handle for Top Control
2019-08-22 08:50:31.435 -04:00 [DBG] Generate Refs
2019-08-22 08:50:31.642 -04:00 [DBG] Write Project
2019-08-22 08:50:31.648 -04:00 [DBG] Create Folder
2019-08-22 08:50:31.652 -04:00 [DBG] System.UnauthorizedAccessException: Access to the path 'C:\Users\bwhitt_1_3864\Desktop\Epicor Customizations\App_AccountBudgetEntry_AcctBudgetForm_Template' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
   at System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
   at System.IO.Directory.CreateDirectory(String path)
   at CommonCode.EpicorLauncher.Resync(CommandLineParams o, StringBuilder refds, GenXDataDataSet ds, CustomizationDS nds, CustomScriptManager csmR, Dictionary`2 verdic) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 670
   at CommonCode.EpicorLauncher.DownloadAndSync(Session epiSession, CommandLineParams o) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 602
2019-08-22 08:50:31.683 -04:00 [INF] ========================Application Close=====================
2019-08-22 10:36:44.611 -04:00 [INF] ===========================================Application Launch==================================
2019-08-22 10:36:44.763 -04:00 [INF] Action was Add
2019-08-22 10:36:50.967 -04:00 [DBG] Created Temp Epicor Directory at: C:\Users\bwhitt.1.3864\AppData\Local\Temp\193a3023-3ef3-49a4-ba6b-e38518cb909d
2019-08-22 10:36:56.626 -04:00 [INF] Got a valid Epicor Session
2019-08-22 10:38:51.105 -04:00 [INF] Downloading Customization. Company: CYT, CGCCode: , Key1: Purch_Req_New, Key3:App.ReqEntry.ReqEntryForm, Key3: , LayerType: Customization, ProductType: EP
2019-08-22 10:38:51.105 -04:00 [INF] Sync down is True
2019-08-22 10:38:51.105 -04:00 [INF] Download and Sync a regular customization
2019-08-22 10:38:51.115 -04:00 [DBG] Got in the Function
2019-08-22 10:38:51.116 -04:00 [DBG] Customization Verify
2019-08-22 10:38:51.116 -04:00 [DBG] Got Epicor DLL
2019-08-22 10:38:51.138 -04:00 [DBG] Finding File
2019-08-22 10:39:01.165 -04:00 [DBG] Initialize EpiUI Utils
2019-08-22 10:39:01.194 -04:00 [DBG] Get composite Customize Data Set
2019-08-22 10:39:02.065 -04:00 [DBG] Customization Get By ID
2019-08-22 10:39:02.148 -04:00 [DBG] Get composite Customize Data Set
2019-08-22 10:39:02.175 -04:00 [DBG] Init Custom Controls
2019-08-22 10:39:02.175 -04:00 [DBG] Creating Handle for Top Control
2019-08-22 10:39:02.202 -04:00 [DBG] Failed to Create Handle
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidOperationException: Window handle already exists.
   at System.Windows.Forms.NativeWindow.CheckReleased()
   at System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp)
   at System.Windows.Forms.Control.CreateHandle()
   at System.Windows.Forms.Form.CreateHandle()
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at CommonCode.EpicorLauncher.DownloadAndSync(Session epiSession, CommandLineParams o) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 588
2019-08-22 10:39:05.254 -04:00 [DBG] Generate Refs
2019-08-22 10:39:06.034 -04:00 [DBG] Write Project
2019-08-22 10:39:06.098 -04:00 [DBG] Create Folder
2019-08-22 10:39:06.108 -04:00 [DBG] System.UnauthorizedAccessException: Access to the path 'C:\Users\bwhitt_1_3864\Desktop\Epicor Customizations\App_ReqEntry_ReqEntryForm_Purch_Req_New' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
   at System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
   at System.IO.Directory.CreateDirectory(String path)
   at CommonCode.EpicorLauncher.Resync(CommandLineParams o, StringBuilder refds, GenXDataDataSet ds, CustomizationDS nds, CustomScriptManager csmR, Dictionary`2 verdic) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 670
   at CommonCode.EpicorLauncher.DownloadAndSync(Session epiSession, CommandLineParams o) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 602
2019-08-22 10:39:06.147 -04:00 [INF] ========================Application Close=====================
2019-08-22 10:41:16.756 -04:00 [INF] ===========================================Application Launch==================================
2019-08-22 10:41:16.913 -04:00 [INF] Action was Add
2019-08-22 10:41:18.415 -04:00 [DBG] Created Temp Epicor Directory at: C:\Users\bwhitt.1.3864\AppData\Local\Temp\0b70a07c-343a-4366-a9be-aa35a08d164c
2019-08-22 10:41:22.905 -04:00 [INF] Got a valid Epicor Session
2019-08-22 10:42:22.182 -04:00 [INF] Downloading Customization. Company: , CGCCode: , Key1: Template, Key3:App.AccountBudgetEntry.AcctBudgetForm, Key3: , LayerType: Customization, ProductType: EP
2019-08-22 10:42:22.182 -04:00 [INF] Sync down is True
2019-08-22 10:42:22.182 -04:00 [INF] Download and Sync a regular customization
2019-08-22 10:42:22.190 -04:00 [DBG] Got in the Function
2019-08-22 10:42:22.191 -04:00 [DBG] Customization Verify
2019-08-22 10:42:22.191 -04:00 [DBG] Got Epicor DLL
2019-08-22 10:42:22.200 -04:00 [DBG] Finding File
2019-08-22 10:42:23.408 -04:00 [DBG] Initialize EpiUI Utils
2019-08-22 10:42:23.419 -04:00 [DBG] Get composite Customize Data Set
2019-08-22 10:42:23.702 -04:00 [DBG] Customization Get By ID
2019-08-22 10:42:23.985 -04:00 [DBG] Get composite Customize Data Set
2019-08-22 10:42:24.043 -04:00 [DBG] Init Custom Controls
2019-08-22 10:42:24.043 -04:00 [DBG] Creating Handle for Top Control
2019-08-22 10:42:25.854 -04:00 [DBG] Generate Refs
2019-08-22 10:42:26.061 -04:00 [DBG] Write Project
2019-08-22 10:42:26.074 -04:00 [DBG] Create Folder
2019-08-22 10:42:26.079 -04:00 [DBG] System.UnauthorizedAccessException: Access to the path 'C:\Users\bwhitt_1_3864\Desktop\Epicor Customizations\App_AccountBudgetEntry_AcctBudgetForm_Template' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
   at System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
   at System.IO.Directory.CreateDirectory(String path)
   at CommonCode.EpicorLauncher.Resync(CommandLineParams o, StringBuilder refds, GenXDataDataSet ds, CustomizationDS nds, CustomScriptManager csmR, Dictionary`2 verdic) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 670
   at CommonCode.EpicorLauncher.DownloadAndSync(Session epiSession, CommandLineParams o) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 602
2019-08-22 10:42:26.132 -04:00 [INF] ========================Application Close=====================
2019-08-22 10:49:15.446 -04:00 [INF] ===========================================Application Launch==================================
2019-08-22 10:49:15.577 -04:00 [INF] Action was Add
2019-08-22 10:49:19.483 -04:00 [DBG] Created Temp Epicor Directory at: C:\Users\bwhitt.1.3864\AppData\Local\Temp\99367e8b-a9dd-4e45-8739-4102f9d9afbf
2019-08-22 10:49:24.757 -04:00 [INF] Got a valid Epicor Session
2019-08-22 10:49:41.667 -04:00 [INF] Downloading Customization. Company: CYT, CGCCode: , Key1: CYTPackList, Key3:App.CustShipEntry.CustShipForm, Key3: , LayerType: Customization, ProductType: EP
2019-08-22 10:49:41.667 -04:00 [INF] Sync down is True
2019-08-22 10:49:41.667 -04:00 [INF] Download and Sync a regular customization
2019-08-22 10:49:41.675 -04:00 [DBG] Got in the Function
2019-08-22 10:49:41.675 -04:00 [DBG] Customization Verify
2019-08-22 10:49:41.676 -04:00 [DBG] Got Epicor DLL
2019-08-22 10:49:41.713 -04:00 [DBG] Finding File
2019-08-22 10:49:59.085 -04:00 [DBG] Initialize EpiUI Utils
2019-08-22 10:49:59.092 -04:00 [DBG] Get composite Customize Data Set
2019-08-22 10:49:59.442 -04:00 [DBG] Customization Get By ID
2019-08-22 10:49:59.468 -04:00 [DBG] Get composite Customize Data Set
2019-08-22 10:49:59.493 -04:00 [DBG] Init Custom Controls
2019-08-22 10:49:59.493 -04:00 [DBG] Creating Handle for Top Control
2019-08-22 10:50:00.671 -04:00 [DBG] Generate Refs
2019-08-22 10:50:00.787 -04:00 [DBG] Write Project
2019-08-22 10:50:00.792 -04:00 [DBG] Create Folder
2019-08-22 10:50:00.793 -04:00 [DBG] System.UnauthorizedAccessException: Access to the path 'C:\Users\bwhitt_1_3864\Desktop\Epicor Customizations\App_CustShipEntry_CustShipForm_CYTPackList' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
   at System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
   at System.IO.Directory.CreateDirectory(String path)
   at CommonCode.EpicorLauncher.Resync(CommandLineParams o, StringBuilder refds, GenXDataDataSet ds, CustomizationDS nds, CustomScriptManager csmR, Dictionary`2 verdic) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 670
   at CommonCode.EpicorLauncher.DownloadAndSync(Session epiSession, CommandLineParams o) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 602
2019-08-22 10:50:00.875 -04:00 [INF] ========================Application Close=====================
2019-08-22 11:08:07.249 -04:00 [INF] ===========================================Application Launch==================================
2019-08-22 11:08:07.399 -04:00 [INF] Action was Add
2019-08-22 11:08:38.478 -04:00 [DBG] Created Temp Epicor Directory at: C:\Users\bwhitt.1.3864\AppData\Local\Temp\cd8af323-aee0-440b-9848-6336589e9159
2019-08-22 11:08:41.300 -04:00 [INF] Got a valid Epicor Session
2019-08-22 11:09:00.522 -04:00 [INF] Downloading Customization. Company: , CGCCode: , Key1: AllPurchReq, Key3:App.ReqEntry.ReqEntryForm, Key3: , LayerType: Customization, ProductType: EP
2019-08-22 11:09:00.522 -04:00 [INF] Sync down is True
2019-08-22 11:09:00.522 -04:00 [INF] Download and Sync a regular customization
2019-08-22 11:09:00.531 -04:00 [DBG] Got in the Function
2019-08-22 11:09:00.531 -04:00 [DBG] Customization Verify
2019-08-22 11:09:00.531 -04:00 [DBG] Got Epicor DLL
2019-08-22 11:09:00.537 -04:00 [DBG] Finding File
2019-08-22 11:09:07.209 -04:00 [DBG] Initialize EpiUI Utils
2019-08-22 11:09:07.228 -04:00 [DBG] Get composite Customize Data Set
2019-08-22 11:09:07.512 -04:00 [DBG] Customization Get By ID
2019-08-22 11:09:07.630 -04:00 [DBG] Get composite Customize Data Set
2019-08-22 11:09:07.663 -04:00 [DBG] Init Custom Controls
2019-08-22 11:09:07.663 -04:00 [DBG] Creating Handle for Top Control
2019-08-22 11:09:07.672 -04:00 [DBG] Failed to Create Handle
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidOperationException: Window handle already exists.
   at System.Windows.Forms.NativeWindow.CheckReleased()
   at System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp)
   at System.Windows.Forms.Control.CreateHandle()
   at System.Windows.Forms.Form.CreateHandle()
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at CommonCode.EpicorLauncher.DownloadAndSync(Session epiSession, CommandLineParams o) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 588
2019-08-22 11:09:08.413 -04:00 [DBG] Generate Refs
2019-08-22 11:09:08.479 -04:00 [DBG] Write Project
2019-08-22 11:09:08.488 -04:00 [DBG] Create Folder
2019-08-22 11:09:08.489 -04:00 [DBG] System.UnauthorizedAccessException: Access to the path 'C:\Users\bwhitt_1_3864\Desktop\Epicor Customizations\App_ReqEntry_ReqEntryForm_AllPurchReq' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
   at System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
   at System.IO.Directory.CreateDirectory(String path)
   at CommonCode.EpicorLauncher.Resync(CommandLineParams o, StringBuilder refds, GenXDataDataSet ds, CustomizationDS nds, CustomScriptManager csmR, Dictionary`2 verdic) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 670
   at CommonCode.EpicorLauncher.DownloadAndSync(Session epiSession, CommandLineParams o) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 602
2019-08-22 11:09:08.507 -04:00 [INF] ========================Application Close=====================

This was SSO

I’m on 10.1.600 and I’m having trouble getting this to work with VS2019 community. I am able to connect and browse the customizations. When I click on a customization to open it, it says it is downloading the customization but it never opens.

I see this error about Newtonsoft.Json in the logfile that I am assuming is the reason the customization does not load/open in VS.

I can see the Newtonsoft.Json.dll in the Epicor client folder. Is there a package I need to install for VS to get this to work?

System.IO.FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=9.0.0.0

There’s your answer @anon75023439 change the path or give it better permissions. The issue here is your username has periods and it doesn’t like those, give it a path with no periods.

Can I see your Log @Larry-CS

@josecgomez, This was the latest entry.

2019-08-22 11:43:41.217 -04:00 [INF] ===========================================Application Launch==================================
2019-08-22 11:43:41.397 -04:00 [INF] Action was Add
2019-08-22 11:43:43.047 -04:00 [DBG] Created Temp Epicor Directory at: C:\Users\traceyl\AppData\Local\Temp\fa9d4a32-760e-4110-9667-16df02370faa
2019-08-22 11:43:44.647 -04:00 [INF] Got a valid Epicor Session
2019-08-22 11:43:55.363 -04:00 [INF] Downloading Customization. Company: CS, CGCCode: , Key1: CS_CE_PartSearch_V3, Key3:App.HelpDeskEntry.HelpDeskForm, Key3: , LayerType: Customization, ProductType: EP
2019-08-22 11:43:55.363 -04:00 [INF] Sync down is True
2019-08-22 11:43:55.363 -04:00 [INF] Download and Sync a regular customization
2019-08-22 11:43:55.380 -04:00 [DBG] Got in the Function
2019-08-22 11:43:55.380 -04:00 [DBG] Customization Verify
2019-08-22 11:43:55.380 -04:00 [DBG] Got Epicor DLL
2019-08-22 11:43:55.380 -04:00 [DBG] Finding File
2019-08-22 11:44:00.930 -04:00 [DBG] Initialize EpiUI Utils
2019-08-22 11:44:00.930 -04:00 [DBG] Get composite Customize Data Set
2019-08-22 11:44:01.096 -04:00 [DBG] Customization Get By ID
2019-08-22 11:44:01.113 -04:00 [DBG] Get composite Customize Data Set
2019-08-22 11:44:01.130 -04:00 [DBG] Init Custom Controls
2019-08-22 11:44:01.130 -04:00 [DBG] Creating Handle for Top Control
2019-08-22 11:44:02.180 -04:00 [DBG] Generate Refs
2019-08-22 11:44:02.296 -04:00 [DBG] System.IO.FileLoadException: Could not load file or assembly ‘Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: ‘Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed’
at CommonCode.EpicorLauncher.Resync(CommandLineParams o, StringBuilder refds, GenXDataDataSet ds, CustomizationDS nds, CustomScriptManager csmR, Dictionary`2 verdic)
at CommonCode.EpicorLauncher.DownloadAndSync(Session epiSession, CommandLineParams o) in C:\Users\jose\source\repos\CustomizationEditor\CommonCode\EpicorLauncher.cs:line 602

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

2019-08-22 11:44:02.317 -04:00 [INF] ========================Application Close=====================

Right click on your newton soft dll in the folder and show me what the version is? Also make sure it is not locked.

Hmm… On my PC it was version 12. I checked another PC and it was version 9 as you show in your screen shot. I copied over version 9 to my PC and it is now working :smiley:
Thank you very much @josecgomez

1 Like

Just published a new version of the helper library with an enhancement that the talented @gingerhelp (Adam) cam up with.
This allows you tun Run/Test a customization without necessarily committing those changes to your current (deployed) version.
image

This button in the toolbox will Run your latest changes wihtout over-writing your actual current code. Very handy when you aren’t sure if something will work.

You can download the helper libraries from the Visual Studio Market Place.

Thanks a ton Adam!
Also check out his article on how to use the extension and github for source control

3 Likes

Nice addition to the app - thank you both. And a beautiful write up @gingerhelp - Thank you!

2 Likes

Thanks @MikeGross - much appreciated!

1 Like

I’ll second that.

Just added support for 10.2.500.X to the Library, the Helper can be downloaded from the extension page at Visual Studio Extensions Site.

1 Like

With this new feature, does it make version control of customizations easier? (Committing C#/VB code to a git repo)

It always allowed you to use git, since it generates a proper VS project, all you have to do is add that project to your git and commit.
See @gingerhelp’s article above for a walk-through.

All I did in this morning’s update was add support for the next version of Epicor 10.2.500

1 Like

Currently I just copy the customization code into a .cs file. Open it in VS code. Make all changes and commit to the repo. Then take that new code and paste it into the customization.

Why is this way better?

This hooks up directly to Epicor and downloads the customization code for you, creates a project lets you edit it and test (from visual studio) without having to import paste the stuff back in etc.

Watch the demo video (up top)

2 Likes

Beautiful feature. Thanks guys :slight_smile:

1 Like