IVsProjectUpgrade 接口
实现由需要升级 Visual Studio 的不同版本之间的项目文件格式的项的对象。
命名空间: Microsoft.VisualStudio.Shell.Interop
程序集: Microsoft.VisualStudio.Shell.Interop(在 Microsoft.VisualStudio.Shell.Interop.dll 中)
语法
声明
<InterfaceTypeAttribute()> _
<GuidAttribute("75661D39-F5DA-41B9-ABDA-9CF54C6B1AC9")> _
Public Interface IVsProjectUpgrade
[InterfaceTypeAttribute()]
[GuidAttribute("75661D39-F5DA-41B9-ABDA-9CF54C6B1AC9")]
public interface IVsProjectUpgrade
IVsProjectUpgrade 类型公开以下成员。
方法
名称 | 说明 | |
---|---|---|
UpgradeProject | 调用通过环境确定项对象是否需要将项目升级到新版本。 |
页首
备注
当用户尝试打开项目时, UpgradeProject 由环境调用,在打开后该项,并且,在其他用户操作在项目之前可用于。 如果已经提示用户升级解决方案,则 UPF_SILENTMIGRATE 标志。 grfUpgradeFlags 参数传递。 如果用户直接打开项目,在 添加现有项目,则 UPF_SILENTMIGRATE 标志未通过,并且该项目需要提示用户升级。
响应 UpgradeProject 调用,该项目应计算项目文件是否将升级。 如果该项不需要升级项目类型到新版本,则可能返回 S_OK。
如果项目需要升级项目类型到新版本,则必须确定项目文件是否可调用 QueryEditFiles 和通过修改按 QEF_ReportOnly 的值 rgfQueryEdit 参数的。 该项目并需要执行以下操作:
如果在 pfEditCanceled 参数返回的 tagVSQueryEditResult 值为 QER_EditOK,则升级能继续,因为项目文件进行编写。
如果在 pfEditCanceled 参数返回的 tagVSQueryEditResult 值为 QER_EditNotOK ,并具有 QER_ReadOnlyNotUnderScc bit 设置的 tagVSQueryEditResultFlags 值,则 UpgradeProject 必须返回失败,则,因为用户应该解决权限问题。 该项目应然后执行下列操作:
该错误用户报告通过调用 ReportErrorInfo。
返回 VS_E_PROJECTMIGRATIONFAILED 错误代码。 UpgradeProject。
如果 tagVSQueryEditResult 值为 QER_EditNotOK ,并具有 QER_ReadOnlyUnderScc bit 设置的 tagVSQueryEditResultFlags 值,则应通过调用 QueryEditFiles检查项目文件 (QEF_ForceEdit_NoPrompting | QEF_DisallowInMemoryEdits,...).
如果 QueryEditFiles 在项目文件调用导致 “检查”, “获取最新版本”,则项目将卸载并重新加载。 ,在项目的其他实例后,UpgradeProject 再次调用。 在的第二个调用,项目文件中向磁盘写入;该项目应保存项目文件的副本以前一布局 (与 .OLD 扩展),使其必需的升级更改并保存项目文件在新的布局。 同样,因此,如果升级的任何部分处理失败,该方法应返回失败 (VS_E_PROJECTMIGRATIONFAILED)。 这在 解决方案资源管理器将导致该项目卸载。
备注
在实例第一个项目 (Project1) 在非活动状态,然后将必须从返回的 S_OK 第一次调用 UpgradeProject 实现。
有关此接口的实现的示例,请参见 Basic Project。
对实现者的说明
实现,如果更改了信息。在该产品之间的较早的和当前的 Visual Studio 版本的项目文件仍然存在。 该环境通过调用 QueryInterface 检索此接口从 IVsHierarchy。