Если ваша библиотека ссылается на другую dll, GetTypes завершится ошибкой, когда достигнет типа, который использует внешний тип. В отличие от обычной загрузки сборки, загрузка ReflectionOnly Assembly не разрешает зависимости. Вы можете либо подписаться на AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve и загружать зависимости по мере необходимости, либо вы можете предварительно загрузить их.
Это код, который я использую для этого:
var assembly = Assembly.ReflectionOnlyLoadFrom(assemblyPath);
foreach (var assemblyName in assembly.GetReferencedAssemblies()) {
try {
Assembly.ReflectionOnlyLoad(assemblyName.FullName);
} catch {
Assembly.ReflectionOnlyLoadFrom(Path.Combine(Path.GetDirectoryName(assemblyPath), assemblyName.Name + ".dll"));
}
}
Это попытается загрузить все зависимости загруженной сборки только для отражения сначала по полному имени, а затем по пути (при условии, что зависимость находится в том же каталоге, что и загруженная сборка).