Alterar o projeto C ++ / CLI para outra estrutura que não a 4.0 com vs2010

Desde que atualizei meu projeto para o formato de projeto do visual studio 2010, meu projeto C ++ / CLI é voltado para o .net framework 4.0.

É fácil mudar a versão do framework para outra versão a partir de um projeto em C #, mas não tenho idéia de como fazer isso em um projeto C ++ / CLI, não vejo nenhuma configuração para isso nas páginas de propriedades do projeto.

Isso aparece quando você pressiona F1 na checkbox de diálogo Framework and References:

Por padrão, para novos projetos, a estrutura de destino é definida como .NET Framework 4. O IDE não oferece suporte à modificação da estrutura de destino, mas você pode alterá-la manualmente. No arquivo de projeto (.vcxproj), a estrutura de destino padrão é representada pelo elemento de propriedade v4.0. Para alterar a estrutura de destino, descarregar o projeto, use um editor de texto para abrir o arquivo de projeto e, em seguida, altere o valor do elemento de propriedade da v4.0 para outra versão instalada no servidor. Por exemplo, se você especificar v3.5, que representa o .NET Framework v3.5, o Visual Studio 2008 SP1 deverá ser instalado . Salve e feche o arquivo, recarregue o projeto e verifique se a estrutura de destino é exibida na página de propriedades. *

Isso não é muito preciso em projetos convertidos, você terá que adicionar o elemento . Coloque-o no PropertyGroup chamado “Globals”:

   v3.5   

A história é diferente quando você usa VS2012 e acima, a primeira versão do VS que adquiriu a configuração do Conjunto de Ferramentas da Plataforma na página de propriedades Geral. Você deve então selecionar “v90” para obter uma compilation adequada que tenha como alvo 3.5. No entanto, é desajeitado, você deve ter todas as versões intermediárias do VS instaladas na máquina para ter essa seleção disponível.

Por que você precisa que o VS2008 instalado exija uma explicação por si só. O principal problema é que a biblioteca de tempo de execução C (msvcrt100.dll e superior) contém o código .NET para suportar a execução de código gerenciado. O detalhe crucial é um inicializador de módulo que garante que o CRT seja inicializado corretamente no programa que usa o código C ++ / CLI. Esse código sempre tem como alvo o .NET 4 e, como é hard-baked em msvcrt100.dll (e acima), você sempre tem uma dependência muito rígida do tempo de execução v4.0.30319. Você só pode ter uma dependência v2.0.50727 pura quando você usa o antigo runtime C, msvcrt90.dll. Você só pode ter certeza de que você tem uma dependência msvcrt90.dll ao usar os arquivos #include do VS2008 do compilador.

Fato duro que é bastante necessário para mover para o .NET 4 em breve, você vai lutar com problemas de construção como este, se você não fizer isso. Existem muito poucos obstáculos práticos para isso, o .NET 4 está amplamente disponível gratuitamente em todos os alvos que você imagina. Superar o FUD associado à mudança para uma versão de tempo de execução mais alta geralmente é apenas o problema real. Não há motivos para medo e dúvida, é estável.

Sim, é possível alterar o destino mesmo para projetos gerenciados em C ++:

Alterando o .NET Framework de destino para C ++ / CLI (VS 2010) Para alterar a versão do .NET Framework para projetos de C ++ / CLI (VS 2010)

Clique com o botão direito no projeto no Solution Explorer e clique em Unload project Clique com o botão direito no projeto descarregado no Solution Explorer e selecione Edit .vcxproj No arquivo XML do projeto locate node Nesse nó localize o nó ( se o nó não puder ser encontrado, adicione-o) O texto interno do nó define a estrutura de destino. Pode ser v2.0, v3.0, v3.5 ou v4.0 Salve o arquivo vcxproj e feche-o Clique com o botão direito no projeto descarregado no Solution Explorer e clique em Recarregar o exemplo do projeto v3.5

Nota: Essas etapas se aplicam apenas ao Visual Studio 2010, pois ele usa o novo formato de arquivos de projeto C ++.

Fonte no MSDN: Como: Alterar o .NET Framework de destino

por um usuário anônimo:

(Editar como eu sou um novo usuário e não posso responder a isso, quem vê isso sinta-se livre para enviar o seguinte) Alterar o Toolset para v100 realmente faz com que o VS2010 tenha como alvo o .NET 4.0, mesmo que ele ainda apareça como 3.5 no propriedades do projeto. VS2010 deve realmente cuspir um aviso sobre isso, porque atualmente parece que você pode direcionar o .NET 3.5 com o conjunto de ferramentas v100, que você não pode.

No VS 2010, se o conjunto de ferramentas estiver instalado, vá para propriedades do projeto -> propriedades de configuração -> gerais e altere o Conjunto de ferramentas da plataforma de v90 para v100.