从 .NET Framework 应用程序检查 .NET 5 程序集的 PublicKeyToken

Checking PublicKeyToken of a .NET 5 assembly from .NET Framework application

在我们的 .NET Framework 应用程序中,我们有一个插件机制,它在执行 PublicKeyToken 之前检查它以验证它是否可信。为此,我们临时将插件加载为程序集以获取 PublicKeyToken。

因为我们想迁移到 .NET 5,所以我们编译了插件,但是现在我们不能再检查 PublicKeyToken,因为我们不能在 .NET Framework 进程中加载​​ .NET 5 程序集. 有什么方法可以在不加载程序集的情况下检查 PublicKeyToken 吗?

可以通过 P/Invoking mscoree.dll 中的函数检查 PublicKeyToken:

    [DllImport("mscoree.dll", CharSet = CharSet.Unicode)]
    static extern bool StrongNameTokenFromAssembly(string wszFilePath, out IntPtr ppbStrongNameToken, ref int pcbStrongNameToken);