Pergunta

Eu estou trabalhando em um projeto de C ++ que eu não pretende desenvolver ou implantar usando .NET bibliotecas ou ferramentas, o que significa que faria sentido para mim para criá-lo usando um aplicativo Visual Studio Win32 Console. No entanto, eu ouvi que as habilidades de depuração ao usar um aplicativo CLR em Visual Studio são muito mais poderoso. Então, eu tenho algumas perguntas:

  1. É verdade que ter um aplicativo vs. um aplicativo CLR Win32 adiciona capacidades ao seu processo de desenvolvimento, mesmo se você não utilizar qualquer .NET bibliotecas ou outros recursos?

  2. Se assim for, eu ainda vou ser capaz de desenvolver / compilar o projeto como um projeto CLR para aproveitar estes, embora eu estaria desenvolvendo um puro C ++ projeto usando STL, etc. e não aproveitando qualquer funcionalidade .NET? Ou será que um projeto como este exigem diferenças fundamentais que tornam não-trivial para voltar, o que significa que eu deveria ficar com um aplicativo de console do Win32?

Foi útil?

Solução

resposta Bottom line, se você nunca está pretendendo usar o CLR ou qualquer objetos .NET em seu aplicativo, basta usar uma biblioteca normal de Win32 C ++. Fazer qualquer outra coisa vai causar-lhe dor abaixo da estrada.

Agora, para responder à pergunta original sobre a depuração, sim depuração com o CLR tem certas vantagens sobre a depuração de um aplicativo normal de C ++. Começando com Visual Studio 2005, C # e VB.Net começou a se concentrar em fazer a exibição variável na janela locals / automóveis / relógio muito mais valioso. foi feito principalmente através da introdução de .Net atributos como DebuggerDisplay, DebuggerTypeProxy eo quadro visualizador.

Se você não usar quaisquer tipos .Net, porém, você vai ter nenhum desses benefícios.

A C ++ avaliador de expressão não tirar partido de qualquer destes. Ele tem seu próprio método de personalização de exibição tipo. Mas não é tão featureful (ou potencialmente perigosos) como o estilo atributo porque não permite a execução de código no processo debugee.

Isso não quer dizer que a depuração C ++ fornece uma experiência pobre. É apenas diferente e há melhores displays para muitos tipos de contêineres STL.

Depuração de um aplicativo CLR também tem certas disadvantegs. Por exemplo, a depuração de código otimizado é quase impossível às vezes porque o JITer vai esconder as variáveis ??locais, parâmetros e muitas vezes "isto". Depurar um aplicativo C ++ semelhante construído também pode ser frustrante, mas você sempre pode pegar os registos e dissamebly para ver o que está acontecendo. Fazendo o mesmo para um aplicativo CLR é difícil na melhor das hipóteses.

Outras dicas

Eu acho que a compilação de código nativo C ++ em CLR abre uma lata de vermes. A menos que você tem grande investimento em código existente C ++ e alguns necessidade de executar o código com tipos gerenciados, isso é algo que você quer evitar.

Por exemplo, C ++ / CLI é uma maneira de agrupar C ++ nativo certo código em um CLR assembly, mas C ++ / CLI soma sintaxe não-padrão para a linguagem C ++, e usando C ++ nativo tipos misturados com tipos gerenciados parece muito complicado questão para dizer o mínimo.

Assim, em conclusão, gostaria apenas de mantê-lo como um aplicativo nativo. Se você tem qualquer plano de portá-la para CLR e você acabou de começar a trabalhar neste projecto, eu pensaria seriamente em começar a escrever em uma linguagem CLR nativo como C #.

Esta resposta copiado a partir daqui - http://social.msdn.microsoft.com/Forums/vstudio/en-US/895ecb47-8b34-4a1a-a20b- fda1e5e576eb / o que está-the-diferença, entre-clr-consola-application-e-win32-consola-aplicação

Qual é a diferença entre a aplicação consola CLR e aplicação de consola Win32? - Os antigos usos Common Language Runtime (em outras palavras, .NET framework); este último não faz.

e eu não posso usar namespace System sob o modelo win32 aplicativo console. -. Namespace System é parte do .NET framework

O que devo fazer quando eu quiser usar o namespace? -. Você deve escrever um aplicativo .NET

e não que ela tem dica de entrada, como em C # modelo? - Há de fato não IntelliSense para C ++ / CLI nas versões existentes do Visual Studio. Se você quiser um aplicativo .NET, C # pode ser uma melhor opção de idioma.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top