Compartilhar via


Programação do .NET com C++/CLI

Importante

O C++/CLI é uma tecnologia projetada durante os primeiros anos do .NET (2003-2010) e continua com suporte para fins de compatibilidade. Ele é mais adequado para as bases de código existentes, particularmente aquelas que estão sendo trazidas do .NET Framework para o .NET Core, ou para manter grandes sistemas herdados que são improváveis de evoluir além do .NET Framework.

Embora o C++/CLI seja confiável e robusto, nenhum novo trabalho de recurso é planejado além do necessário para garantir a funcionalidade contínua. Os desenvolvedores devem estar cientes de que o uso do C++/CLI pessimiza as linguagens C++ e .NET, pois ela é restrita pelos recursos de linguagem e apIs disponíveis no momento de seu design, ou seja, antes do ISO C++11 e do .NET Core. O C++/CLI foi projetado com base no C++98 e seu padrão ECMA não foi atualizado para acompanhar os padrões C++ mais recentes desde C++11. Embora alguns recursos no C++11 tenham sido incorporados, muitos recursos de padrões mais recentes, como C++20 e C++23, não têm suporte direto no C++/CLI para compilação para código gerenciado. Para obter mais informações, consulte C++20 Support Comes to C++/CLI.

Para novos projetos, recomendamos explorar alternativas modernas de terceiros, como https://github.com/dotnet/ClangSharp ou https://www.swig.org/, que oferecem mais flexibilidade e melhor alinhamento com os recursos atuais de linguagem e runtime.

C++/CLI suplantou o C++Gerenciado. C++/CLI é uma especificação de idioma criada pela Microsoft que estende o C++ para dar suporte ao .NET. Ele só tem suporte no Windows. Não é para escrever aplicativos WinUI ou Universal Windows Platform UWP Windows Runtime (WinRT). É para escrever aplicativos .NET e componentes que são executados no .NET. C++/CLI é uma ponte entre código C++ nativo e código gerenciado. Ele permite que você use bibliotecas C++ existentes em aplicativos .NET e escreva novos aplicativos .NET no C++.

A Microsoft fornece C++/WinRT para escrever aplicativos WinUI e WinRT. É uma projeção de linguagem C++17 totalmente padrão para APIs do WinRT (Windows Runtime). Para obter mais informações sobre como usar O C++ com o WinRT (Windows Runtime), consulte C++/WinRT.

Por padrão, os projetos CLR criados com o Visual Studio 2015 têm como destino o .NET Framework 4.5.2. Você pode ter como destino o .NET Framework 4.6 ao criar um projeto. Na caixa de diálogo Novo Projeto, altere a estrutura de destino na lista suspensa, na metade superior da caixa de diálogo. Para alterar a estrutura de destino de um projeto existente, feche o projeto, edite o arquivo do projeto (.vcxproj) e altere o valor da Versão do Framework de Destino para 4.6. As alterações entrarão em vigor na próxima vez que você abrir o projeto.

No Visual Studio 2017, o destino padrão do .NET Framework é o 4.6.1. O seletor de versão do Framework está na parte inferior da caixa de diálogo Novo Projeto.

Instalar o suporte para C++/CLI no Visual Studio 2017

O C++/CLI não é instalado por padrão ao instalar uma carga de trabalho do Visual Studio C++. Para instalar o componente após a instalação do Visual Studio, abra a Instalador do Visual Studio selecionando o menu Iniciar do Windows e procurando o instalador do Visual Studio. Selecione o botão Modificar, ao lado da versão instalada do Visual Studio. Selecione a guia Componentes individuais. Role para baixo até a seção Compiladores, ferramentas de build e tempos de execução e selecione o Suporte para C++/CLI. Selecione Modificar para baixar os arquivos necessários e atualizar o Visual Studio.

No Visual Studio 2019, a estrutura de destino padrão para projetos do .NET Core é 5.0. Para projetos do .NET Frameworks, o padrão é 4.7.2. O seletor de versão do .NET Framework está na página Configure seu novo projeto da caixa de diálogo Criar um novo projeto.

Instalar o suporte para C++/CLI no Visual Studio 2019

O C++/CLI não é instalado por padrão ao instalar uma carga de trabalho do Visual Studio C++. Para instalar o componente após a instalação do Visual Studio, abra a Instalador do Visual Studio selecionando o menu Iniciar do Windows e procurando o instalador do Visual Studio. Selecione o botão Modificar, ao lado da versão instalada do Visual Studio. Selecione a guia Componentes individuais. Role para baixo até a seção Compiladores, ferramentas de build e tempos de execução e selecione Suporte para C++/CLI das ferramentas de build v.142 (mais recente). Selecione Modificar para baixar os arquivos necessários e atualizar o Visual Studio.

No Visual Studio 2022, a estrutura de destino padrão para projetos do .NET Core é 6.0. Para projetos do .NET Frameworks, o padrão é 4.7.2. O seletor de versão do .NET Framework está na página Configure seu novo projeto da caixa de diálogo Criar um novo projeto.

Instalar o suporte para C++/CLI no Visual Studio 2022

O C++/CLI não é instalado por padrão ao instalar uma carga de trabalho do Visual Studio C++. Para instalar o componente após a instalação do Visual Studio, abra a Instalador do Visual Studio selecionando o menu Iniciar do Windows e procurando o instalador do Visual Studio. Selecione o botão Modificar, ao lado da versão instalada do Visual Studio. Selecione a guia Componentes individuais. Role para baixo até a seção Compiladores, ferramentas de build e tempos de execução e selecione o Suporte para C++/CLI nas ferramentas de build v.143 (mais recente). Selecione Modificar para baixar os arquivos necessários e atualizar o Visual Studio.

Nesta seção

Tarefas do C++/CLI
Interoperabilidade nativa e .NET
Código puro e verificável (C++/CLI)
Expressões regulares (C++/CLI)
Tratamento de arquivos e E/S (C++/CLI)
Operações de gráficos (C++/CLI)
Operações do Windows (C++/CLI)
Acesso a dados usando ADO.NET (C++/CLI)
Interoperabilidade com outras linguagens .NET (C++/CLI)
Serialização (C++/CLI)
Tipos gerenciados (C++/CLI)
Reflexão (C++/CLI)
Assemblies de nome forte (assinatura de assembly) (C++/CLI)
Classe Debug (C++/CLI)
Referência da biblioteca STL/CLR
Biblioteca de suporte C++
Exceções em C++/CLI
Conversão boxing (C++/CLI)

Confira também

Interoperabilidade nativa e .NET