Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Implementado por objetos que precisam fazer upgrade de formatos de arquivo do projeto entre diferentes versões do Visual Studio do projeto.
Namespace: Microsoft.VisualStudio.Shell.Interop
Assembly: Microsoft.VisualStudio.Shell.Interop (em Microsoft.VisualStudio.Shell.Interop.dll)
Sintaxe
[InterfaceTypeAttribute(1)]
[GuidAttribute("75661D39-F5DA-41B9-ABDA-9CF54C6B1AC9")]
public interface IVsProjectUpgrade
[InterfaceTypeAttribute(1)]
[GuidAttribute("75661D39-F5DA-41B9-ABDA-9CF54C6B1AC9")]
public interface class IVsProjectUpgrade
[<InterfaceTypeAttribute(1)>]
[<GuidAttribute("75661D39-F5DA-41B9-ABDA-9CF54C6B1AC9")>]
type IVsProjectUpgrade = interface end
<InterfaceTypeAttribute(1)>
<GuidAttribute("75661D39-F5DA-41B9-ABDA-9CF54C6B1AC9")>
Public Interface IVsProjectUpgrade
Métodos
| Nome | Descrição | |
|---|---|---|
![]() |
UpgradeProject(UInt32) | Chamado pelo ambiente para determinar se o objeto project precisa atualizar o projeto para uma nova versão. |
Comentários
Quando um usuário tenta abrir um projeto, UpgradeProject é chamado pelo ambiente depois que o projeto é aberto e ação antes de qualquer outro usuário possa ser realizada no projeto.Se o usuário já tinha sido solicitado para atualizar a solução, em seguida, a UPF_SILENTMIGRATE sinalizador é passado a grfUpgradeFlags parâmetro.Se o usuário abrir um projeto diretamente, como em Add Existing Project, em seguida, a UPF_SILENTMIGRATE não é passado um sinalizador e precisa solicitar ao usuário para atualizar o projeto.
Em resposta para o UpgradeProject chamada, o projeto deve avaliar se o arquivo de projeto será atualizado.Se o projeto não precisa atualizar o projeto para uma nova versão, então ele pode simplesmente retornar S_OK.
Se o projeto precisa atualizar o projeto para uma nova versão, então ele deve determinar se o arquivo de projeto pode ser modificado, chamando QueryEditFiles e passando um valor de QEF_ReportOnly para o rgfQueryEdit parâmetro.Em seguida, o projeto precisa fazer o seguinte:
Se a tagVSQueryEditResult valor retornado na pfEditCanceled parâmetro é QER_EditOK, e em seguida, a atualização possa continuar porque o arquivo de projeto pode ser gravado.
Se a tagVSQueryEditResult valor retornado na pfEditCanceled parâmetro é QER_EditNotOK e o tagVSQueryEditResultFlags valor tem o QER_ReadOnlyNotUnderScc bit definido, em seguida, UpgradeProject deve retornar falha, porque o usuário deve resolver as permissões emitem si/próprio.O projeto deve, em seguida, faça o seguinte:
Relatar o erro para o usuário chamando ReportErrorInfo.
Retornar a VS_E_PROJECTMIGRATIONFAILED código de erro para UpgradeProject.
Se a tagVSQueryEditResult o valor é QER_EditNotOK e o tagVSQueryEditResultFlags valor tem o QER_ReadOnlyUnderScc bit definido, e em seguida, o arquivo de projeto deve fazer check-out, chamando QueryEditFiles(QEF_ForceEdit_NoPrompting | QEF_DisallowInMemoryEdits,...).
Se a QueryEditFiles ligar as causas de arquivo de projeto um "check-out"e"obter a versão mais recente", e em seguida, o projeto será descarregado e recarregado.UpgradeProjectserá chamado novamente após a criação de outra instância do projeto.Nesta segunda chamada, o arquivo de projeto pode ser gravado em disco; o projeto deve salvar uma cópia do arquivo de projeto no formato anterior (com um.Extensão do antigo), faça suas alterações de atualização necessárias e salve o arquivo de projeto no novo formato.Novamente, se qualquer parte do processo de atualização falhar, o método deve retornar falha (VS_E_PROJECTMIGRATIONFAILED).Isso fará com que o projeto para ser descarregado em Solution Explorer.
Observação |
|---|
Na instância do que seu primeiro projeto (Projeto1) é colocado no estado inativo, em seguida, você deve retornar S_OK da primeira chamada para seu UpgradeProject implementação. |
Para um exemplo de implementação dessa interface, consulte Basic Project.
Observações para implementadores:
Se você tiver alterado as informações de implementar persistentes no arquivo de projeto entre as versões de Visual Studio mais antigos e atuais do seu produto.O ambiente recupera essa interface chamando QueryInterface de IVsHierarchy.
Consulte também
Namespace Microsoft.VisualStudio.Shell.Interop
Retornar ao topo
.gif)
Observação