是否可以使用带有 Evidence 参数的 Assembly.LoadFrom 重载来确保程序集是强命名的?我希望能够指定程序集名称、区域性、版本和公钥 token 。如果任何此信息不匹配,程序集将无法加载。
最佳答案
您可以在加载程序集后获取它的公钥 - 如果它加载成功并且有一个公钥,那么它就是强名称的:
Assembly assembly = Assembly.LoadFrom (...);
byte[] pk = assembly.GetName().GetPublicKey();
更好的是,在加载它之前检查程序集的公钥和版本信息:
AssemblyName an = AssemblyName.GetAssemblyName ("myfile.exe");
byte[] publicKey = an.GetPublicKey();
CultureInfo culture = an.CultureInfo;
Version version = an.Version;
如果 GetPublicKey() 返回非空值,然后程序集成功加载,则它具有有效的强名称。
关于c# - Assembly.LoadFrom - 使用证据重载来验证强名称签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/809934/