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

标签 c# .net assemblies

是否可以使用带有 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/

相关文章:

.net - Winforms:在已经打开的模态对话框中打开第二个模态对话框

assemblies - 如何为程序集分配强名称?

wpf - 同一程序集中 WPF 和 Silverlight 的资源

c# - iText7 以错误的顺序读出行

c# - 如何取消或配置 WebBrowser 元素上的当前导航

.net - 日期/时间加法/减法和变量是否有标准语法?

c# - 从内存而不是磁盘向 CompilerParameters ReferencedAssemblies 提供程序集?

c# - 如何访问面板中的控件在 C# 中

c# - 如何通过其构造函数获取类中调用的函数的名称

c# - 如何从字符串的开头和结尾删除所有非字母数字和数字字符?