Solucionar problemas de conversão para o Visual Web Developer

Quando você utilizar o Microsoft Visual Web Developer para abrir um projeto de aplicativo da Web, que foi criado em versões anteriores do Microsoft Visual Studio. NET, o Visual Web Developer automaticamente converte o aplicativo da Web para o formato utilizado em ASP.NET versão 2.0.

Observação:

Para obter detalhes sobre o processo de conversão, consulte Conversão de Projeto Web do Visual Studio.NET.

Em algumas circunstâncias, seus aplicativos da Web irão se comportar de maneira diferente após a conversão.Este tópico descreve essas situações mais comuns e sugere soluções.Para obter mais informações sobre solução de problemas de migração, você também pode consultar as informações de migração no centralizar de desenvolvimento ASP.NET para migração.

Este tópico descreve problemas de conversão a seguir:

  • Controles Tornam Marcação Diferente Após Conversão

  • Validação de Marcação Produz Erros

  • Eventos de Página São Disparados Duas Vezes Após a Conversão

  • Classes Ambíguas Relatadas Durante a Compilação

  • Erros Relacionados às Alterações no Modelo de Página Code-Behind

  • Analisando Erros

  • Arquivos Excluídos Não Mais Excluídos

  • Soluções Parcialmente Convertidas para Tipos de Projeto Mistos

  • Abrindo um Site Baseado na Web como um Site de Arquivo do Sistema

  • Identificações do lado do Cliente São Excluídos do Arquivo Code-Behind

  • Erro de Referência Circular

Controles Tornam Marcação Diferente Após Conversão

Em ASP.NET 2.0, a menos que o navegador esteja identificado para não suportar recursos XHTML, a classe Page e os controles de servidor Web do ASP.NET processam marcação por padrão, que é compatível com o XHTML 1.0 Transitional padrão.O assistente de conversão define automaticamente o atributo mode do elemento xhtmlConformance para Legacy.Após a conversão, elementos podem ser processados modo ligeiramente diferente do que estavam em versões anteriores do ASP.NET.Na maioria dos casos, as diferenças de renderização não têm efeito sobre a funcionalidade do aplicativo.No entanto, se você tiver script de cliente que depende de atributos ou marcas específicas, seu aplicativo pode não funcionar como anteriormente.

Para obter mais informações, consulte O ASP.NET e o XHTML.

Validação de Marcação Produz Erros

Após a migração, o esquema de validação de marcação padrão é definido para Internet Explorer 6.0.Isso significa que o editor compara a marcação na sua página com um esquema que define o que Microsoft Internet Explorer 6.0 considera HTML válido.Essa etapa é necessária para facilitar a transição para Visual Web Developer.Trata-se de uma boa prática para modificar a sua marcação, a fim de que as páginas do seu aplicativo validem através do esquema de validação XHTML 1.0 Transitional.

Para obter detalhes sobre como alterar o esquema de validação, consulte Como: Selecionar esquemas de validação para edição de HTML no Visual Web Developer.

Eventos de Página São Disparados Duas Vezes Após a Conversão

The conversion process removes the AutoEventWireup attribute of the @ Page directive.O valor padrão para este atributo é true, o que significa que a página gera automaticamente eventos que tenham o nome Page_ evento .Se uma página tiver explicitamente definido o atributo AutoEventWireup para false após a conversão, eventos na página serão gerados automaticamente.Se a página inclui uma outra maneira explícita de disparar o evento, tal como a palavra-chave Handles em Visual Basic, o evento pode ser disparado duas vezes.To resolve this issue, add AutoEventWireup="false" to the @ Page directive.

Classes Ambíguas Relatadas Durante a Compilação

Após converter um projeto, é possível que o compilador relate que uma classe é ambígua, o que significa que ela foi importada de mais de um namespace.Por exemplo, se um projeto convertido criar uma instância da classe Cache, o compilador relata que a classe reside em abos os namespaces System.Net e System.Web.Caching.

Em casos como estes, o .NET Framework versão 2.0 contém uma nova classe que tem o mesmo nome de uma classe existente.Para corrigir esse problema, localize todas as referências à classe em seu código e, em seguida, preceda o nome da classe com o nome de namespace, criando uma referência totalmente qualificada.

Erros Relacionados às Alterações no Modelo de Página Code-Behind

Convertendo projetos com páginas .aspx cujos membros protegidos de classe de acesso em classes code-behind podem gerar exceções.Isso é causado pela alteração no modelo code-behind no .NET Framework 2.0.Nas versões anteriores do .NET Framework, as páginas eram classes derivadas de classes code-behind.No entanto, em ASP.NET 2.0, classes code-behind definem classes parciais que são usadas com a página .aspx durante a geração da página para criar a página compilada resultante.

Um cenário comum no qual você pode encontrar esse problema de conversão é em um aplicativo que define componentes de layout compartilhados em uma classe code-behind de uma classe-base.You can get the same shared layout functionality by using user controls or master pages, or by using the CodeFileBaseClass attribute of the @ Page directive.Para obter mais informações sobre como desenvolver controles de usuário, consulte Visão geral sobre controles de usuário ASP.NET.Para obter mais informações sobre páginas mestras, consulte Visão Geral de Páginas Mestras ASP.NET e .

