Runtime: COREHOST_TRACE deve registrar AssemblyLoadContext

Criado em 16 abr. 2019  ·  3Comentários  ·  Fonte: dotnet/runtime

Fundo
No Windows, estou integrando com uma ferramenta global .NET Core que, por sua vez, carrega assemblies por meio do parâmetro de linha de comando assembly="c:\source\bin\Debug\netstandard2.0\JohnZabroski.Database.dll" . JohnZabroski.Database.dll referencia transitivamente System.Data.SqlClient .

Problema
Com COREHOST_TRACE=1 , meu stderr atual fica assim:

!!! 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)

Achei o seguinte post do blog bastante intimidador ao tentar solucionar por que minha montagem não pôde ser encontrada ou localizada: https://mattwarren.org/2016/07/04/How-the-dotnet-CLI-tooling-runs-your -código/

Eu encontrei a ferramenta Assembly Fusion Log Viewer no .NET 4.6 para ser uma experiência de usuário MUITO mais fácil. Veja: https://github.com/dotnet/coreclr/issues/10379

Possivelmente relacionado
https://github.com/dotnet/coreclr/issues/15863 - os usuários acham a depuração do carregamento de assembly no Linux horrível (corrigido: https://github.com/dotnet/coreclr/pull/15831)

area-AssemblyLoader-coreclr enhancement

Comentários muito úteis

Isso é absolutamente necessário. Está em nossa lista de pendências, mas provavelmente não fará o .NET Core 3.0.

Todos 3 comentários

Começando com @jeffschwMSFT. Por favor, corrija area- se eu estiver errado.

Isso é absolutamente necessário. Está em nossa lista de pendências, mas provavelmente não fará o .NET Core 3.0.

Isso é absolutamente necessário. Está em nossa lista de pendências, mas provavelmente não fará o .NET Core 3.0.

Se é "absolutamente necessário", por que não estará no Core 3.0? O envio de recursos novos e sofisticados é ótimo, mas a força da Microsoft sempre esteve nas ferramentas para depurar esses recursos quando eles não funcionam. Solucionar falhas de associação de montagem é uma ferramenta crítica que deve ser incorporada ao Core desde o primeiro dia, e o fato de que não era e aparentemente ainda não é visto como uma prioridade é preocupante e, francamente, embaraçoso.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

GitAntoinee picture GitAntoinee  ·  3Comentários

noahfalk picture noahfalk  ·  3Comentários

matty-hall picture matty-hall  ·  3Comentários

aggieben picture aggieben  ·  3Comentários

omajid picture omajid  ·  3Comentários