В зависимости от того, как загружается сборка, следующий код может выдать исключение: «Не удалось загрузить файл или сборку System.Core 2.0.5.0» *
foreach (var type in valueTupleAssembly.GetTypes())
{
var attributes = type.GetCustomAttributes(typeof(string), false);
}
В результате Load или LoadFile возникает исключение
var valueTupleAssembly = Assembly.LoadFile(path);
var valueTupleAssembly = Assembly.Load(File.ReadAllBytes(path));
LoadFrom работает отлично
var valueTupleAssembly = Assembly.LoadFrom(path);
Я понимаю, что System.ValueTuple может быть перенаправляемым, и его зависимость от System.Core должна разрешаться во все, что выполняется.
Я не понимаю (1), почему рефлексия по TupleExtensions разрешает сборку триггеров для System.Core 2.0.5 (другие типы в той же сборке нет) и (2) почему LoadFrom не имеет такой же проблемы,
https://blogs.msdn.microsoft.com/suzcook/2003/09/19/loadfile-vs-loadfrom/ утверждает, что «LoadFrom () проходит через Fusion и может быть перенаправлен на другую сборку по другому пути, но с тем же идентификатором, если он уже загружен в контексте LoadFrom».Поэтому я предполагаю, что (2) Fusion перенаправляет system.core 2.0.5 на доступную версию?