Assembly.LoadFrom - 使用证据重载来验证强名称签名

use*_*309 1 .net c# assemblies

是否可以使用带有 Evidence 参数的 Assembly.LoadFrom 重载来确保程序集具有强命名?我希望能够指定程序集名称、区域性、版本和公钥令牌。如果任何此信息不匹配,则程序集将无法加载。

Joe*_*ari 5

您可以在加载程序集后获取其公钥 - 如果它加载成功并且具有公钥,则它是强名称的:

Assembly assembly = Assembly.LoadFrom (...);
byte[] pk = assembly.GetName().GetPublicKey();
Run Code Online (Sandbox Code Playgroud)

更好的是,在加载之前检查程序集的公钥和版本信息:

AssemblyName an = AssemblyName.GetAssemblyName ("myfile.exe");
byte[] publicKey = an.GetPublicKey();
CultureInfo culture = an.CultureInfo;
Version version = an.Version;
Run Code Online (Sandbox Code Playgroud)

如果 GetPublicKey() 返回非空值,然后程序集成功加载,则它具有有效的强名称。