Problemas de migração do .NET Framework 4
Este tópico descreve os problemas de migração entre o .NET Framework versão 3.5 Service Pack 1 e o .NET Framework versão 4, incluindo alterações, correções e alterações para conformidade com padrões e segurança, com base no feedback do cliente . A maioria dessas alterações não requerem qualquer programação modificações em seus aplicativos. Para aqueles que pode envolver modificações, consulte a coluna de alterações recomendadas da tabela.
Este tópico descreve alterações importantes nas seguintes áreas:
ASP.NET e Web
Núcleo
Data
Windows Communication Foundation (WCF)
Windows Presentation Foundation (WPF)
XML
Para obter uma maior visão de nível-dos problemas neste tópico, consulte o Guia de migração do .NET Framework 4.
Para problemas de migração após Beta 2, consulte problemas de migração para.NET Applications da Framework 4: Beta 2 para a RTM.
Para obter informações sobre os novos recursos, consulte O que há de novo no .NET Framework 4.
ASP.NET e Web
Namespaces: System.Web, System.Web.Mobile, System.Web.Security, System.Web.UI.WebControls; oassembly: Sistema.Web (no sistema.. Dll daWeb)
Feature |
Diferenças de 3.5 SP1 |
Alterações recomendadas |
---|---|---|
Browser definition files |
Os arquivos de definição do navegador foram atualizados para incluir informações sobre novos e atualizados de navegadores e dispositivos. Mais antigas de navegadores e dispositivos, como o Netscape Navigator, foram removidos e versões mais recentes de navegadores e dispositivos como o iPhone cromo do Google e Apple foram adicionados. Se seu aplicativo contém definições de navegador personalizado que herdam de uma das definições de navegador que tenham sido removidas, você verá um erro. O HttpBrowserCapabilities objeto (que é exposta pela página de Request.Browser propriedade) é impulsionado por arquivos de definição de navegador. Portanto, as informações que são retornadas por acessar uma propriedade desse objeto em ASP.NET 4 podem ser diferentes das informações que foi retornadas em uma versão anterior de ASP.NET. |
Se seu aplicativo depende dos arquivos antigos de definição de navegador, você pode copiá-los da seguinte pasta: \V2.0.50727\CONFIG\Browsers deFrameworkde Windows\Microsoft.NET\ Copiar os arquivos na pasta \CONFIG\Browsers correspondente para ASP.NET 4. Depois de copiar os arquivos, execute o Aspnet_regbrowsers.exe a ferramenta delinha comando. Para obter mais informações, consulte o https://www.asp.net/mobilesiteWeb . |
Aplicativos de filhos que executam versões mistas de ASP.NET |
ASP.NET 4 aplicativos são configurados como filhos de aplicativos que executam versões anteriores do ASP.NET pode falhar ao iniciar devido a erros de configuração ou compilação. O erro específico que ocorre depende do aplicativo executa o IIS 6.0, ou sob o IIS 7 ou o IIS 7.5. |
Você pode fazer alterações aos arquivos de configuração dos aplicativos afetados do que o sistema de configuração corretamente reconheça o ASP.NET 4 de aplicativo. Para obter informações sobre as alterações que você deve fazer, consulte a seção "ASP.NET 4 filho aplicativos Falha ao iniciar sob ASP\ de ASP.NET 2.0 ou ASP.NET aplicativos de 3,5 " no documento ASP.NET alterações mais recentes de 4 sobre o ASP.NETsiteWeb . |
Alterações de ClientID |
O novo ClientIDModedeconfiguração em ASP.NET 4 permite que você especifique como ASP.NET gera a iddeatributo para elementos HTML . Em versões anteriores do ASP.NET, o comportamento padrão era equivalente a AutoIDaconfiguração de ClientIDMode. Agora, a configuração do padrão é Predictable. For more information, see Identificação de controle do servidor Web ASP.NET. |
Se você usar Visual Studio 2010 para atualizar seu aplicativo de ASP.NET 2.0 ou ASP.NET 3.5, a ferramenta adiciona automaticamente uma configuração ao arquivo Web. config que preserva o comportamento de versões anteriores do.NET Framework. No entanto, se você atualizar um aplicativo alterando o pool de aplicativo no IIS para o destino do.NET Framework 4, ASP.NET usa o novo modo por padrão. Para desabilitar o novo modo de identificação do cliente, adicione a seguinte configuração ao arquivo Web. config: <pages ClientIDMode="AutoID" / > |
Código access segurança (CAS) |
ASP.NET recursos de rede 2.0 que foram adicionados em ASP.NET uso de 3,5 a.NET Framework 1.1 e.NET Framework 2.0 modelo de segurança de acesso do código (CAS). No entanto, a implementação do CAS em ASP.NET 4 foi substancialmente revisadas. Como resultado, parcial- ASP.NET aplicativos que dependem de código confiável em execução no global assembly cache podem falhar com várias exceções de segurança . Aplicativos de confiança parcial-que dependem de grandes modificações e a diretiva de computador CAS também podem falhar e lançar exceções de segurança . |
Você pode reverterparcial- ASP.NET 4 aplicativos para o comportamento de ASP.NET 1.1 e 2.0 usando o novo legacyCasModelatributo o trustelemento deconfiguração , conforme mostrado no exemplo a seguir: <trust level= "Medium" legacyCasModel="true" /> Observação Revertendo para o antigo modelo de CAS pode segurançareduzida de representar. Para obter mais informações sobre o novo ASP.NET modelo de segurança de acesso do código 4, consulte Segurança de acesso a código em aplicativos ASP.NET 4. |
Arquivos de configuração |
Arquivos deconfiguração raiz(arquivo computador. config e o arquivo raizWeb. config) para o.ASP\ de NET Framework e ASP.NET 4 foram atualizadas para incluir a maioria das informações de configuração clichê foi encontradas no aplicativoWeb, arquivos. config em ASP.NET 3.5. Por causa da complexidade dos IIS 7 e o IIS 7.5 configuração sistemas gerenciado , executando ASP.NET aplicativos de 3,5 em ASP.NET 4 e em IIS 7 e o IIS 7.5 pode resultar em um dos ASP.NET erros ou IIS. |
Atualizar ASP.NET aplicativos de 3,5 para ASP.NET 4 usando o projeto atualizar ferramentas no Visual Studio 2010. Visual Studio 2010 modifica automaticamente o ASP.NET 3,5 aplicativoda Web. config arquivo para conter as configurações apropriadas para ASP.NET 4. No entanto, você pode executar o ASP.NET 3.5 aplicativos usando o.NET Framework 4 sem recompilação. Nesse caso, talvez seja necessário modificar manualmente o arquivo. config do aplicativo Webantes de executar o aplicativo sob o.NET Framework 4 e no IIS 7 ou no IIS 7.5. A alteração específica, que você deve fazer depende da combinação de software que você está trabalhando, incluindo versões de Service Pack (SP). Para obter informações sobre as combinações possíveis de software que são afetados por essa alteração e como resolver problemas com combinações específicas, consulte a seção Erros de configuração relacionados para o Novo ASP.NET a configuração de raiz 4 " no documento ASP.NET alterações mais recentes de 4 sobre o ASP.NETsiteWeb . |
Controle de renderização |
Em versões anteriores do ASP.NET, alguns controles emitida a marcação que você poderia não desabilitar. Por padrão, esse tipo de marcação não é gerado em ASP.NET 4. As alterações de renderização afetam os seguintes controles:
Controles que não são projetados para entrada do usuário (por exemplo, o Label control) não processará mais o disabled="disabled" atributo se seus Enabled propriedade estiver definida como false (ou se eles herdam essa configuração de um controle de contêiner ). |
Se você usar o Visual Studio 2010 para atualizar seu aplicativo de ASP.NET 2.0 ou ASP.NET 3.5, a ferramenta adiciona automaticamente uma configuração ao arquivo Web. config que preserva o renderizaçãode legado. No entanto, se você atualizar um aplicativo alterando o pool de aplicativo no IIS para o destino do.NET Framework 4, ASP.NET por padrão, usa o novo modo de renderização . Para desabilitar o novo modo de renderização , adicione a seguinte configuração ao arquivo Web. config: <pages controlRenderingCompatibilityVersion="3.5" /> |
Os manipuladores de evento padrão de documentos |
ASP.NET 4 processa o HTMLform do elemento actiono valor doatributo como uma seqüência vazia quando uma solicitação é feita para um sem extensão URL que tenha um documento padrão mapeado para o proprietário. Em versões anteriores do ASP.NET, uma solicitação para https://contoso.com resultaria em uma solicitação para Padrão. aspx. Nesse documento, a abertura form marca seria processada como no exemplo a seguir: <form action="Default.aspx" /> Em ASP.NET 4, uma solicitação para https://contoso.com também resulta em uma solicitação aspx Padrão, mas ASP.NET agora processa a abertura de HTML form marca como no exemplo a seguir: <form action="" /> Quando o actionatributo é uma seqüência vazia, o IIS DefaultDocumentModuleobjeto cria umasolicitação do filhopara Padrão. aspx. Na maioria das condições, estasolicitação de filhoé transparente para o código do aplicativo e página Padrão. aspx é executado normalmente. No entanto, uma interação de potencial entre código gerenciado e o IIS 7 ou o IIS 7.5 modo Integrado pode causar gerenciado páginas. aspx parar de funcionar corretamente durante asolicitaçãodo filho. Se as seguintes condições ocorrerem, asolicitação do filhoa um documento. aspx padrão resultará em um erro ou comportamento inesperado:
Porque não há nenhum corpo de entidade , há nenhuma variável de formulário e nenhum estado de exibição. Portanto não há nenhuma informação disponível para o manipulador de página. aspx determinar qual evento (se houver) deve ser gerado. Como resultado, nenhum dos manipuladores deevento de postbackda página aspx afetado execute. |
Para obter informações sobre maneiras de contornar problemas que possam surgir como resultado da alteração, consulte "manipuladores de eventos não podem ser aumentados não em um documento Padrão no IIS 7 ou o IIS 7.5 modo integrado" no documento ASP.NET alterações mais recentes de 4 sobre o ASP.NETsiteWeb . |
algoritmode hash |
ASP.NET usa a criptografia e algoritmos de hash para ajudar a proteger os cookies de autenticação de dados como, por exemplo, formulários e estado de exibição. Por padrão, ASP.NET 4 usa o HMACSHA256oalgoritmo para operações de hash em cookies e o estado de exibição. Versões anteriores do ASP.NET usado o antigo HMACSHA1 algoritmo. |
Se você executar aplicativos misturar ASP.NET 2.0 e ASP.NET 4, onde os dados como, por exemplo, os cookies de autenticação de formulários devem funcionar em.NET Framework versões, configurar um ASP.NET 4aplicativo da Webpara usar o antigo HMACSHA1oalgoritmo , adicionando a seguinte configuração no arquivo Web. config: <machineKey validation="SHA1" /> |
Hospedagem de controles no Internet Explorer |
Você não poderá mais controles deWindows Forms hostno Internet Explorer, porque existem soluções melhores para controles de hospedagem na Web. Portanto, os assemblies IEHost.dll e IEExec.exe foram removidos da.NET Framework. |
Você pode usar as seguintes tecnologias para o desenvolvimento de controle personalizado em aplicativos Web :
|
Métodos de HtmlEncode e UrlEncode |
O HtmlEncode e UrlEncode métodos para a HttpUtility e HttpServerUtility classes foram atualizadas para codificar o caractere de aspas simples (') da seguinte maneira:
|
Examine o seu código para os locais onde você usar o HtmlEncode e UrlEncode métodos e certifique-se de que a alteração na codificação não resulta em uma alteração que afeta o seu aplicativo. |
Erros de HttpException em ASP.NET 2.0 aplicativos |
Depois de ASP.NET 4 foi habilitada no IIS 6, ASP.NET 2.0 aplicativos executados no IIS 6 (no Windows Server 2003 ou Windows Server 2003 R2) podem gerar erros, como a seguir: System.Web.HttpException: Path '/[yourApplicationRoot]/eurl.axd/[Value]' was not found. |
|
Tipos de associação |
Alguns tipos (por exemplo, System.Web.Security.MembershipProvider) que são usados em ASP.NET associação foram movidos do sistema.Web. dll no sistema.Web.ApplicationServices.dll de assembly. Os tipos foram movidos na ordem para resolver dependências de arquitetura de camadas entre tipos no cliente e no estendido.SKUs do NET Framework . |
Bibliotecas de classes que foram atualizadas a partir de versões anteriores do ASP.NET e que tipos de associação de uso que foram movidos podem falhar para compilar quando usado em um ASP.NET 4 projeto. Em caso afirmativo, adicione uma referência noprojeto debibliotecade classeao sistema.Web.ApplicationServices.dll. |
Alterações de controle de menu |
Altera para o Menu a controlar o resultado no seguinte comportamento:
|
|
assembly de móveis no Web. config file |
Em versões anteriores do ASP.NET, uma referência para o sistema.Web.Mobile.dll assembly foi incluída no arquivo raiz Web. config no assemblies seção em system.web/compilation. Para melhorar o desempenho, a referência a este assembly foi removida. Observação O sistema.Web.Mobile.dll de assembly e o ASP.NET controles móveis estão incluídos no ASP.NET 4, mas eles são preterido. |
Se você desejar usar tipos neste assembly, adicione uma referência ao assembly no raiz Web. config arquivo ou em um arquivo. config do aplicativo Web. |
Cache de saída |
Em ASP.NET 1.0, um bug causadas em cache páginas especificado Location="ServerAndClient" como uma output–cache de configuração para emitir um Vary:* HTTP cabeçalho na resposta. Isso teve o efeito de dizer a navegadores de cliente para a página localmente em cache nunca. Em ASP.NET 1.1, o HttpCachePolicy.SetOmitVaryStar método foi adicionado, o que poderia ser chamado para suprimir a Vary:* cabeçalho. No entanto, a relatórios de bug sugerem que os desenvolvedores são insensíveis a existente SetOmitVaryStar comportamento. Em ASP.NET 4, o Vary:* HTTP cabeçalho não é emitida de respostas de especificar a diretiva a seguir: <%@ OutputCache Location="ServerAndClient" %> Como resultado, o HttpCachePolicy.SetOmitVaryStar método não é mais necessária para suprimir a Vary:* cabeçalho. Em aplicativos que especificar "serverandclient" para o Location atributo, páginas serão armazenáveis em cache no navegador sem exigir que você chamar HttpCachePolicy.SetOmitVaryStar. |
Se as páginas no aplicativo devem emitir Vary:*, chame o HttpResponse.AppendHeader método conforme mostrado no exemplo a seguir: HttpResponse.AppendHeader("Vary","*"); Como alternativa, você pode alterar o valor do cache de saída Location atributo para "Server". |
Análise daPágina |
O analisador de página ASP.NET(arquivos. aspx) de páginasWeb e controles de usuário (arquivos. ascx) é mais rígidas nas ASP.NET 4 que em versões anteriores do ASP.NET, e ele sinaliza mais a marcação como inválido que em versões anteriores. |
Examine as mensagens de erro que são produzidas quando uma página é executada e corrigir os erros resultantes damarcaçãode inválido. |
Tipos de Passport |
O suporte de Passport foi incorporado no ASP.NET 2.0 é obsoleto e não é suportada devido a alterações no Passport (agora Live ID SDK). Como resultado, os tipos relacionados ao Passport em System.Web.Security agora são marcados com o ObsoleteAttribute atributo. |
Alterar qualquer código que você tem que usa o Passport digita o System.Web.Security namespace (por exemplo, System.Web.Security.PassportIdentity) para usar o SDK do Windows Live ID. |
Informações de PathInfo na FilePath propriedade |
ASP.NET 4 não inclui mais o PathInfo valor em valores de retorno de propriedades, como HttpRequest.FilePath, HttpRequest.AppRelativeCurrentExecutionFilePath, e HttpRequest.CurrentExecutionFilePath. Em vez disso, o PathInfo informações estão disponíveis em HttpRequest.PathInfo. Por exemplo, imagine o fragmento de URL a seguir: /testapp/Action.mvc/SomeAction Em versões anteriores do ASP.NET, System.Web.HttpRequest propriedades têm os seguintes valores:
Em ASP.NET 4, System.Web.HttpRequest Propriedades em vez disso, tem os seguintes valores:
|
Examine o seu código para os locais onde você depende de propriedades do deSystem.Web.HttpRequestclasse para retornar informações de caminho; Altere o código para refletir as alterações em como as informações de caminho são retornadas. |
validaçãode solicitação |
Para melhorar a solicitaçãovalidação, o ASP.NETdesolicitaçãovalidação é chamada anteriormente na solicitação,ciclo de vida. Como resultado, avalidação de solicitaçãoé executado para solicitações que não são arquivos. aspx, como para chamadas de serviço da Web e manipuladores personalizados. Solicitação de validação também estará ativa quando estiver executando o módulo HTTP personalizado no pipeline de processamento de solicitação . Como resultado da alteração, solicitações de recursos, além de arquivos. aspx podem lançar solicitaçãoerros devalidação . CódigoPersonalizar que executa o pipeline de solicitação (por exemplo, módulos personalizados de HTTP ) também pode lançar solicitaçãoerros devalidação . |
Se necessário, você pode reverter para o comportamento antigo de ter apenas as páginas. aspx disparar a solicitaçãodevalidação usando a seguinte configuração no arquivo deconfiguração da Web: <httpRuntime requestValidationMode="2.0" /> Observação Se você reverter para o comportamento antigo, certifique-se de que todo o código existentes manipuladores, módulos e outros códigos personalizados executa verificações para entradas HTTP potencialmente não seguras que podem ser vetores de ataque XSS. |
Roteamento |
Se você criar um site daWeb sistema de arquivosem 2010 de Visual Studio e Web estiver em uma pasta que contém um ponto (.) no nome da pasta, roteamento de URL não funcionará com confiança. Um HTTP 404 erro é retornado da alguns caminhos virtuais. Isso ocorre porque o Visual Studio 2010 inicia o servidor de desenvolvimento de Visual Studio (Cassini) usando um caminho incorreto para o diretório raiz virtual. |
|
Sites do SharePoint |
Se você tentar executar um ASP.NET Web site do SharePoint que contém um personalizado parcial- chamado emnível de confiança</c5> WSS_Minimal, você verá o seguinte erro: Could not find permission set named 'ASP.Net'. |
Atualmente, a nenhuma versão do SharePoint é compatível com ASP.NET. Como resultado, você não deve tentar executar um ASP.NET 4 Web site como um filho de um site da Web do SharePoint. |
Padrões XHTML 1.1 |
Para permitir a conformidade XHTML 1.1 para Web o ASP.NET controles de .NET Framework 4 irá gerar de XHTML 1.1 compatível com HTML. Esse renderização está ativado, usando a opção a seguir no arquivo Web. config: <system.Web> <pages controlRenderingCompatibilityVersion="4.0"/> </system.Web> Essa opção é definida por padrão, 4.0. ProjetosWeb que são atualizados para Visual Studio de Visual Studio 2008 será a configuração de 3,5 ativado para a compatibilidade. |
Nenhum. |
Back to top
Núcleo
Geral Recursos
Feature |
Diferenças de 3.5 SP1 |
Alterações recomendadas |
---|---|---|
CardSpace |
O Windows CardSpace não está mais incluído na.NET Framework; ele é fornecido separadamente. |
Baixe o Windows CardSpace a partir do Microsoft Download Centralizado. |
Arquivos de configuração |
Correções foram feitas em como o .NET Framework acessa arquivos deconfiguração do aplicativo. |
Se o seu arquivo deconfiguração do aplicativoé denominado aplicativo-nome. config, renomeá-lo para aplicativo-nome. exe. Por exemplo, renomeie MyApp.config para MyApp.exe.config. |
Compilador de código C# |
O Compiler, CompilerError, e ErrorLevel classes que estavam na Microsoft.CSharp namespace não estão mais disponíveis e seus assembly (cscompmgd.dll) não está mais incluída na.NET Framework. |
Use o CodeDomProvider classe System.CodeDom.Compiler namespace. For more information, see Usando o CodeDOM.. |
Hosting (API não gerenciada) |
Para melhorar os recursos de hospedagem , alguns da ativação de hospedagem APIs foram preterido. No-recursos doexecução lado a lado deprocessopermitem que um aplicativo carregar e iniciar várias versões do.NET Framework no mesmo processo. Por exemplo, você pode executar aplicativos carga add ins-(ou componentes) que se baseiam o .NET Framework 2.0 SP1 e adicionar-ins que se baseiam o .NET Framework 4 no mesmo processo. Componentes antigos continuam a usar o antigo.NET Framework versãoe novos componentes de usam o novo.NET Framework versão. |
Use as configurações descritas na Execução de lado a lado no processo. |
Novomodelo desegurança |
A diretiva segurança de acesso do código (CAS) foi desativada e substituída com um modelo simplificado, conforme descrito em Alterações de segurança na.NET Framework 4. |
Modificações podem ser necessárias para se depender CAS em seus aplicativos. For more information, see Compatibilidade de diretiva de segurança de acesso e a migração de código. |
Back to top
Date and Time
Namespace: System; oassembly: mscorlib (in mscorlib.dll)
Feature |
Diferenças de 3.5 SP1 |
Alterações recomendadas |
---|---|---|
Horário de verão |
Para ser consistente com o relógio do sistema, propriedades de tempo (como TimeZoneInfo.Local e DateTime.Now) agora usar as regras do sistema operacional em vez dos outros.NET Framework dados operações de horário de verão. |
Nenhum. |
Seqüências de caracteres deFormatação |
Para oferecer suporte a cultura-formatação confidenciais, o TimeSpan estrutura inclui novas sobrecargas da ToString, Parse, e TryParse métodos além dos novos ParseExact e TryParseExact métodos. |
Nenhum. |
Back to top
Globalization
Para obter uma lista das novas culturas neutras e específicas, consulte Novidades sobre globalização e localização.
Namespace: System.Globalization; oassembly: mscorlib (in mscorlib.dll)
Feature |
Diferenças de 3.5 SP1 |
Alterações recomendadas |
---|---|---|
Nomes de cultura |
As seguintes alterações de nome afetam as culturas alemão, Divehi e Centro-Africana:
|
Observe as alterações de nome de cultura . |
LCID de parâmetro |
Para ser consistente com o comportamento esperado nas configurações do servidor de automação, o CLR não passa a cultura atual para o LCID parâmetro para não gerenciado COM-com base em aplicativos. Em vez disso, ele passa 1033 (en-dos EUA) para a cultura. |
ModificaçõesNão necessárias, exceto para aplicativos nativo que exigem uma culturade especificado. |
Tipos de cultura de obsoleto |
O FrameworkCultures e WindowsOnlyCulturestipos decultura agora estão obsoleto. Para compatibilidade com versões anteriores, FrameworkCultures agora retorna culturas neutras e específicas que foram incluídas com o anterior.NET Framework, e WindowsOnlyCultures agora retorna uma lista vazia. |
Usar outros valores da CultureTypes enumeração. |
Recuperando a cultura |
Começando com Windows 7, o .NET Framework 4 recupera informações de cultura do sistema operacional em vez de armazenar os dados propriamente ditos. Além disso, o.NET Framework sincroniza com o Windows para classificação e casing dados. |
Nenhum. |
Padrões deUnicode 5.1 |
A.NET Framework agora suporta todos os caracteres do Unicode 5.1 – um acréscimo de cerca de 1400 caracteres. Os caracteres adicionais incluem novos símbolos, setas, sinais diacríticos, pontuação, símbolos matemáticos, traçados CJK e ideogramas, malaiala adicional e Telugu caracteres numéricos e vários caracteres Myanmar, latim, árabe, grego, mongol e cirílico. Novos scripts a seguintes são compatíveis com Unicode 5.1: Sundanese, Lepcha, Ol Chiki, variável, Saurashtra, Kayah Li, Rejang, Gurmukhi, oriá, tâmil, télugo e malaiala caracteres e Cham. |
Nenhum. |
Back to top
Exceptions
Namespaces: System, System.Runtime.ExceptionServices; oassembly: mscorlib (in mscorlib.dll)
Feature |
Diferenças de 3.5 SP1 |
Alterações recomendadas |
---|---|---|
Exceções para o estado do processo de corrompido |
O CLR não mais oferece exceções para o estado do processo de corrompido manipuladores de exceção no código gerenciado . |
Essas exceções indicam que o estado de um processo foi corrompido. Não recomendamos que você execute aplicativo nesse estado. Para obter mais informações, consulte o HandleProcessCorruptedStateExceptionsAttribute e a entrada Tratamento exceções de estado corrompido no blog CLR Inside Out. |
Exceções do mecanismo de execução |
ExecutionEngineExceptionAgora é obsoleto, porque uma exceção de capturável permitirá que um processo de instável continuar a executar. Esta alteração melhora a previsibilidade e confiabilidade no tempo de execução. |
Use um InvalidOperationException para sinalizar a condição. |
Back to top
Reflection
Namespace: System.Reflection; oassembly: mscorlib (in mscorlib.dll)
Feature |
Diferenças de 3.5 SP1 |
Alterações recomendadas |
---|---|---|
Algoritmos de hash do assembly |
O AssemblyName.HashAlgorithmapropriedade agora retorna AssemblyHashAlgorithm.None, porque o tempo de execução não sabe o algoritmo de hash do assembly referenciado quando o assembly não está carregado. (Isso se refere ao usar a propriedade em um assembly referenciado, como retornado pelo Assembly.GetReferencedAssemblies método.) |
Nenhum. |
Carregamento de assembly |
Para evitar redundantes de carregamento de módulos (assemblies) e para economizar espaço de endereço virtual, o CLR agora carrega os assemblies usando somente o Win32 MapViewOfFile função. Ele não é mais também chama o LoadLibrarydefunção. Essa alteração afeta os aplicativos de diagnóstico das seguintes maneiras:
|
Nenhum. |
A declaração de tipo |
O Type.DeclaringType propriedade agora corretamente retorna null quando o tipo não tem um tipo declarativo. |
Nenhum. |
Delegates |
Um delegado agora lança um ArgumentNullException em vez de um NullReferenceException quando um valor null é passado ao construtordo delegado. |
Certifique-se de que qualquer exceção tratamento detectando ArgumentNullException. |
Alteração do local global assembly cache |
Para .NET Framework 4 assemblies, global assembly cache foi movido do diretório Windows (% WINDIR %) para o subdiretório Microsoft.Net (% WINDIR%\Microsoft.Net) (em inglês). Assemblies de versões anteriores permanecem no diretório mais antigo. O não gerenciado ASM_CACHE_FLAGS enumeração contém o novo ASM_CACHE_ROOT_EX sinalizar. Esse sinalizar obtém o local do cache de .NET Framework 4 assemblies, que podem ser obtidos com o GetCachePath função. |
Nenhum, assumindo que os aplicativos não usam caminhos explícitos a assemblies, que não é uma prática recomendada. |
O global assembly cache tool |
O Gacutil. exe (ferramenta de Cache de Assembly Global) não suporta mais o Visualizador de plug-in de shell . |
Nenhum. |
Interoperability
Namespace: System.Runtime.InteropServices; oassembly: mscorlib (in mscorlib.dll)
Feature |
Diferenças de 3.5 SP1 |
Alterações recomendadas |
---|---|---|
Comprimento do buffer (API não gerenciada) |
Para economizar memória, a funcionalidade para o pBufferLengthOffsetdeparâmetro para o ICorProfilerInfo2::GetStringLayout método foi alterado para coincidir com o pStringLengthOffsetparâmetro. Ambos os parâmetros a apontar para o local de deslocamento do comprimento da seqüência de caracteres. Comprimento do buffer foi removido da representação da string classe. |
Remover qualquer dependência em que o comprimento do buffer. |
JIT depuração |
Para simplificar o registro Just-In-Time (JIT), depuração, o.Agora, o depurador do NET Framework usa apenas o registro AeDebug chave, que controla o comportamento dedepuração JITpara código nativo . Essa alteração resulta no seguinte:
|
Ajuste as operações de depuração , conforme necessário. |
Platform invoke |
Para melhorar o desempenho na interoperabilidade com código não gerenciado, convenções de chamada incorretas em uma plataforma de invocar a causa de agora o aplicativo falhe. Nas versões anteriores, a camada de marshaling resolvido esses erros na pilha. |
Depuração de seus aplicativos em Microsoft Visual Studio 2010 irá alertá-lo para esses erros para que você poderá corrigi-los. Se você tiver os binários não podem ser atualizados, você pode incluir o <NetFx40_PInvokeStackResilience> elemento no arquivo de configuração do seu aplicativopara permitir que os erros de chamada ser resolvido na pilha, como nas versões anteriores. No entanto, isso pode afetar o desempenho do seu aplicativo. |
Interfaces removidos (API não gerenciada) |
Para evitar confusão de desenvolvedor, as seguintes interfaces foram removidas, porque eles não forneceu qualquer execução útil-situações de tempo e o CLR não fornecer ou aceitar quaisquer implementações:
|
Nenhum. |
Back to top
Data
Esta seção descreve os problemas de migração para o uso de conjuntos de dados e SQL de clientes, a Entity Framework, LINQ SQLe servidores de dados do WCF (antes conhecida como ADO.NET serviços de dados).
Conjunto de dados e o cliente SQL
A tabela a seguir descreve os aperfeiçoamentos aos recursos que possuíam limitações ou outros problemas.
Namespaces: System.Data, System.Data.Objects.DataClasses, System.Data.SqlClient; assemblies: System. Data (em System.Data.dll), System.Data.Entity (em System.Data.Entity.dll)
Feature |
Diferenças de 3.5 SP1 |
---|---|
POCO cenários |
O System.Data.Objects.DataClasses.IRelatedEnd interface tem novos métodos para melhorar a usabilidade em cenários de objeto antigo simples de CLR (POCO). Esses novos métodos levar uma Object em vez de um IEntityWithRelationshipsaentidade como um parâmetro. |
Edição de Linhas |
O IndexOf método, conforme implementado pelo DataView classe, agora corretamente retorna o valor de uma linha que está sendo editada, em vez de retornar -1. |
Events |
O DataRowView.PropertyChanged evento agora é gerado quando uma linha está em um estado modificado e o RejectChanges método é chamado. Essa alteração torna mais fácil para criar controles UI que expõem o conteúdo de um DataSet objeto. |
Exceptions |
O Preparelança dométodo agora um InvalidOperationException quando uma conexão não está definida ou em aberto em vez de um NullReferenceException. |
Modos de exibição de mapeamento |
Erros de mapeamento de exibição de consulta agora são detectados em tempo de design em vez de gerar uma NullReferenceException em tempo de execução. Mapeamento de validação agora captura o erro em que os dois conjuntos de associação no esquema conceitual (oCSDL) são mapeados para a mesma coluna. |
Transactions |
Se um aplicativo tenta executar uma demonstrativo em uma conexão após uma transação foi concluída (incluindo back anulado ou revertido), um InvalidOperationException é lançada agora. VersõesAnterior não foram uma exceção e permitem executar comandos adicionais, mesmo se uma transação foi anulada. |
Back to top
Entity Framework
A tabela a seguir descreve os aperfeiçoamentos aos recursos que possuíam limitações ou outros problemas.
Namespaces: System.Data, System.Data.Objects, System.Data.Objects.DataClasses; oassembly: System.Data.Entity (em System.Data.Entity.dll)
Feature |
Diferenças de 3.5 SP1 |
---|---|
Objetos de entidade |
Agora há paridade entre o ObjectContext.Detachmétodo e o estado doobjeto de entidadequando o ObjectContext.SaveChangesmétodo é chamado. Aprimorar a consistência impede que as exceções inesperadas de ser lançada. |
Entity SQL |
As regras foram aprimoradas para resoluções de identificador no Entity SQL. O analisador de Entity SQL melhorou a lógica para a resolução de identificadores de várias partes. |
Anotações estruturais |
O Entity Framework agora reconhece anotações estruturais. |
Queries |
Os seguintes aperfeiçoamentos foram feitos em consultas:
|
Back to top
LINQ to SQL
A tabela a seguir descreve os aperfeiçoamentos aos recursos que possuíam limitações ou outros problemas.
Namespace: System.Data.Linq; oassembly: System.Data.LINQ (em System.Data.Linq.dll)
Feature |
Diferenças de 3.5 SP1 |
---|---|
Events |
A System.Data.Linq.EntitySet<TEntity>gera agora decoleção de ListChangeddeevento para adicionar e remover operações se a EntitySet<TEntity> é descarregado, além de para disparar o evento quando o coleção é carregado. |
Queries |
Skip(0)não é ignorada no LINQ SQL consultas. Como resultado, os consultas que tenham esse método podem ter comportamentos diferentes. Por exemplo, em alguns casos, um OrderBy cláusula é necessária com Skip(0) e a consulta agora lançará um NotSupportedException exceção se a OrderBy cláusula não foi incluída. |
Back to top
WCF Data Services
A tabela a seguir descreve os aperfeiçoamentos aos recursos que possuíam limitações ou outros problemas.
Namespaces: System.Data.Services, System.Data.Services.Client, System.Data.Services.Common, System.Data.Services.Providers; assemblies: System.Data.Services (em System.Data.Services.dll), System.Data.Services.Client (em System.Data.Services.Client.dll)
Feature |
Diferenças de 3.5 SP1 |
---|---|
Conteúdo de binário em lote |
WCF Serviços de dados agora suporta em lote binário conteúdo em solicitações e respostas. |
Interceptadores deAlterar |
Agora, os interceptadores deAlterar são executados para umasolicitaçãode excluir. Um interceptador de alteração é um método que é executado sempre que uma solicitação é recebida pelo servidor para modificar uma entidade no conjunto de entidade . Ele é executado antes da execução da solicitação de entrada. O interceptador de alteração fornece acesso para a entidade que está sendo alterada e a operação que está sendo feita nele. |
Exceptions |
Agora, as seguintes condições lançam exceções mais útil em vez de um NullReferenceException:
Em seus aplicativos, você deve alterar para capturar novas exceções de manipulação de exceção . |
Cabeçalhos |
Os seguintes aperfeiçoamentos foram feitos para cabeçalhos:
|
Leitor JSON |
O leitor de JavaScript Object Notation (JSON) agora corretamente retornará um erro quando ele lê o caractere de escapeo único de barra invertida ("\"), quando ele processa cargas JSON, enviadas a um serviço de dados do WCF . |
Mesclagens |
Os seguintes aperfeiçoamentos foram feitos para o MergeOption enumeração:
|
Requests |
O DataService<T>.OnStartProcessingRequest método agora é chamado antes de uma solicitação de serviços de dados é processada. Isso permite que a solicitação funcionar corretamente para ServiceOperation services. |
Fluxos |
WCF Os serviços de dados não fecha a maior base de fluxo para leitura e operações de gravação. |
URIs |
A evasão de URIs pelo cliente de serviços de dados do WCF foi corrigida. |
Windows Communication Foundation (WCF)
A tabela a seguir descreve os aperfeiçoamentos aos recursos que possuíam limitações ou outros problemas.
Feature |
Diferenças de 3.5 SP1 |
---|---|
Arquivos de configuração |
Para habilitar a herança de comportamentos através da hierarquia de arquivo de configuração , o WCF agora suporta mesclando em arquivos de configuração . Agora, o modelo de herança de configuração é expandido para permitir que os usuários definem comportamentos que serão aplicadas a todos os serviços que são executados no computador. Você pode encontrar as alterações de comportamento se há comportamentos com o mesmo nome em diferentes níveis da hierarquia. |
Serviço de hospedagem |
Você não pode especificar o <serviceHostingEnvironment>o elemento deconfiguração no nível de serviço, adicionando o atributo allowDefinition="MachineToApplication" para a definição do elemento. Especificando o <serviceHostingEnvironment> é tecnicamente incorreto de elemento de nível de serviço e faz com que o comportamento inconsistente. |
Back to top
Windows Presentation Foundation (WPF)
Applications
Namespaces: System.Windows, System.Windows.Controls; oassembly: PresentationFramework (em PresentationFramework.dll)
Feature |
Diferenças de 3.5 SP1 |
Alterações recomendadas |
---|---|---|
Manipulação de exceção |
Para habilitar os erros sejam detectados anteriormente, o WPF lança um TargetInvocationException e define o InnerException propriedade exceções importantes, como NullReferenceException, OutOfMemoryException, StackOverflowException, e SecurityException, em vez de captura a exceçãooriginal. |
Nenhum. |
Recursos vinculados |
Para tornar mais fácil, e vinculação de recurso arquivos (como imagens) que estão localizados em um local diferente da pasta do projeto estrutura usam o recurso do arquivo caminho completo em vez de seu nome de arquivo como a identificação do recurso quando o aplicativo é construído. O aplicativo será capaz de localizar os arquivos em tempo de execução. |
Nenhum. |
Aplicativos de confiança parcial- |
As considerações de segurança aplicativos baseados no Windows-que são executados em parcial confiar e conter uma WebBrowser controle ou um Frame controle que contém HTML lançará um SecurityException quando o controle é criado. Aplicativos de navegador irá lançar uma exceção e exibir uma mensagem se todas as seguintes condições forem atendidas:
Observe que os aplicativos que são executados a partir de sites confiáveis ou da intranet, zona não serão afetados. |
Em seus aplicativos de navegador, você pode aliviar essa alteração seguindo um destes procedimentos:
|
Dicionários de recurso |
Para melhorar o tema-nível de dicionários de recurso e impedir que a alteração, freezable recursos que são definidos em um dicionário de recurso e mesclados em um tema-nível dicionário agora são sempre marcado como congelado e são imutável. Este é o comportamento esperado para recursos de freezable. |
Aplicativos que modificam o recurso é definido em um tema-nível dicionário mesclado deve o recurso de clonar e modificar a cópia clonada. Como alternativa, o recurso pode ser marcado x:Shared="false" para que o ResourceDictionary cria uma nova cópia sempre que o recurso é consultado. |
Windows 7 |
Para tornar WPF aplicativos funcionam melhor em Windows 7, os seguintes aperfeiçoamentos foram feitos para corrigir o comportamento de uma janela:
|
Nenhum. |
Estilo do Windows e transparência |
Um InvalidOperationException é lançada se você tentar definir WindowStyle para um valor diferente de None quando AllowsTransparency é true e WindowState é Minimized. |
Se você precisar alterar o WindowStyle quando AllowsTransparency é true, você pode chamar o Win32 SetWindowLongPtr função. |
Visualizador XPS |
WPF não inclui o Microsoft XML Papel especificação Essentials Pack (XPSEP). XPSEP está incluído no Windows 7 e o Windows Vista. Em um computador que esteja executando o Windows XP sem o .NET Framework 3.5 SP1 instalado, a impressão usando um WPF API diferentes daqueles em PrintDialog dependerão WINSPOOL. Alguns recursos de impressora não serão relatados e algumas configurações de impressora não serão aplicadas durante a impressão. |
Se necessário, instalar o Microsoft XML Papel especificação Essentials Pack. |
Back to top
Controls
Namespaces: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input; assemblies: PresentationFramework (em PresentationFramework.dll), PresentationCore (em PresentationCore. dll), WindowsBase (em WindowsBase. dll)
Feature |
Diferenças de 3.5 SP1 |
Alterações recomendadas |
---|---|---|
Dialog boxes |
Para melhorar a confiabilidade, o CommonDialog.ShowDialog método é chamado no mesmo thread que criou o Microsoft.Win32.FileDialog de controle. |
Certifique-se de criar um FileDialog de controle e chamar o ShowDialog método no mesmo thread. |
Janelas flutuantes |
Para corrigir a lógica de restauração de foco incorretamente mantém reativando flutuante janela (tornando aparecem como uma caixa de diálogode janela restrita), a restauração de foco agora é impedida se o candidato não é filho da janela. |
Nenhum. |
Itens nas coleções |
Quando um item é movido ou adicionado a uma coleçãode base, ela aparece na CollectionView no mesmo local relativo se a CollectionView não está classificada. Isso fornece consistência entre o itemda posição na coleção e a associada CollectionView. |
Use o ItemContainerGenerator.ContainerFromItem ou CollectionView.IndexOf método para encontrar o local de um item em um CollectionView em vez de depender de uma localização fixa de um item. |
Layouts |
Para eliminar desnecessários re-layouts, alterando a Page.ShowsNavigationUI não invalida o layout ou faz com que o outro pass. de layout |
Se você espera que a alteração de ShowsNavigationUI fará com que o outro layout passar, chamada UIElement.InvalidateVisual depois de definir a propriedade. |
Menus |
Para habilitar ClearType o texto no menu remover mais recente da pilha-ups, foram feitas modificações na ControlTemplate classe e o MenuItem controle e outros controles. |
Os aplicativos não devem depender da estrutura visual de modelos de controle. Chamado apenas de partes de um ControlTemplate fazem parte do contratopúblico. Se um aplicativo deve encontrar um determinado objeto em um ControlTemplate, pesquisar a árvore visual de um tipo específico em vez de depender de uma localização fixa de um objeto na árvore. |
Navegando |
Se um Frame diretamente navega para um local, o IsNavigationInitiatoré apropriedade true após a navegação inicial. Essa alteração impede que os eventos adicionais sendo levantada durante cenários de inicialização. |
Nenhum. |
Pop-de no-break |
O CustomPopupPlacementCallback representante agora pode ser chamado várias vezes durante uma passagem de layout em vez de apenas uma vez. |
Se seu CustomPopupPlacementCallback representante calcula a posição de um Popup com base na sua posição anterior, recalcular o apenas se posição valores da popupSize, targetSize, ou offset alteração de parâmetros. |
Property values |
O DependencyObject.SetCurrentValue método agora permite que você definir uma propriedade para um valor eficaz, embora ele continua respeita qualquer ligação, o estilo ou o disparar que afeta a propriedade. |
Os autores de controle devem usar SetCurrentValue sempre que o valor da propriedade é alterada como lado-efeito de alguma outra ação, incluindo manipulação de usuário . |
Caixas deTexto |
As considerações de segurança o TextBoxBase.Copy e TextBoxBase.Cut métodos silenciosamente falhar quando eles são chamados em confiança parcial . Além disso, a execução programática do ApplicationCommands.Copy ou ApplicationCommands.Cutdepropriedade em um controle que herda de TextBoxBase serão bloqueados em confiança parcial . No entanto, usuário-iniciada a copiar e recortar comandos, como, por exemplo, clicando em um botão cuja ButtonBase.Command propriedade é limite a um desses comandos, irá trabalhar. Padrão de copiar e recortar por meio de atalhos de teclado e omenu de contextocontinuarão a funcionar como antes em confiança parcial . |
Vincular a ApplicationCommands.Copy ou ApplicationCommands.Cut comando a um usuário-iniciou a ação, como, por exemplo, clicando em um botão. |
Back to top
Graphics
Namespaces: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input, System.Windows.Media.Effects; assemblies: PresentationFramework (em PresentationFramework.dll), PresentationCore (em PresentationCore. dll), WindowsBase (em WindowsBase. dll)
Feature |
Diferenças de 3.5 SP1 |
Alterações recomendadas |
---|---|---|
Bitmap effects |
Para melhorar o desempenho, a BitmapEffect classe e as classes que herdam a BitmapEffect classe, embora ainda estiver presente, são desabilitado. O efeito será processada usando o pipeline de renderização de acelerado-de hardware, se as seguintes condições forem verdadeiras:
Se essas condições não forem atendidas, uma BitmapEffectdeobjeto não terá efeito. Além disso, Visual Studio 2010 produzirá um aviso do compilador quando encontra a BitmapEffect objeto ou uma subclasse. O PushEffect método está marcado como obsoleto. |
Interromper o uso de legado BitmapEffect e classes derivadas e use as novas classes derivadas de Effect: BlurEffect, DropShadowEffect, and ShaderEffect. Você também pode criar seus próprios efeitos herdando o ShaderEffect classe. |
Quadros de bitmap. |
O clonado BitmapFrame objetos agora recebem o DownloadProgress, DownloadCompleted, e DownloadFailed eventos. Isso permite que imagens que são baixadas da Web e aplicadas ao Image controlam através de um Style funcione corretamente. Você verá uma alteração no comportamento somente se todas as instruções a seguir forem verdadeiras:
|
Verifique se o remetente no manipulador de evento e agir somente se o remetente é o original BitmapFrame. |
Decodificando imagens |
Para impedir que um IOException de não sendo tratado quando imagens não podem decodificar, o BitmapSourceclasse irá disparar o DecodeFaileddeevento quando ele não decodificar uma imagem. |
Remover qualquer exceção tratamento IOExceptione usar o DecodeFaileddeevento para verificar se há decodificar falha. |
Back to top
Input
Namespaces: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input; assemblies: PresentationFramework (em PresentationFramework.dll), PresentationCore (em PresentationCore. dll), WindowsBase (em WindowsBase. dll)
Feature |
Diferenças de 3.5 SP1 |
Alterações recomendadas |
---|---|---|
Instâncias do comando de ligação |
Para fornecer um mecanismo para vincular o modo de exibição-comando de modelo-com base em instâncias para o modo de exibição-de gestos de entrada, com base na InputBindingagora aclasse herda de Freezable em vez de DependencyObject. Agora, as seguintes propriedades são propriedades de dependência: Essa alteração resulta no seguinte:
|
Criar instâncias separadas de um deInputBindingclasse em threads separados, se as ligações são seja mutável ou congelar -los em qualquer outra forma. Modifica uma classe-nível estático InputBinding depois que tiver sido registrado. |
Aplicativos de navegador |
WPF Aplicativos de navegador (.XBAP) agora eventos dechave do processocomo espera-apenas aplicativos do WPF para que os objetos recebam os eventos roteados chave na ordem correta. |
Nenhum. |
Combinações de chave de inativa |
WPF ofusca teclas inativas, o que não produzir nenhum caractere visível, mas em vez disso, indica que a chave deve ser combinada com a próxima letra chave para produzir um caractere. A chave de entrada de eventos, como o KeyDownevento, o relatório quando uma chave é uma chave inativa por configuração o Keydepropriedade para o DeadCharProcessed valor. Isso geralmente comportamento é esperado porque aplicativos geralmente não pretendem responder à entrada de teclado que cria um caractere de combinado. |
Aplicativos que esperam para ler as chaves que faziam parte do caracteres combinados podem obter o agora ofuscados chave usando o DeadCharProcessedKey propriedade. |
Gerenciador de foco |
Quando o FocusManager.GetFocusedElementmétodo é passado a um elemento que tenha o IsFocusScopepropriedade anexada definida como true, o método retorna um elemento que é o último elemento de foco de teclado-dentro desse escopo do foco somente se o elemento retornado pertence ao mesmo PresentationSourceoobjeto como o elemento que é passado para o método. |
Nenhum. |
Back to top
UI Automation
Namespace: System.Windows, System.Windows.Automation.Peers, System.Windows.Automation.Provider, System.Windows.Controls, System.Windows.Data, System.Windows.Input; assemblies: PresentationFramework (em PresentationFramework.dll), PresentationCore (em PresentationCore. dll), UIAutomationProvider (em UIAutomationProvider), WindowsBase (em WindowsBase. dll)
Feature |
Diferenças de 3.5 SP1 |
Alterações recomendadas |
---|---|---|
Hierarquia de classes de modos de exibição |
O TreeViewAutomationPeer e TreeViewItemAutomationPeer classes herdar de ItemsControlAutomationPeer em vez de FrameworkElementAutomationPeer. |
Se você herdar de TreeViewItemAutomationPeer classes e substituir o GetChildrenCore método, considere a possibilidade de retornar um objeto que herda a nova TreeViewDataItemAutomationPeer classe. |
Contêineres fora da tela |
Para corrigir um valor retornadoincorreto, o UIElementAutomationPeer.IsOffscreenCorecorretamente ométodo agora retorna false para contêineres de item que serão rolados para fora do modo de exibição. Além disso, o valor do método não é afetado por oclusão outras janelas, ou se o elemento é visível em um monitor específico. |
Nenhum. |
Menus e os objetos filho |
Para habilitar a automação da interface do usuário dos menus que contêm os filhos diferente MenuItem objetos, o GetChildrenCoremétodo agora retorna o AutomationPeeroobjeto de um filhode UIElementobjeto, em vez de um MenuItemAutomationPeerobjeto. |
Nenhum. |
Interfaces deNovo e o assembly |
Para habilitar novos recursos de automação da interface do usuário, as seguintes interfaces foram adicionadas: |
Qualquer projeto que compila o WPF peers de automação deve adicionar uma referência explícita à UIAutomationProvider. |
Polegares |
O deGetClassNameCoremétodo retorna um valor em vez de null. Portanto, controla os controles, como GridSplitter que herdam a Thumb relatório |
Nenhum. |
Elementos virtualizados |
Para melhorar o desempenho, a UIElementAutomationPeer.GetChildrenCore método retorna apenas os objetos filho são na verdade no visual de árvore, em vez de todos os objetos filho , independentemente se eles são virtualizados. |
Use ItemContainerPattern para iterar sobre todos os itens de um ItemsControlAutomationPeer. |
Back to top
XAML
Namespaces: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input, System.Windows.Markup; assemblies: PresentationFramework (em PresentationFramework.dll), PresentationCore (em PresentationCore. dll), WindowsBase (em WindowsBase. dll)
Feature |
Diferenças de 3.5 SP1 |
Alterações recomendadas |
---|---|---|
Extensão de marcação |
WPF agora corretamente sempre usa o valor da MarkupExtension.ProvideValuemétodo em vez de retornar o MarkupExtensionoobjeto em determinados casos, quando umaextensão de marcaçãoé usada para definir uma propriedade ou para criar um item em uma coleção. Umaextensão de marcaçãopode retornar a mesmo em alguns casos. |
Se o seu aplicativo acessa um recurso retornado um MarkupExtensionoobjeto em versões anteriores, o objeto que é retornado a partir da referência ProvideValue, em vez da MarkupExtensionobjeto. |
Analisando atributos |
Atributos do XAML agora pode ter um único período. Por exemplo, a seguir é válido: <Button Background="Red"/>(há períodos) <Button Button.Background = "Red"/>(um ponto) A seguir não é mais válido: <Button Control.Button.Background = "Red"/>(mais de um período) |
Atributos corretos do XAML que têm mais de um período. |
Back to top
XML
As linhas nesta tabela descrevem aperfeiçoamentos aos recursos que possuíam limitações ou outros problemas.
Esquemas e transformações
Namespaces: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath; assemblies: System. XML (System.Xml.dll), System.Xml.Linq (em System.Xml.Linq.dll)
Feature |
Diferenças de 3.5 SP1 |
---|---|
Esquemas de Chameleon |
Para evitar a corrupção de dados, esquemas de chameleon são agora clonadas corretamente quando eles estão incluídos vários esquemas. Os esquemas de Chameleon são esquemas que não têm umnamespacede destinoe quando são incluídas no outro XSD, elas assumem onamespace do destinodo esquemade importação. Eles são usados para incluir os tipos comuns em um esquema. |
Funções de identificação |
O XSLT id de função agora retorna o valor correto em vez de nulo quando um XmlReader objeto é passado para um XSLT. Se o usuário criou uma XmlReaderobjeto a partir de uma LINQ de XMLclasse usando o CreateReadermétodoe isso XmlReaderobjeto foi passado para uma XSLT, quaisquer instâncias da idfunção XSLT anteriormente retornada nulo. Não é um valor retornado permitido para o id função. |
atributonamespace |
Para evitar a corrupção de dados, um XPathNavigator objeto agora retorna o nome local da x:xmlns atributo corretamente. |
Declarações de namespace |
Um XmlReaderoobjeto em uma sub -árvore não cria declarações de namespace de duplicado dentro de um elemento XML . |
validaçãode esquema |
Para evitar errôneo esquemadevalidação, o XmlSchemaSetclasse permite a esquemas XSD ser compilado corretamente e consistente. Esses esquemas podem incluir outros esquemas; Por exemplo, A.xsd pode incluir B.xsd, que pode incluir C.xsd. Compilar este gráfico das dependências de ser percorrida a qualquer uma dessas causas. |
Funções de script |
O função-disponível função retorna não mais incorretamente false quando a função está realmente disponível. |
URIs |
O XElement.Load método agora retorna o BaseURI correto em consultas LINQ . |
Back to top
Validation
Namespaces: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath; assemblies: System. XML (System.Xml.dll), System.Xml.Linq (em System.Xml.Linq.dll)
Feature |
Diferenças de 3.5 SP1 |
---|---|
Resolvedores de namespace |
O XmlReader.ReadContentAs método não ignora o IXmlNamespaceResolver resolvedor passado para o proprietário. Nas versões anteriores, o resolvedor especificado namespace foi ignorado e o XmlReader foi usado. |
Espaço em branco |
Para evitar a perda de dados quando você estiver criando um leitor, o XmlReader.Create método não descarta significativa de espaço em branco. XMLvalidação reconhece misto-modo deconteúdo , onde o texto pode ser combinado commarcaçãode XML. No modo misto, todo o espaço em branco é significativa e deve ser relatado. |
Back to top
Escrita
Namespaces: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath; assemblies: System. XML (System.Xml.dll), System.Xml.Linq (em System.Xml.Linq.dll)
Feature |
Diferenças de 3.5 SP1 |
---|---|
Referências de entidade |
Para evitar a corrupção de dados, referências de entidade não são sem entidades duas vezes em atributos XML . Se o usuário tentou gravar uma entidade em um xmlns atributo ou em um xml:lang ou xml:space atributo usando o WriteEntityRef método, a entidade foi sem entidades duas vezes na saída, portanto, corrompendo os dados. |
Novomanipulação delinha |
Para evitar a corrupção de dados, XmlWriter objetos a respeito do None opção. |
Back to top
Consulte também
Conceitos
O que há de novo no .NET Framework 4
Migrando soluções do Office para o.NET Framework 4
Outros recursos
Guia de migração do .NET Framework 4
Compatibilidade de versão no .NET Framework
O que está obsoleto no .NET Framework
Novos tipos e membros no .NET Framework 4
Problemas de migração para.NET Framework 4 Applications: Beta 2 para a RTM
Histórico de alterações
Date |
History |
Motivo |
---|---|---|
Agosto de 2010 |
Questões adicionais sobre controles de hospedagem no navegador da Web , classes de compilador e CodeDOM e o Visualizador do cache global de assembly . |
Aprimoramento de informações. |