При попытке использования в коде (AX2012) в меру “сложных*» библиотек, может возникнуть ситуация, когда библиотека “не видна**» компилятором
*- например библиотека Microsoft.TeamFoundation.Build2.WebApi.dll (эта библиотека в свою очередь ссылается ещё на ряд других библиотек)
**-Если ввести полное имя namespace’а, то комплятор выдаёт ошибку.
В таком случае один из эффективных способов поиска недостающих библиотек, это использование Assembly Binding Log Viewer (https://docs.microsoft.com/en-us/dotnet/framework/tools/fuslogvw-exe-assembly-binding-log-viewer) (он же Fuslogvw.exe)
Для того чтобы использовать fuslogvw.exe:
- Установить .NET SDK4 (возможно есть другой способ получить исполнимый файл fuslogvw.exe, но в случае установки .NET SDK4 Вы наверняка его получите). Непосредственно .NET SDK4 я нашёл тут https://www.microsoft.com/en-us/download/confirmation.aspx?id=8279 Microsoft Windows SDK for Windows 7 and .NET Framework 4
- По пути (C:Program Files (x86)Microsoft SDKsWindowsv8.1AbinNETFX 4.5.1 Tools) от админа запустить fuslogvw.exe. Как только Вы запустите fuslogvw.exe откроется окно в которо необходимо сделать некоторые настройки, более детально про настройки написано здесь (Using Fuslogvw.exe to Find Missing Referenced DLLs in Microsoft Dynamics AX 2012 (https://www.loganconsulting.com/blog/using-fuslogvw-exe-to-find-missing-referenced-dlls-in-microsoft-dynamics-ax-2012/)). Примечание: искомая информация появится как только клиент Аксапты будет презапущен и в окне fuslogvw вы нажмёте кнопку Refresh .
- Кроме “ругани» на отсутствующие dll может ещё ругаться на версии dll, иными словами – если вы используете используете Microsoft.TeamFoundation.Build2.WebApi.dll (version 15.0.0.0), а система ожидает такую же dll только (version 14.0.0.0), то необходимо сделать следующее: открыть в текстовом редакторе файл C:Program Files (x86)Microsoft Dynamics AX60ClientBinAx32.exe.config.
Оригинальный текст в данном файле будет выглядеть вот так:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0.30319" /> <requiredRuntime version="v4.0.30319" safemode="true"/> </startup> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="EditorComponents"/> <dependentAssembly> <assemblyIdentity name="ste-net" publicKeyToken="5542884f620dbde5" culture="neutral" /> <bindingRedirect oldVersion="1.0.1.59-1.0.1.95" newVersion="1.0.1.95"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration> |
Необходимо добавить недостающие конфигурации, т.е. как видно из кода ниже, были добавлены блоки с обрамляющими тегами , значение для publicKeyToken возьмите из логов fuslogvw
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0.30319" /> <requiredRuntime version="v4.0.30319" safemode="true"/> </startup> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="EditorComponents"/> <dependentAssembly> <assemblyIdentity name="ste-net" publicKeyToken="5542884f620dbde5" culture="neutral" /> <bindingRedirect oldVersion="1.0.1.59-1.0.1.95" newVersion="1.0.1.95"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.VisualStudio.Services.Common" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-15.0.0.0" newVersion="15.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.TeamFoundation.Common" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-15.0.0.0" newVersion="15.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.VisualStudio.Services.WebApi" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-15.0.0.0" newVersion="15.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration> |
Несколько дополнительных ссылок:
https://www.hanselman.com/blog/BackToBasicsUsingFusionLogViewerToDebugObscureLoaderErrors.aspx
https://stackoverflow.com/questions/1012252/using-fuslogvw-exe-on-a-machine-with-no-visual-studio-installed
https://developers.de/blogs/damir_dobric/archive/2014/08/21/where-is-fuslogvw-exe-fusion-log.aspx
https://stackoverflow.com/questions/1674279/cant-locate-fuslogvw-exe-on-my-machine