【问题标题】:How can I access the currently opened project's types(classes) from a Visual Studio add-in?如何从 Visual Studio 加载项访问当前打开的项目的类型(类)?
【发布时间】:2010-02-13 20:19:16
【问题描述】:

如何从 Visual Studio 加载项访问当前打开的项目的类型(类)(能够在加载项中创建这些类的实例)?这可以通过反射实现吗?或者可能动态地包含项目的程序集作为参考?

最后我想要的是一个可以从项目中访问的所有类型的列表,同时考虑到在项目本身中声明的引用程序集和类型。在没有实际查找 Type 实例的方法的情况下,可以使用类型名称列表 - 这样,如果项目尚未构建且其中的类型尚未实现,我不会遇到问题。

我使用 Visual Studio 2008,我喜欢的语言是 C#。

编辑:我想我可以解析每个文件并找出类声明,但我也想考虑引用程序集中的类型。可以通过搜索“使用”语句来寻找引用,但这会使动态导入的 dll 类型成为一个悬而未决的问题。因此,考虑到要考虑的不同情况的分支,我想知道是否没有更简单的方法。

【问题讨论】:

  • 这听起来不太好。项目是源代码文件的集合。在项目编译无误之前,没有具体的类型实现。
  • 我假设我已经有一个从项目生成的已编译和现有程序集。在它实际存在之前不依赖它,如果它存在,是否有办法搜索?

标签: c# visual-studio-2008 vsx visual-studio-addins visual-studio-project


【解决方案1】:

当然,只需从输出目录中获取程序集并加载它。我现在没有从事任何 EnvDTE 项目,所以我不能只是弹出并敲出一个样本,但这就是您能够枚举/实例化类的方式。

但是.... nobugz 暗示有什么味道.. 你想做什么?可能有一个“更好”的方法来做到这一点。

【讨论】:

    【解决方案2】:

    Visual Studio 代码模型使自动化客户端能够发现项目中的代码定义并修改这些代码元素。

    欲了解更多信息,请访问:

    http://msdn.microsoft.com/en-us/library/ms228763(VS.80).aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 2010-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多