2010-01-21 10 views
3

Quelqu'un a-t-il réussi à convertir un projet VS 2008 C++/CLI (vcproj) en un projet VS 2010 (vcxproj), tout en conservant .NET 3.5 en tant que framework cible ? Je n'ai pas été en mesure de le faire et de faire en sorte que le projet réussisse. Le projet se compile bien dans VS2008 comme .NET 3.5, et fin dans VS2010 comme .NET 4.0, mais je suis incapable de cibler .NET 3.5 en 2010. L'EDI ne semble pas lui fournir une option, et modifier le fichier vcxproj en ajoutantCibler .NET 3.5 C++/CLI dans Visual Studio 2010 bêta 2

<TargetFrameworkVersion>v3.5</TargetFrameworkVersion> 

les causes de compilation à l'échec avec l'erreur folling:

Error 1 error C1001: An internal error has occurred in the compiler. 

Selon this link, il y a apparemment quelques différences dans les compilateurs utilisés entre VS2008 et 2010, mais permet d'éditer manuellement le fichier de projet était encore suggéré comme solution. Est-ce que quelqu'un a une idée à ce sujet?

Répondre

-1

Merci pour l'astuce sur TargetFrameworkVersion. Cela a fonctionné pour moi, mais cela ne vous aide malheureusement pas.

Il est facile d'obtenir une "erreur de compilation interne" si vous avez d'anciens fichiers (fichiers PCH, fichiers objets) créés pour une autre version du compilateur C++. Avez-vous tout nettoyé quand vous avez changé la version des outils?

+0

merci Ah pour la réponse, je vais devoir jeter un oeil au travail. C'était un problème avec une partie C++/CLI d'un projet principalement .NET donc je l'ai simplement compilé en 2008 et référencé via une référence DLL plutôt que projet. Nous avons fini par ne pas l'utiliser de toute façon, mais je vais vérifier et voir si cela le corrige – jeffora

+0

Marquer cela comme réponse en raison de ne pas pouvoir reproduire le problème (ou plutôt ne pas avoir besoin de la situation qui causait le problème) – jeffora

13

Lorsque vous ciblez .Net Framework v3.5 et que vous construisez à l'aide de VS2010, vous pouvez parfois déclencher l'erreur de lien C1001 en raison de VS2010 ajoutant automatiquement une référence à System.Core lorsque vous compilez. Ce n'est pas explicite et n'apparaîtra pas dans vos références, mais plutôt lors de la compilation. Vous pouvez dire VS de ne pas ajouter les assemblages en ajoutant cet élément dans votre Globals PropertyGroup:

<AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences> 
+0

votre solution à C1001. Maintenant, l'intégralité de Visual Studio 2010 (version finale) se bloque. Des solutions? – brickner

+2

Ouvert un rapport de bogue sur Microsoft Connect: https://connect.microsoft.com/VisualStudio/feedback/details/560606/c1001-compiler-crash-on-c-cli-project-in-vs2010-when-target- framework-is-3-5 – brickner

+0

Avez-vous vérifié que la référence aux assemblages .net fx 4.0 a été supprimée? Vous pouvez voir ce qui est appelé via la ligne de commande et quels assemblages sont inclus. J'ai dû faire cela à deux projets différents et le premier a fonctionné comme un charme et pour une raison quelconque la seconde a pris un certain temps (fermeture de la solution et VS et réouverture je pense a fait l'affaire) pour finalement supprimer la référence. –

3

Wow, la réponse à Brickner's bug report est dévastateur - le ciblage 3.5 n'est pas pris en charge et ne sera pas résolu! Mes propres expériences bizarres avec des plantages sont qu'ils ont été corrigés en activant des en-têtes précompilés, encore plus étrange parce que stdafx.h était vide donc je ne sais pas ce qu'ils font.

+0

Le lien est mort ... – leppie

Questions connexes