【发布时间】:2013-01-04 10:02:38
【问题描述】:
我想在 publickeytoken == null 时从 dll 中找到公共用户定义函数
OpenFileDialog obj = new OpenFileDialog();
if (obj.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Assembly ass = Assembly.LoadFrom(obj.FileName);
// Here its getting Exception because Publickeytoken == null;
Assembly a = Assembly.LoadWithPartialName(ass.FullName);
Type[] types = a.GetTypes();
foreach (Type type in types)
{
if (!type.IsPublic)
{
continue;
}
MemberInfo[] members = type.GetMembers(BindingFlags.Public
| BindingFlags.Instance
| BindingFlags.InvokeMethod);
foreach (MemberInfo member in members)
{
Console.WriteLine(type.Name + "." + member.Name);
}
}
}
如何解决这个问题
即使我试过这个来查找它会重新运行的 publictokenkey 0 字节
byte[] b = Assembly.GetExecutingAssembly().GetName().GetPublicKeyToken();
【问题讨论】:
-
你的例外是什么?此外,LoadWithPartialName 已过时,您应该改用 Load。
-
为什么不直接使用汇编对象“ass”呢?因为你刚刚从 dll 加载它?
-
好的,告诉我一个从 Dll 中查找公共方法的解决方案
标签: c# dll assemblies publickeytoken