【问题标题】:Any way to make Intellisense work, when opening a cs file that's not part of the project?打开不属于项目的 cs 文件时,有什么方法可以使 Intellisense 工作?
【发布时间】:2009-01-30 11:52:23
【问题描述】:

理想情况下,我们需要了解 Microsoft 如何处理 XAML 生成的代码(那些 *.g.cs 文件)。如果您转到后面的 XAML 代码,即使 *.g.cs 文件不是项目的一部分,intellisense 也可以工作!


上下文:

在自定义 VS 包中,我们需要有一些逻辑来在 VS IDE 中打开一个 CS 文件(不使其成为项目的一部分),以允许用户对其进行编辑。

我们正在使用 IVSRunningDocumentTable 将文档连接到 Running 文档表并接收保存、关闭等事件。效果很好。

现在的问题是,当打开文档时,Intellisense 无法工作,原因很简单,打开的文档不是项目的一部分(遗憾的是,我们不能这样做,我们不能做到后面的代码)。

【问题讨论】:

  • 我确信有办法做到这一点,可能需要一些时间才能想出它。理论上,在内存中创建临时项目并将文件添加到其中可能是一种选择

标签: c# visual-studio visual-studio-2008 xaml vsx


【解决方案1】:

Intellisense 由标识符和类型的内存缓存驱动。这些类型根据您所在的项目和该项目具有的引用进行缓存。如果您正在编辑的代码文件不是项目的一部分,Visual Studio 将不得不加载所有可能的程序集并为整个 .NET 框架中的每种类型创建智能感知数据,因为它无法知道您的代码文件是否需要它。

我猜 Visual Studio 可以根据文件的内容加载智能感知,但这不是它目前的工作方式。

【讨论】:

  • 这是众所周知的,不过谢谢。问题是,有没有办法将手动打开的文档绑定到该缓存,就像文件后面的 xaml 代码一样。
【解决方案2】:

Whole Tomato 的 Visual Assist X 是我多年来一直在使用的 VS 的插件。当您打开它时,它会为您提供 Intellisense 等功能。

【讨论】:

    猜你喜欢
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多