使用“打开文件”命令显示文件

以下步骤介绍了 IDE 如何处理 Visual Studio 的“文件”菜单上提供的“打开文件”命令。 这些步骤还介绍了项目应如何响应源自此命令的调用。

当用户单击“文件”菜单上的“打开文件”命令并从“打开文件”对话框中选择文件时,将发生以下过程:

  1. 使用正在运行的文档表,IDE 确定文件是否已在项目中打开。

    • 如果文件处于打开状态,IDE 会重新浮出窗口。

    • 如果文件未打开,IDE 将调用 IsDocumentInProject 查询每个项目以确定哪个项目可以打开该文件。

      注意

      在项目的实现 IsDocumentInProject中,提供一个优先级值,该值指示项目打开文件的级别。 枚举中 VSDOCUMENTPRIORITY 提供了优先级值。

  2. 每个项目都以优先级进行响应,指示它作为项目打开文件的重要性。

  3. IDE 使用以下条件来确定打开该文件的项目:

    • 以最高优先级 (DP_Intrinsic) 响应的项目将打开该文件。 如果多个项目使用此优先级进行响应,则第一个要响应的项目将打开该文件。

    • 如果没有具有最高优先级的项目响应(DP_Intrinsic),但所有项目都以相同的较低优先级进行响应,则活动项目将打开该文件。 如果没有活动项目,则第一个要响应的项目将打开该文件。

    • 如果没有项目声明文件(DP_Unsupported)的所有权,“杂项文件”项目将打开该文件。

      如果创建了杂项文件项目的实例,则项目始终使用值 DP_CanAddAsExternal进行响应。 此值指示项目可以打开该文件。 此项目用于容纳不在任何其他项目中的打开文件。 此项目中的项列表未持久保存;仅当项目用于打开文件时,此项目才在解决方案资源管理器中可见。

      如果杂项文件项目未指示它可以打开该文件,则尚未创建项目的实例。 在这种情况下,IDE 将创建杂项文件项目的实例,并指示项目打开该文件。

  4. 一旦 IDE 确定哪个项目打开该文件,就会调用 OpenItem 该项目上的方法。

  5. 然后,项目可以选择使用特定于项目的编辑器或标准编辑器打开文件。 有关详细信息,请参阅 “如何:打开特定于项目的编辑器 ”和 “如何:分别打开标准编辑器”。