从外部程序集中检索程序集版本的最有效方法需要建议

gre*_*ade 1 .net c# reflection

我需要迭代一个程序集列表并确定它们的版本号.我之前使用过System.Reflection.Assembly.GetExecutingAssembly().GetName().版本,但在这种情况下我正在使用尚未加载的程序集.我知道我可以使用System.Reflection.Assembly.ReflectionOnlyLoadFrom("assembly.dll"),但我读过这可以吃内存,除非我在自己的应用程序域中加载程序集然后卸载它们.这是ReflectionOnlyLoadFrom()还是只是LoadFrom()?

或者,是否有一种方法可以在不加载程序集的情况下获取版本信息?

Meh*_*ras 6

看看System.Reflection.AssemblyName.你可以做

AssemblyName.GetAssemblyName("foo.dll").Version
Run Code Online (Sandbox Code Playgroud)

返回System.Version对象,您可以在其中获取主要,次要,次要修订和修订信息.根据关于GetAssemblyName方法的Msdn 文章:

如果文件包含程序集清单,这将起作用.此方法导致文件打开和关闭,但程序集未添加到此域.