Alterações de produto: O Visual C++ .NET 2003
Observação: |
---|
Alguns recursos mencionados neste tópico talvez ainda não existir no versão corrente do Visual C++.Para obter mais informações, consulte Alterações no Visual C++ 2005 e edições anteriores. |
Microsoft Visual C++ .NET 2003 oferece vários aprimoramentos e vários recursos novos:
O compilador Visual C++, linguagem e vinculador
Bibliotecas Visual C++
Ambiente de Desenvolvimento
Designer de Formulários do Windows para extensões gerenciadas para C++
Modelo de projeto compilação automação
O compilador Visual C++, linguagem e vinculador
O compilador a seguir, vinculador, outras ferramentas de construção e recursos de linguagem do Visual C++ são novidades para Visual C++ .NET 2003.
Compilador
Informações sobre como executar um gerenciado Extensions para C++ aplicativo criado com compilador a versão corrente em uma versão anterior do tempo de execução.
Foi adicionada uma explicação passo a passo, mostrando como portar um aplicativo nativo existente para usar o gerenciado Extensions para C++: Demonstra Passo a passo: Portar um aplicativo C++ nativo existente para interopere com o .NET estrutura Components
Agora você pode criar um delegado em um método de um tipo de valor.
Conformidade do compilador com o padrão C++ foi avançado significativamente para o Visual C++ .NET 2003.
/arch opção do compilador é adicionada.
/Gf é desaprovada e será removido na próxima versão do Visual C++.
/ G7opção do compilador é adicionada.
The /GS opção do compilador foi avançado para ajudar a proteger as variáveis locais de saturações de buffer direto.
The /noBoolopção do compilador foi removida.Agora, o compilador permite bool apareça somente sistema autônomo uma palavra-chave (e não um identificador) em um arquivo de código-fonte Visual C++.
O longo longo tipo agora está disponível sistema autônomo um typedef de __int64. Observe que não existe ainda suporte a longa longo no CRT.
The /Zm Agora opção do compilador Especifica o limite de alocação de memória de cabeçalho pré-compilado.
_InterlockedCompareExchange Agora intrínseca documentados.
_InterlockedDecrement Agora intrínseca documentados.
_InterlockedExchange Agora intrínseca documentados.
_InterlockedExchangeAdd Agora intrínseca documentados.
_InterlockedIncrement Agora intrínseca documentados.
_ReadWriteBarrier adicionado intrínseca.
Atributos do Visual C++
- implementa atributo agora está documentado.
Vinculador
As opções do vinculador a seguir foram adicionadas:
/ASSEMBLYDEBUG
/ ASSEMBLYLINKRESOURCE
/ DELAYSIGN
/ KEYFILE
/KEYCONTAINER
/ SAFESEH
Pré-processador
O símbolo _STATIC_CPPLIB agora está documentado para uso com /MD.
O símbolo _CPPLIB_VER agora está documentado.
The #import diretiva agora tem os seguintes atributos documentados:
auto_search
auto_rename
no_search_namespace
rename_search_namespace
tlbid
MASM
The .SAFESEH opção ml.exe diretiva e /safeseh foram adicionados.
Bibliotecas Visual C++
Antigo iostream biblioteca
A Biblioteca iostream antiga foi removida do Visual C++ nesta versão.Use a biblioteca C++ padrão para programação iostream.
Biblioteca de time de execução do c
A documentação do C em tempo de execução biblioteca agora inclui informações para equivalentes no .NET estrutura.
_get_heap_handle foi adicionado.
A macro _CRTDBG_CHECK_DEFAULT_DF, usada em _CrtSetDbgFlag Agora é definido como zero, o que significa que nenhuma verificação de heap é feita por padrão.
swprintf Agora é compatível com o ISO C padrão (C++).
vswprintf agora tem um formulário somente C++ que permite que você especifique o número máximo de caracteres para armazenar.
Para várias das funções multibyte, sistema autônomo a _mbsset, a CRT não foi sempre detectando inválidas seqüências de caracteres multibyte, onde um byte inicial deve ser seguido por um valor nulo byte final. A CRT agora tem mais verificações de caracteres multibyte inválidos, onde um byte inicial é seguido por um byte nulo trilha.
_set_purecall_handler foi adicionado.
Anteriormente, quando um processo de carregar uma DLL referenciados estaticamente da biblioteca CRT, ponto flutuante de precisão deve ser inicializada a 53 bits.No Visual C++ .NET 2003, ponto flutuante de precisão não foi inicializada neste cenário.Isso pode causar uma alterar significativa em alguns aplicativos existentes que dependia do CRT inicializar ponto flutuante de precisão.
A CRT agora tem float e double formulários para todas as funções de matemática.Essas novas funções são apenas podem ser chamadas do Visual C++.
Biblioteca C++ padrão
Em versões anteriores, entrada e saída de caracteres para um fluxo podem resultaram em caractere ou unsigned short valores que estão sendo armazenados se wchar_t não foi definido sistema autônomo um tipo nativo. Agora, um unsigned short sempre é tratado sistema autônomo um caractere.
No Visual C++ .NET 2003, os membros do <hash_map> e arquivos de cabeçalho <hash_set> não estão no namespace std, mas em vez disso, foram movidos para o namespace stdext.
A biblioteca C++ padrão foi atualizada para usufruir o suporte de compilador Visual C++ avançado para o C++ padrão.Por exemplo, a implementação da biblioteca C++ padrão de entrega no Visual C++ agora faz usar de especialização de modelo parcial.
ATL
- No Visual Studio .NET 2003, o compilador MIDL tem uma configuração padrão de / robusto, que faz com que os projetos em execução no Windows NT 4 pare de responder.
Para alterar o sinalizar de compilador MIDL para /no_robust
clicar com o botão direito do mouse em seu projeto e no menu de atalho, clique em Propriedades.
The Propriedades do projeto caixa de diálogo é exibida.
No painel esquerdo, clicar MIDLe, em seguida, selecionar Linha de comando.
Digite /no_robust in the Opções adicionais caixa de texto.
A ATL string conversão de macro USES_CONVERSION foi substituído por USES_CONVERSION_EX.Ele tentará alocar espaço na pilha.Se não houver nenhuma sala disponível na pilha, ele tentará a heap.Se não houver nenhuma sala na pilha, ela retornará NULO.USES_CONVERSION_EX tem um parâmetro extra (limite) que você pode usar: Se a solicitação for maior do que o dimensionar de limite, a macro irão para o heap diretamente.
_alloca Ele foi substituído pelo _atl_safe_alloca.
A classe Classe CSocketAddr foi adicionado para fornecer protocolo independentes métodos para lidar com endereços IPv6 e IPv4.
Ao criar um projeto que produz um executável, o ATL adiciona automaticamente entre aspas o nome do caminho criado em time de execução com o MÓDULO % parâmetro do script de registrador.Não o nome do caminho para incluir as aspas, use o novo % MODULE_RAW % parâmetro em vez disso.
Ao criar um projeto que produz uma DLL, ATL não adicionará aspas para o nome do caminho se MÓDULO % or % MODULE_RAW % é usado.
MFC
Mapas de conexão não são compactados quando um ponto de conexão é excluído; em vez disso, o ponto de conexão excluído é substituído com um nulo.Portanto, você deve verificar para nulo ao usar CConnectionPoint::GetConnections ou CConnectionPoint::GetNextConnection.
As seguintes funções agora podem lançar exceções: CSimpleString::FreeExtra, CSimpleString::GetAt, [] CSimpleString::operador, CSimpleString::ReleaseBuffer, CSimpleString::ReleaseBufferSetLength, CStrBuf::SetLength, and some CTime::CTime construtores.
Os comportamentos de AfxIsValidAddress e AfxIsValidString foram alteradas. Em compilações de depurar não, as duas funções testam apenas um argumento que não seja nula.
CHeaderCtrl::GetOrderArray não tem um padrão segundo parâmetro; -1 não é um valor válido para o segundo parâmetro.
CAsyncSocket possui novos membros compatível com IPv6: GetPeerNameEx, GetSockNameEx, ReceiveFromEx, e SendToEx.
ATL e MFC
The CImage classe agora mantém o registro do número de objetos criados. Sempre que a contagem chega a 0, a função GdiplusShutdown é chamado automaticamente para versão recursos utilizados pelo GDI +.Isso impede que recursos não estão sendo liberado quando CImage os objetos são criados por uma DLL.
O MFC CString classe foi reescrita sistema autônomo uma classe de modelo CStringT. Isso permite que você use CString em projetos ATL sem criar links no maior biblioteca estática do MFC ou DLL.
Observação: Esta versão corrige o problema descrito no artigo da Base de dados de Conhecimento, "PRB: Vinculando erros ao importar CString -Derivadas de classes "(Q309801).Você encontrará artigos da Base de dados de Conhecimento no CD-ROM Biblioteca MSDN ou em http://suporte.Microsoft.com/padrão.aspx.Se você encontrou erros do vinculador ao exportar um CString-derivado de classe de uma extensão do MFC DLL em Visual C++ .NET 2002 e aplique a solução descrita neste artigo, você deve remover o código para solucionar esse problema, porque o problema foi corrigido no Visual C++ .NET 2003.
CStrBufT e CSimpleStringT agora tem um parâmetro de modelo adicional que informa se CString deve ser usada da DLL do MFC. Use typedef encontrado no CStringT ou CSimpleStringT classe de atlsimplstr.h (em vez de typedef global).
Servidor ATL
Em um serviço Web XML criado com o servidor ATL, a ação padrão é validar parâmetros de SOAP depois que eles são lidos.Para desativar a validação, defina a macro _ATL_SOAP_NO_PARAMETER_VALIDATIONS.
Agora pode SPROXY.EXE processo um arquivo .discomap ou um arquivo .wsdl.Especifique o novo /wsdl Quando você usa um arquivo .wsdl sistema autônomo a entrada de opção:
sproxy /wsdl <input_location>
em que <input_location> é o caminho do arquivo .wsdl para usar.
SPROXY.EXE agora pode processar um arquivo resultados.discomap:
sproxy results.discomap
Observe que o arquivo .discomap contém um link para uma cópia local do arquivo .wsdl e também usa uma cópia local do arquivo de esquema.
Ambiente de Desenvolvimento
Observação: |
---|
Alguns recursos mencionados neste tópico talvez ainda não existir no versão corrente do Visual C++.F ou para obter mais informações, consulte Alterações no Visual C++ 2005 e edições anteriores. |
Quando você abre um projeto Visual C++ do Visual Studio .NET no Visual C++ .NET 2003, o arquivo de projeto antigo será renomeado e será criado um novo arquivo de projeto para o ambiente do Visual C++ .NET 2003.
O formato de um arquivo .vcproj agora está documentado.
Os seguintes novos recursos estiver no ambiente de desenvolvimento:
(WebDeployPath) $, $ (WebDeployRoot), $ (ParentName), $ (RootNameSpace), $ (SafeParentName) e $(SafeInputName) macros foram adicionadas.
Agora é possível criar um projeto sem criar qualquer um dos projetos projetos dependentes.
gerenciado Extensions para C++ projeto Templates
Esta versão inclui vários novos modelos de projeto que você pode usar para criar aplicativos em gerenciado Extensions para C++:
Biblioteca de controles do Windows (. NET)
Windows Forms aplicativo (. NET)
Serviço do Windows (. NET)
Além disso, os modelos para projetos gerenciado no Visual C++ .NET 2002, foram renomeados para esta versão:
Aplicativo de C++ gerenciado agora é chamado de Aplicativo de console (. NET)
biblioteca de classes do C++ gerenciado agora é chamado de biblioteca de classes (. NET)
Projeto vazio de C++ gerenciado agora é chamado de Projeto vazio (. NET)
serviço Web do C++ gerenciado agora é chamado de serviço Web do ASP.NET
Designer de Formulários do Windows para extensões gerenciadas para C++
Com a adição de Designer de Formulários do Windows para esta versão, Visual C++ apresenta uma solução de método RAD para a criação de seus aplicativos Windows Forms no gerenciado Extensions para C++.
Esse recurso inclui suporte completo do Gerenciador de Servidores, que permite arrastar e soltar, ou recortar e colar, controles e componentes diretamente em seu aplicativo Windows Forms e caixa de ferramentas.Além disso, você pode com com facilidade manipular as propriedades de seus controles e componentes por meio de propriedade grade.
Modelo de projeto compilação automação
O Visual C++ .NET oferece novas páginas de propriedade e um número de novos objetos, bem sistema autônomo novas propriedades e métodos para objetos existentes que aperfeiçoam o modelo de compilação do projeto.
Novas páginas de propriedade
Recursos gerenciado página de propriedades
Ferramenta de gerador de dados XML página de propriedades
Página propriedade wrapper gerenciado
Auxiliar gerenciado página de propriedades de conteúdo adicional
Novos objetos
VCALinkTool Objeto
VCActiveXReference Objeto
VCAssemblyReference Objeto
VCAuxiliaryManagedWrapperGeneratorTool Objeto
VCManagedResourceCompilerTool Objeto
VCManagedWrapperGeneratorTool Objeto
VCPrimaryInteropTool Objeto
VCProjectReference Objeto
VCReference Objeto
VCReferences Coleção
VCReferenceConfiguration Objeto
VCXMLDataGeneratorTool Objeto
Membros novos ou alterados para objetos existentes
Vários novas ou atualizadas propriedades e métodos foram adicionados a objetos existentes.Observe que sistema autônomo alterações podem abranger várias coisas, sistema autônomo uma assinatura atualizada ou a adição de novos membros.
Objeto |
Membro novo ou alterado |
---|---|
VCCLCompilerTool Objeto |
Propriedade de EnableEnhancedInstructionSet |
|
Propriedade de ToolKind |
VCLinkerTool Objeto |
Propriedade de FixedBaseAddress |
|
Propriedade de ToolKind |
VCLibrarianTool Objeto |
Propriedade de ToolKind |
VCCustomBuildTool Objeto |
Propriedade de ToolKind |
VCMidlTool Objeto |
Propriedade de ToolKind |
VCResourceCompilerTool Objeto |
Propriedade de ToolKind |
VCPreBuildEventTool Objeto |
Propriedade de ToolKind |
VCPreLinkEventTool Objeto |
Propriedade de ToolKind |
VCPostBuildEventTool Objeto |
Propriedade de ToolKind |
VCBscMakeTool Objeto |
Propriedade de ToolKind |
VCNMakeTool Objeto |
Propriedade de ToolKind |
VCWebServiceProxyGeneratorTool Objeto |
Namespace Propriedade (VCProjectEngine) |
|
Referências Propriedade |
|
Propriedade de ToolKind |
VCWebDeploymentTool Objeto |
Propriedade de ToolKind |
VCProject Objeto |
AddAssemblyReference Método |
|
AddActiveXReference Método |
|
AddProjectReference Método |
|
CanAddAssemblyReference Método |
|
CanAddActiveXReference Método |
|
CanAddProjectReference Método |
|
Propriedade de Object |
|
Referências Propriedade |
|
Propriedade de ReferencesConsumableByDesigners |
|
RemoveReference Método |
|
Propriedade de RootNamespace |
|
Propriedade de VCReferences |
VCFile Objeto |
AddFile Método |
|
CanAddFile Método |
|
FileType Propriedade |
|
Itens Propriedade |
|
Propriedade de Object |
|
RemoveFile Método |
VCFilter Objeto |
Propriedade de Object |
VCConfiguration Objeto |
Propriedade de FullReferencesPath |
|
Propriedade de ReferencesPath |
|
Propriedade de ReferenceTools |
|
Propriedade de SatelliteDLLs |
|
StopBuild Método |
|
Propriedade de StyleSheets |
VCStyleSheet Objeto |
Propriedade de FullReferencesPath |
|
Propriedade de ReferencesPath |
|
Propriedade de ReferenceTools |
|
Propriedade de StyleSheetDirectory |
|
Propriedade de StyleSheetName |
VCFileConfiguration Objeto |
Propriedade de ProjectConfiguration |
|
Compilar Método |
|
Propriedade de OutputUpToDate |
VCProjectEngine Objeto |
Propriedade de ShowEnvironmentInBuildLog |