相关疑难解决方法(0)

如何循环当前加载的程序集?

我的ASP.NET应用程序中有一个"诊断"页面,它可以验证数据库连接,显示当前的appSettings和ConnectionStrings等.此页面的一部分显示了整个过程中使用的重要类型的程序集版本,但我无法弄清楚如何有效地显示所有已加载程序集的版本.

在.NET应用程序中找出所有当前引用和/或加载的程序集的最有效方法是什么?

注意:我对基于文件的方法不感兴趣,比如在特定目录中迭代*.dll.我对应用程序实际使用的内容感兴趣.

.net assemblies

118
推荐指数
2
解决办法
3万
查看次数

获取Type中使用的程序集路径

我需要一个方法,它接受一个Type并返回该类型中使用的所有程序集的路径.我写了这个:

public static IEnumerable<string> GetReferencesAssembliesPaths(this Type type)
{   
 yield return type.Assembly.Location;

 foreach (AssemblyName assemblyName in type.Assembly.GetReferencedAssemblies())
 {
  yield return Assembly.Load(assemblyName).Location;
 }
}
Run Code Online (Sandbox Code Playgroud)

通常这种方法可以完成这项工作,但也有一些缺点:

  • 我没有找到如何从类型本身获取引用的程序集/类型,所以我使用了type.Assembly.GetReferencedAssemblies()并获得了整个程序集的引用,而不仅仅是那些与类型相关的引用.

  • type.Assembly.GetReferencedAssemblies()返回AssemblyName,没有location/path/filepath属性.要获取location属性,我首先使用Assembly.Load()然后使用location属性.我不希望加载程序集获取它们的路径,因为它们没有必要使用,并且因为Assembly.Load()可能因FileNotFoundException或BadImageFormatException而失败.

.net c# reflection assemblies reference

7
推荐指数
1
解决办法
4784
查看次数

标签 统计

.net ×2

assemblies ×2

c# ×1

reference ×1

reflection ×1