Для контекста позвольте мне сначала объяснить архитектура, на которой я наблюдал различия в загрузке сборки. Это своего рода система плагинов для приложений, где по сути у нас есть «эталонное» консольное приложение, ссылающееся на все остальные библиотеки netstandard2.0 из решения. Сборка «эталонного» приложения публикует двоичные файлы в папке, определенной для каждой целевой платформы (в нашем случае это net7.0 и net461). Другие приложения затем используют эти папки для динамической загрузки сборок по мере необходимости.
Мне удалось создать здесь простой репродукцию, имитирующую следующую архитектуру:

Код: Выделить всё
TestContracts
Код: Выделить всё
TestLibrary
Код: Выделить всё
TestReferenceApp
Код: Выделить всё
TestApp
Код: Выделить всё
System.IO.FileLoadException
HResult=0x80131621
Message=Could not load file or assembly 'System.Text.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Could not find or load a specific file. (0x80131621)
Source=Elastic.Clients.Elasticsearch
StackTrace:
at Elastic.Clients.Elasticsearch.ElasticsearchClientSettingsBase`1..ctor(NodePool nodePool, IRequestInvoker requestInvoker, SourceSerializerFactory sourceSerializerFactory, IPropertyMappingProvider propertyMappingProvider)
at Elastic.Clients.Elasticsearch.ElasticsearchClientSettings..ctor(NodePool nodePool, IRequestInvoker requestInvoker, SourceSerializerFactory sourceSerializer, IPropertyMappingProvider propertyMappingProvider)
at Elastic.Clients.Elasticsearch.ElasticsearchClientSettings..ctor(NodePool nodePool, IRequestInvoker requestInvoker, SourceSerializerFactory sourceSerializer)
at Elastic.Clients.Elasticsearch.ElasticsearchClientSettings..ctor(NodePool nodePool)
at Elastic.Clients.Elasticsearch.ElasticsearchClientSettings..ctor(Uri uri)
at TestLibrary.Tracer.Trace(String message) in D:\_data\GithubRepos\PaloMraz\AssemblyDependencyLoadingApp\TestLibrary\Tracer.cs:line 12
at Program.$(String[] args) in D:\_data\GithubRepos\PaloMraz\AssemblyDependencyLoadingApp\TestApp\Program.cs:line 21
This exception was originally thrown at this call stack:
System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyPath(string)
System.Reflection.Assembly.LoadFrom(string)
System.Reflection.Assembly.LoadFromResolveHandler(object, System.ResolveEventArgs)
System.Runtime.Loader.AssemblyLoadContext.InvokeResolveEvent(System.ResolveEventHandler, System.Reflection.RuntimeAssembly, string)
Inner Exception 1:
FileLoadException: Could not load file or assembly 'System.Text.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
Может ли кто-нибудь пролить свет на то, почему поведение отличается?
Подробнее здесь: https://stackoverflow.com/questions/792 ... lies-under