Interface IVsProjectUpgrade
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