02.04.2020, 15:55 | #1 |
Участник
|
VS 2019 - Remote Debugger и отладка плагинов от кастомных событий через PluginProfile - проблемы.
Доброго времени суток всем.
Мы недавно обновили инструменты разработки, и столкнулись с рядом проблем при отладке плагинов Dynamics 360(9) (onPrim). 1. Новый Remote Debugger от 2019 visual studio - намертво завешивает CRM сразу после подключения к w3wp.exe процессу - даже не доходя до точки останова. С более ранними версиями такого не происходило. Поскольку команда у нас маленькая, такая отладка на тесте у нас применялась без особого дискомфорта для программистов. На другой копии CRM отладка через 2019 дебаггер сначала запустилась, но при повторных попытках зависание наступило и там. Перезагрузки сервера, отладчика не помогают. 2. В свете вышеописанного было принято решение перейти на отладку с помощью PluginProfile, однако и здесь нас постигла неудача. Львиная доля плагинов в нашей системе исполняются по кастомным Action, которые срабатывают по скрипту с вызовом этого кастомного процесса. А в ответ на вызов при использовании PluginProfile возвращается не привычный эксепшен: и предложение загрузить файл для отладки, а Alert() или Notification - с потрохами файла см скрин: Очень хочется разобраться с обеими проблемами, возможно кто то что то подскажет? Пока будем трейсингом логов отлаживать.... Спасибо за внимание. Последний раз редактировалось ximik33rus; 02.04.2020 в 16:01. |
|
02.04.2020, 16:23 | #2 |
Чайный пьяница
|
Если у вас доступен профайлинг в сущность, то это выход для вас. Посмотрите как это делается тут - https://www.youtube.com/watch?v=Ife_rHq-wSo
Иначе - трейсинг.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
03.04.2020, 08:37 | #3 |
Участник
|
Доступен, правда если делать по видео при Start Exicution возникает ошибка...
X++: Unhandled Exception: System.IO.FileNotFoundException: "Microsoft.Xrm.Sdk, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" . .
System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type)
System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)
System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg)
System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent)
System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly assembly, RuntimeType caType)
PluginProfiler.Library.ProfilerUtility.GetProxyTypesAssembly(Assembly pluginAssembly)
PluginProfiler.Library.DeserializedProfilerReport..ctor(String serializedReport, Assembly pluginAssembly)
PluginProfiler.Library.ProfilerUtility.DeserializeProfilerReportInternal(String assemblyFilePath, String serializedReport)
PluginProfiler.Library.AppDomainProxy.InitializeProxy(String assemblyFilePath, String typeName, String logFilePath, String compressedreport)
PluginProfiler.Library.AppDomainProxy.InitializeProxy(String assemblyFilePath, String typeName, String logFilePath, String compressedreport)
PluginProfiler.Library.AppDomainProxy.CreateProxy(Type type, AppDomain domain, OperationConfiguration configuration, IList`1 trustedAssemblies, IList`1 partlyTrustedAssemblies)
PluginProfiler.Library.ProfilerExecutionEngine.Execute(ProfilerExecutionConfiguration configuration)
PluginProfiler.Library.ProfilerExecutionUtility.Execute(PluginPermissions permissions, ProfilerExecutionConfiguration configuration)
PluginProfiler.Library.ProfilerExecutionUtility.Execute(PluginPermissions permissions, OperationConfiguration operation, ProfilerReportingConfiguration reporting, CrmServiceClient administratorProxy, ITracingService tracing)
Microsoft.Crm.Tools.DebugPlugin.DebugPluginViewModel.btnExecutionClicked() При этом плагин рабочий, правда там задействуются ILМerge и SPKL, а в остальном плагин простейший. А ругается вообще на основную библиотеку Xrm.. UPD: Хотя я смотрю он тут 9.0.0.0 а PRT я использовал 8.2, попробую на 9 сейчас... Последний раз редактировалось ximik33rus; 03.04.2020 в 09:31. |
|
03.04.2020, 10:18 | #4 |
Участник
|
X++: Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: "Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10" . . Detail: <OrganizationServiceFault xmlns="http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <ActivityId>00000000-0000-0000-0000-000000000000</ActivityId> <ErrorCode>-2147220970</ErrorCode> <ErrorDetails xmlns:a="http://schemas.datacontract.org/2004/07/System.Collections.Generic"> <KeyValuePairOfstringanyType> <a:key>CallStack</a:key> <a:value i:type="b:string" xmlns:b="http://www.w3.org/2001/XMLSchema"> pl_sendGoodfin.BasePL.Execute(IServiceProvider serviceProvider) PluginProfiler.Library.PluginAppDomainProxy.ExecuteCore(Stopwatch watch, ProfilerExecutionReport report, Object instance, Object executionParameter) PluginProfiler.Library.AppDomainProxy.Execute(ProfilerExecutionConfiguration configuration, ProfilerExecutionReport report)</a:value> </KeyValuePairOfstringanyType> </ErrorDetails> <HelpLink i:nil="true" /> <Message> "Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10" . .</Message> <Timestamp>2020-04-03T07:16:18.7873328Z</Timestamp> <ExceptionRetriable>false</ExceptionRetriable> <ExceptionSource i:nil="true" /> <InnerFault i:nil="true" /> <OriginalException i:nil="true" /> <TraceText i:nil="true" /> </OrganizationServiceFault> |
|
03.04.2020, 16:20 | #5 |
Чайный пьяница
|
В вы эти библиотеки тоже через ILMerge подцепляете или же каким то другим образом? Я пользовался этим же подходом и все работало правильно.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 03.04.2020 в 16:26. |
|
06.04.2020, 09:49 | #6 |
Участник
|
да, через ILMerge, сам плагин работает корректно. Версия CRM и PluginRegistration совпадают. Но вот при попытке старта Exception - возникает та ошибка.
|
|
06.04.2020, 15:30 | #7 |
Чайный пьяница
|
Скорее всего виной не те библиотеки, которые были добавлены через ILMerge, а те, которые используются этими библиотеками.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
07.04.2020, 08:17 | #8 |
Участник
|
Не исключено, а про зависание CRM при подключении к удаленному отладчику еще до точки останова и выполнения плагина ничего не знаете?
Проблема плавающая, то есть то нет.. |
|
07.04.2020, 14:50 | #9 |
Чайный пьяница
|
Не смогу с этим помочь.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
08.04.2020, 08:23 | #10 |
Участник
|
Ладно, будем разбираться, если найдется решение, отпишусь
Спасибо за ответы |
|
|
|