Analisando Erros

Os relatórios do assistente de conversão analisam erros em arquivos .aspx que não podem ser analisados.As causas dos problemas de análise se dividem nas categorias a seguir:

  • A página .aspx não foi formatada corretamente antes de o assistente de conversão ser executado.

  • Um atributo CodeBehind ou Src da diretiva @ Page não foi encontrado.

  • O arquivo code-behind referenciado em uma página .aspx não foi encontrado.

  • Um arquivo .aspx é listado no arquivo de projeto (.csproj ou .vbproj, por exemplo), mas não está no diretório do projeto.Se o arquivo não é parte do projeto, esse erro poderá ser ignorado.

Arquivos Excluídos Não Mais Excluídos

Nas versões anteriores do Visual Studio, você tinha a opção para incluir ou excluir arquivos em um projeto da Web.Além disso, um arquivo poderia ser excluído da compilação do projeto através da definição de sua ação de criação para None.O assistente de migração trata de maneira diferente esses dois casos.O assistente de migração converte arquivos em um projeto da Web que não estão marcados como excluídos.O assistente de migração não converte arquivos que não fazem parte da compilação do projeto -- arquivos configurados com sua ação de criação definida como None.

Depois que o processo de conversão for concluído, você pode excluir quaisquer arquivos anteriormente excluídos ou renomeá-los com uma extensão que não é usada em Visual Studio, tal como a extensão .exclude.Se um arquivo em um projeto da Web não foi convertido, certifique-se de que sua ação de criação não esteja definida como None.

Os arquivos que têm suas ações de compilação associadas definidas como None geram um mensagem de erro no relatório de conversão.Para obter mais informações sobre o relatório de conversão, consulte Formato do Relatório de Migração por Conversão.

Soluções Parcialmente Convertidas para Tipos de Projeto Mistos

Em Microsoft Visual Studio 2005 e versões anteriores é possível ter uma solução que seja composta de ambos os projetos da Web e projetos de cliente, tais como bibliotecas de classes ou aplicativos do Windows.Se você estiver usando uma edição do Microsoft Visual Studio 2005, então somente a parte da solução que pertence à edição expressa pode ser convertida.Por exemplo, se você usar o assistente para conversão em Visual Web Developer 2005 Express Edition, então você só será capaz de converter os projetos da Web de soluções que você abrir, independentemente de quais outros tipos de projeto a solução contém.A solução convertida resultante será apenas parcialmente convertida.Para converter totalmente uma solução que contém tipos de projeto mistos, use Visual Web Developer 2005, Visual Studio 2005 ou Visual Studio 2005 Team System.

Abrindo um Site Baseado na Web como um Site Baseado em Arquivo

A maneira recomendada para abrir um site da web criado em uma versão anterior do Visual Studio é usar a opção de menu Abrir Web site em Visual Web Developer 2005.Você pode escolher abrir o site como um site baseado em arquivo, um site local do Microsoft Internet Information Services (IIS), um site implantado em File Transfer Protocol (FTP) ou um site remoto.Abrindo um site baseado na Web como um site baseado em arquivo farão com que as informações de metadados do IIS sejam perdidas.Em particular, as informações sobre subpastas marcadas como diretórios virtuais não serão mantidas.O relatório de conversão relatará um aviso quando um site baseado na Web for convertido em um site baseado em arquivo.

É recomendável que você feche o site da Web e reabra-o usando o comando Open Web Site e selecione a guia Local IIS.Para obter mais informações sobre como usar o assistente de migração, consulte Como: Converter um projeto do Visual Studio .NET para o Visual Studio 2005.Para obter mais informações sobre o relatório de conversão, consulte Formato do Relatório de Migração por Conversão.

Identificações do Lado do Cliente São Excluídos do Arquivo Code-Behind

Se você tiver marcação que use um atributo ID do lado do cliente (por exemplo, em um elemento HTML div) que tenha o mesmo nome de uma variável de membro declarada na página code-behind, então, durante a conversão, a tag ID na marcação é removida.

Para resolver esse problema, examine sua marcação e seu código antes da conversão e procure por conflitos em nomes entre atributos ID do lado do cliente e variáveis de membro, e altere-os para que eles usem nomes diferentes.

Erro de Referência Circular

O processo de conversão adiciona diretivas @ Referência para páginas code-behind que fazem referência a outras páginas ou outros controles de usuário.Pode haver situações em que isso cria uma referência circular.Para ajudar na solução de problemas, você pode definir o atributo batch do elemento de compilação para False.O valor padrão do atributo batch é True.Configurando o lote para False para eliminar problemas de referência circular.A longo prazo, é possível redesenhar as páginas ou controles de usuário para usar uma classe base abstrata definida em uma classe armazenada na pasta App_Code e definir o atributo batch de volta para True.

Consulte também

Tarefas

Como: Selecionar esquemas de validação para edição de HTML no Visual Web Developer

Conceitos

Conversão de arquivos de projeto e solução Web

Outros recursos

Centro de Desenvolvimento ASP.NET para Migração