Runtime: COREHOST_TRACEはAssemblyLoadContextをログに記録する必要があります

作成日 2019年04月16日  ·  3コメント  ·  ソース: dotnet/runtime

バックグラウンド
Windowsでは、コマンドラインパラメーターassembly="c:\source\bin\Debug\netstandard2.0\JohnZabroski.Database.dll"を介してアセンブリをロードする.NETCoreグローバルツールと統合しています。 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

.NET4.6のAssemblyFusionLog Viewerツールは、非常に簡単なユーザーエクスペリエンスであることがわかりました。 参照: https ://github.com/dotnet/coreclr/issues/10379

おそらく関連している
https://github.com/dotnet/coreclr/issues/15863-ユーザーは、Linuxでのアセンブリの読み込みのデバッグがひどいことに気づきます(修正済み:https://github.com/dotnet/coreclr/pull/15831)

area-AssemblyLoader-coreclr enhancement

最も参考になるコメント

これは絶対に必要です。 これはバックログにありますが、.NETCore3.0になる可能性は低いです。

全てのコメント3件

@jeffschwMSFTで始まります。 私が間違っている場合はarea-を修正してください。

これは絶対に必要です。 これはバックログにありますが、.NETCore3.0になる可能性は低いです。

これは絶対に必要です。 これはバックログにありますが、.NETCore3.0になる可能性は低いです。

「絶対に必要」なのなら、なぜCore 3.0に含まれないのでしょうか? 新しい機能を提供することは素晴らしいことですが、Microsoftの強みは、機能しないときにそれらの機能をデバッグするためのツールに常にあります。 アセンブリバインドの失敗のトラブルシューティングは、初日からCoreに組み込まれるべき重要なツールであり、それが優先事項と見なされていなかったという事実は、率直に言って、恥ずかしいことです。

このページは役に立ちましたか?
0 / 5 - 0 評価