Задний план
В Windows я интегрируюсь с глобальным инструментом .NET Core, который, в свою очередь, загружает сборки с помощью параметра командной строки assembly="c:\source\bin\Debug\netstandard2.0\JohnZabroski.Database.dll"
. JohnZabroski.Database.dll
транзитивно ссылается System.Data.SqlClient
.
Проблема
С COREHOST_TRACE=1
мой текущий stderr выглядит так:
!!! Could not load file or assembly 'System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Could not find or load a specific file. (Exception from HRESULT: 0x80131621)
!!! +- Could not load file or assembly 'System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileLoadException: Could not load file or assembly 'System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Could not find or load a specific file. (Exception from HRESULT: 0x80131621) ---> System.IO.FileLoadException: Could not load file or assembly 'System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
at System.Runtime.Loader.AssemblyLoadContext.LoadFromPath(IntPtr ptrNativeAssemblyLoadContext, String ilPath, String niPath, ObjectHandleOnStack retAssembly)
at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyPath(String assemblyPath)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at System.Reflection.Assembly.LoadFromResolveHandler(Object sender, ResolveEventArgs args)
at System.AppDomain.InvokeResolveEvent(ResolveEventHandler eventHandler, RuntimeAssembly assembly, String name)
Я нашел следующий пост в блоге довольно пугающим при попытке устранить неполадки, ПОЧЕМУ мою сборку не удалось найти или найти: https://mattwarren.org/2016/07/04/How-the-dotnet-CLI-tooling-runs-your .
Я обнаружил, что инструмент Assembly Fusion Log Viewer в .NET 4.6 НАМНОГО проще для пользователя. См.: https://github.com/dotnet/coreclr/issues/10379 .
Возможно, связано
https://github.com/dotnet/coreclr/issues/15863 — пользователи считают отладочную загрузку сборки в Linux ужасной (исправлено: https://github.com/dotnet/coreclr/pull/15831)
Начиная с @jeffschwMSFT. Пожалуйста, исправьте area-
, если я ошибаюсь.
Это абсолютно необходимо. Он находится в нашем списке невыполненных работ, но вряд ли он станет частью .NET Core 3.0.
Это абсолютно необходимо. Он находится в нашем списке невыполненных работ, но вряд ли он станет частью .NET Core 3.0.
Если он "абсолютно нужен", то почему его не будет в Core 3.0? Поставлять новые и модные функции — это здорово, но сила Microsoft всегда заключалась в инструментах для отладки этих функций, когда они не работают. Устранение неполадок с привязкой сборки — важнейший инструмент, который должен быть встроен в Core с самого первого дня, и тот факт, что он не был и, по-видимому, до сих пор не рассматривается в качестве приоритета, одновременно беспокоит и, откровенно говоря, смущает.
Самый полезный комментарий
Это абсолютно необходимо. Он находится в нашем списке невыполненных работ, но вряд ли он станет частью .NET Core 3.0.