通过类名称或键入C#获取程序集或dll

用户2713341

我试图找到如何按需要使用的类型(通过C#)查找dll或程序集。

我想制作一种可以输入诸如“ #include System.IO;”之类的方法的方法。当它在此类文件的文本中看到类型为“路径”的变量时。因此,通常我想获取计算机上的所有程序集。我知道有一些General Assembly Cache,但是我真的不了解在这种情况下如何使用它。据我了解,Assemble的GetType方法可以工作,但是我找不到所有可以使用此方法的程序集。

使用AppDomain的方法是无用的,因为使用此解决方案中仅包括的程序集如何将具有所有引用的程序集以递归方式加载到AppDomain?按类名获取程序集

更具体地说,它是Visual Studio方法Resolve http://i.stack.imgur.com/xNns9.png的一些自定义实现

据我了解,我应该找到由VS Tools-> Customize-> Commands-> Click Context菜单调用的方法,然后选择Editor Context Menus | Code Window | Resolve。

抱歉,这个简单的问题对我来说很重要。

Moby磁盘

是一个工具,可扫描系统上的所有程序集并搜索这些程序集中的所有类,以查找某些类型。该工具仅搜索.NET SDK目录,而不搜索GAC。如果您修改程序以搜索%systemroot%\ assembly文件夹,那么您也应该获得GAC中的类。

代码很长,无法粘贴到答案中,但是总体思路是这样的:

  1. 查找所有.NET DLL文件
  2. 在每个DLL上调用Assembly.LoadFrom()或Assembly.ReflectionOnlyLoad()
  3. 调用GetExportedTypes()以获取类型列表
  4. 遍历那里找到您感兴趣的课程。

这是一个相关的代码摘录,可能会有所帮助。它将在名称空间“ System.IO”中查找类“ File”,而无需事先知道可能存在的DLL。

string[] assemblyPaths = System.IO.Directory.GetFiles(@"C:\Windows\Microsoft.NET\", "*.dll", System.IO.SearchOption.AllDirectories);
foreach (string assemblyPath in assemblyPaths)
{
   Assembly assembly = null;
   assembly = Assembly.LoadFrom(assemblyPath);

   // Go through all the types in it
   foreach (Type t in assembly.GetExportedTypes())
   {
       // Publically creatable exception?
       if (t.IsPublic && t.Name == "File" && t.Namespace == "System.IO")
       {
           // The type "t" is the type you are looking for
       }
   }
}

链接的项目更加智能,但并不过分简化。但这是总的想法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过网络发送C#程序集/ DLL?

来自分类Dev

C#按名称从dll获取类中的枚举

来自分类Dev

在C#中获取DLL程序集的静态文件

来自分类Dev

C#获取启动项目的程序集名称

来自分类Dev

[JAVA]如何获取通用类的键入名称

来自分类Dev

C# 获取类声明名称

来自分类Dev

c# 通过字符串名称获取和设置静态嵌套类中的变量

来自分类Dev

使用C#获取整个程序集

来自分类Dev

如何通过代码(C#,ASP.net)获取应用程序池名称

来自分类Dev

如何从IIS通过C#通过网站名称获取端口?

来自分类Dev

如何从IIS通过C#通过网站名称获取端口?

来自分类Dev

如何从C#项目文件中获取DLL或EXE名称?

来自分类Dev

从.dll执行程序程序集获取

来自分类Dev

从.dll执行程序程序集获取

来自分类Dev

C#通过名称触发类中的函数

来自分类Dev

C# 从类中动态创建程序集

来自分类Dev

带参数的C#类键入

来自分类Dev

如何获取初始化对象的类的名称C#

来自分类Dev

如何获取初始化对象的类的名称C#

来自分类Dev

从 C# 中的类中获取所有属性名称

来自分类Dev

如何通过部分名称获取文件c#

来自分类Dev

C# 如何获取系统程序集的路径

来自分类Dev

C#获取基于命名空间的程序集

来自分类Dev

如何通过程序集获取项目中的所有名称空间?

来自分类Dev

Mercurial通过更改集获取分支名称

来自分类Dev

Mercurial通过更改集获取分支名称

来自分类Dev

C#在程序集中获取项目名称

来自分类Dev

使用C#通过div中的内容获取div类

来自分类Dev

如何动态获取程序集名称