.NET 6 中已弃用 ReflectionOnlyLoad

Mar*_*isc 5 .net-6.0

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

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

Pan*_*vos 3

该方法现在并未被弃用,自 .NET Core 2.0 以来它从未起作用并抛出 PlatformNotSupportedException。正如这个问题所解释的

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

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

该方法的代码自 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); }
Run Code Online (Sandbox Code Playgroud)

  • 这并没有真正回答原来的问题。OP 正在寻找替代方案,而不是解释为什么不推荐使用此 API。 (3认同)