【问题标题】:ReflectionOnlyLoad deprecated in .NET 6.NET 6 中不推荐使用 ReflectionOnlyLoad
【发布时间】:2021-09-07 19:21:03
【问题描述】:

Assembly.ReflectionOnlyLoad 在 .NET 6 中已被弃用。有替代方案吗?

我想要实现的是在应用程序路径中找到具有特定自定义程序集属性的程序集并加载它们。我可以搜索所有程序集并加载它们以检查属性,但我不希望将不必要的程序集加载到应用程序域中。

【问题讨论】:

标签: .net-6.0


【解决方案1】:

该方法现在没有被弃用,它从 .NET Core 2.0 开始就没有工作过并且抛出了 PlatformNotSupportedException。作为this issue explains

CoreCLR 不支持仅反射加载。 (FEATURE_REFLECTION_ONLY_LOAD)

Assembly.ReflectionOnlyLoad 正在执行完全加载,而不是仅反射加载。他们应该改为抛出 PNSE。

方法的代码throws since the very first commit in 2018。当前的 CoreCLR Github 存储库并没有追溯到 3 年前重组的 .NET Github 存储库:

public static Assembly ReflectionOnlyLoad(byte[] rawAssembly) { throw new PlatformNotSupportedException(SR.PlatformNotSupported_ReflectionOnly); }
public static Assembly ReflectionOnlyLoad(string assemblyString) { throw new PlatformNotSupportedException(SR.PlatformNotSupported_ReflectionOnly); }
public static Assembly ReflectionOnlyLoadFrom(string assemblyFile) { throw new PlatformNotSupportedException(SR.PlatformNotSupported_ReflectionOnly); }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 2012-11-14
    • 2022-01-20
    相关资源
    最近更新 更多