解决方案概述

解决方案是一个或多个项目分组,这些项目协同工作以创建应用程序。 与解决方案相关的项目和状态信息存储在两个不同的解决方案文件中。 解决方案 (.sln) 文件 基于文本,可放置在源代码控制下并在用户之间共享。 解决方案 用户选项 (.suo) 文件是二进制文件 。 因此,.suo 文件不能放置在源代码控制下,并且包含特定于用户的信息。

任何 VSPackage 都可以写入任一类型的解决方案文件。 由于文件的性质,实现两个不同的接口来写入这些文件。 该 IVsPersistSolutionProps 接口将文本信息写入 .sln 文件, IVsPersistSolutionOpts 接口将二进制流写入 .suo 文件。

注意

项目不必将条目显式写入解决方案文件中;环境处理项目。 因此,除非你想要专门向解决方案文件添加其他内容,否则不需要以这种方式注册 VSPackage。

每个 VSPackage 支持解决方案持久性都使用三个接口, IVsSolutionPersistence 该接口由环境实现,由 VSPackage 调用, IVsPersistSolutionProps 以及 IVsPersistSolutionOptsVSPackage 实现的接口。 IVsPersistSolutionOpts仅当 VSPackage 将私有信息写入 .suo 文件时,才需要实现该接口。

打开解决方案后,将执行以下过程。

  1. 环境读取解决方案。

  2. 如果环境找到一个 CLSID,它将加载相应的 VSPackage。

  3. 如果加载了 VSPackage,则环境会为 IVsPackage VSPackage 所需的接口调用QueryInterface接口。

    • 从 .sln 文件读取时,环境将调用 QueryInterface IVsPersistSolutionProps

    • 从 .suo 文件读取时,环境将IVsPersistSolutionOpts调用 QueryInterface

    有关这些文件使用的具体信息,请参阅解决方案 (.sln) 文件和解决方案用户选项 (.suo) 文件

注意

如果要创建新的解决方案配置,其中包含两个项目的配置,并从生成中排除第三个项目,则需要使用属性页 UI 或自动化。 不能直接更改解决方案生成管理器配置及其属性,但可以使用自动化模型中 DTE 中的类操作解决方案生成管理器 SolutionBuild 。 有关配置解决方案的详细信息,请参阅 解决方案配置