【问题标题】:Visual Studio editor doesn't see my generated typesVisual Studio 编辑器看不到我生成的类型
【发布时间】:2014-08-14 09:59:00
【问题描述】:

使用 Cecil,我正在修改某个项目的程序集以包含一些额外的接口。这是由我的项目文件中的 AfterBuild 目标触发的,该目标调用自定义任务。这工作正常。生成的程序集将按应有的方式进行修改。

但是,我有另一个项目依赖于正在修改其程序集的项目。在 Visual Studio 2013 代码编辑器中工作时,Visual Studio 似乎根本无法识别我生成的类型,即使构建工作正常。

我试过直接引用生成的程序集而不是项目,但结果是一样的。不知何故,编辑器看不到构建所看到的内容。

这可能是什么原因造成的?如何让编辑器了解这些类型?

编辑:看起来问题不在于视觉工作室本身,而是更清晰。当我暂停 resharper 时,编辑器不再显示任何红色符号,也不会抱怨未解析的符号。

所以现在的问题是,如何让我更清晰地了解我生成的类型?

【问题讨论】:

  • 尝试Project->Clean或从bin文件夹中删除dll,然后重建,可能VS使用了复制到本地的旧版本dll
  • 很遗憾,清洁没有奏效。此外,假设问题是一个陈旧的 dll,构建也应该失败,但构建工作正常。只是编辑器没有看到我的类型。

标签: c# msbuild resharper mono.cecil compile-time-weaving


【解决方案1】:

如果在当前解决方案中加载了修改后的程序集项目,ReSharper 将使用源代码提供符号,因此它不会看到生成的接口。如果不包含项目,并且程序集只是一个简单的文件引用,那么 ReSharper 将从程序集的 IL + 元数据中提取符号,在这种情况下,生成的接口应该是可见的。

【讨论】:

    【解决方案2】:

    我刚刚遇到了同样的问题。以下是 Jetbrain 论坛中报告的问题:

    ReSharper IntelliSense ANTLR support

    在 cmets 中,您可以找到解决方案:Resharper 的扩展名为 External Code

    这对我有用。虽然在每次构建后 VS 都会询问是否重新加载在 VS 之外修改过的(生成的)源代码,这有点不方便。

    【讨论】:

      【解决方案3】:

      如果 Resharper 感到困惑,那么您可以尝试清除缓存:Resharper->Options...->Environment->General 并单击 Clear Caches 按钮。

      【讨论】:

      • 不幸的是,这并没有解决问题。 Resharper 似乎并没有感到困惑。而是在错误的地方寻找,即源代码而不是构建的程序集。
      猜你喜欢
      • 1970-01-01
      • 2017-05-07
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多