IVsProjectUpgrade 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
由需要在不同版本的 Visual Studio 之间升级项目文件格式的项目对象实现。
public interface class IVsProjectUpgrade
public interface class IVsProjectUpgrade
__interface IVsProjectUpgrade
[System.Runtime.InteropServices.Guid("75661D39-F5DA-41B9-ABDA-9CF54C6B1AC9")]
[System.Runtime.InteropServices.InterfaceType(1)]
public interface IVsProjectUpgrade
[<System.Runtime.InteropServices.Guid("75661D39-F5DA-41B9-ABDA-9CF54C6B1AC9")>]
[<System.Runtime.InteropServices.InterfaceType(1)>]
type IVsProjectUpgrade = interface
Public Interface IVsProjectUpgrade
- 属性
注解
用户尝试打开项目时,环境将在 UpgradeProject 项目打开之后以及在项目上执行任何其他用户操作之前由环境调用。 如果已提示用户升级解决方案,则 UPF_SILENTMIGRATE 标志将传入 grfUpgradeFlags 参数。 如果用户直接打开项目(就像在 " 添加现有项目" 中那样),则 UPF_SILENTMIGRATE 不会传递标志,并且项目需要提示用户进行升级。
在响应 UpgradeProject 调用时,项目应评估是否将升级项目文件。 如果项目不需要将项目类型升级到新版本,则可以直接返回 S_OK 。
如果项目需要将项目类型升级到新版本,则它必须通过调用并传入参数的值来确定是否可以修改项目文件 QueryEditFiles QEF_ReportOnly rgfQueryEdit 。 该项目接下来需要执行以下操作:
如果
pfEditCanceled参数中返回的 tagVSQueryEditResult 值是 QER_EditOK,则升级可以继续,因为项目文件可以进行编写。如果 tagVSQueryEditResult 参数中返回的值
pfEditCanceled为 QER_EditNotOK ,且 tagVSQueryEditResultFlags 值设置了 QER_ReadOnlyNotUnderScc 位,则 UpgradeProject 必须返回失败,因为用户应自行自行解决权限问题。 该项目接下来应执行以下操作:通过调用 ReportErrorInfo 将错误报告给用户。
将 VS_E_PROJECTMIGRATIONFAILED 错误代码返回到 UpgradeProject 。
如果 tagVSQueryEditResult 值为 QER_EditNotOK ,且 tagVSQueryEditResultFlags 值设置了 QER_ReadOnlyUnderScc 位,则应通过调用 QueryEditFiles (IVsProjectUpgrade | IVsProjectUpgrade,... ) 来签出项目文件。
如果对 QueryEditFiles 项目文件的调用导致 "签出" 和 "获取最新版本",则将卸载并重新加载项目。 UpgradeProject 创建项目的另一个实例后,将再次调用。 在第二次调用时,项目文件可以写入磁盘;项目应使用以前的格式保存项目文件的副本 (。旧扩展) ,进行必要的升级更改,并以新格式保存项目文件。 同样,如果升级过程的任何部分失败,方法应 () 返回失败 VS_E_PROJECTMIGRATIONFAILED 。 这将导致项目在 解决方案资源管理器 中卸载。
备注
在第一个项目 (Project1) 处于非活动状态时,您必须从第一次调用到实现时返回 S_OK UpgradeProject 。
有关此接口的示例实现,请参阅 基本项目。
实施者说明
如果您在产品的旧版本和当前 Visual Studio 版本之间更改了项目文件中保存的信息,则实现。 环境通过从调用 QueryInterface 来检索此接口 IVsHierarchy 。
方法
| UpgradeProject(UInt32) |
由环境调用以确定项目对象是否需要将项目升级到新版本。 |