バックグラウンド
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)
@jeffschwMSFTで始まります。 私が間違っている場合はarea-
を修正してください。
これは絶対に必要です。 これはバックログにありますが、.NETCore3.0になる可能性は低いです。
これは絶対に必要です。 これはバックログにありますが、.NETCore3.0になる可能性は低いです。
「絶対に必要」なのなら、なぜCore 3.0に含まれないのでしょうか? 新しい機能を提供することは素晴らしいことですが、Microsoftの強みは、機能しないときにそれらの機能をデバッグするためのツールに常にあります。 アセンブリバインドの失敗のトラブルシューティングは、初日からCoreに組み込まれるべき重要なツールであり、それが優先事項と見なされていなかったという事実は、率直に言って、恥ずかしいことです。
最も参考になるコメント
これは絶対に必要です。 これはバックログにありますが、.NETCore3.0になる可能性は低いです。