.Net 反射查找 AssemblyDescriptionAttribute 报错

yinyuanqings 2012-02-02 10:13:16
问题是这样的,我现在需要对发布的Dll做版本控制,一些描述信息要通过 AssemblyDescriptionAttribute 属性写入到发布的程序集中。

C#代码:


Assembly ass = Assembly.LoadFrom(file); //加载程序集
Type descriptionType = typeof(AssemblyDescriptionAttribute);
Attribute attr= AssemblyDescriptionAttribute.GetCustomAttribute(ass, descriptionType); //报错!! 查询AssemblyDescriptionAttribute属性的时候出现异常
object[] des = ass.GetCustomAttributes(descriptionType, true);
foreach (object desc in des)
{
//DoWork here:
....
}



报出来的异常是 "未能加载文件或程序集“XXXX”或它的某一个依赖项"

我明白这是由于要查询的Dll文件引用了其它的DLL类,而被引用的类没有放在同一目录下造成的。

但是问题是,通过Visual Studio 自带的 Object Browser类,却可以在同样的情况下完整的查询出一个程序集的所有属性。 而且它也不需要知道被引用的其它DLL的路径信息,我猜应该是通过对PE32文件解析之类的方式去实现的。

我想问下在.net下如何实现类似的功能呢? 就是不通过 Assembly.Load那样的去完整的加载一个DLL然后去取得它的属性,而是把它当成一个孤立的文件,然后用类似解析文件格式的思路去解析它?
...全文
102 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
advisd 2012-02-02
  • 打赏
  • 举报
回复
这么亏啊啊。JS。
熙风 2012-02-02
  • 打赏
  • 举报
回复
接分。。。。。。。。
熙风 2012-02-02
  • 打赏
  • 举报
回复
.Net FrameWork 版本问题?
yinyuanqings 2012-02-02
  • 打赏
  • 举报
回复
问题解决了,不要用Assembly.load,应该用 System.Diagnostics.FileVersionInfo

110,525

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