Partager via


Modifications apportées au produit : Visual C++ .NET 2003

Mise à jour : novembre 2007

Remarque :

Il se peut que certaines fonctionnalités mentionnées dans cette rubrique ne soient pas encore opérationnelles dans la version actuelle de Visual C++. Pour plus d'informations, consultez Modifications apportées à Visual C++ 2005 et aux éditions antérieures.

Microsoft Visual C++ .NET 2003 offre de nombreuses améliorations et des nouvelles fonctionnalités :

  • Compilateur, langage et éditeur de liens Visual C++

  • Bibliothèques Visual C++

  • Environnement de développement

  • Concepteur Windows Forms pour les extensions managées pour C++

  • Modèle Automation de génération de projet

Compilateur, langage et éditeur de liens Visual C++

Le compilateur, l'éditeur de liens, les autres outils de génération et les fonctionnalités du langage Visual C++ présentés ci-dessous sont nouveaux dans Visual C++ .NET 2003.

Compilateur

  • Informations sur la façon d'exécuter une application Extensions managées pour C++ générée avec le compilateur de la version actuelle sur une version antérieure du runtime.

  • Une procédure pas à pas a été ajoutée indiquant comment porter une application native existante afin d'utiliser Extensions managées pour C++ : Procédure pas à pas : portage d'une application C++ native pour assurer l'interopérabilité avec des composants .NET Framework

  • Vous pouvez maintenant créer un délégué sur une méthode d'un type valeur.

  • La conformité du compilateur avec la norme C++ a été considérablement améliorée pour Visual C++ .NET 2003.

  • L'option /arch du compilateur a été ajoutée.

  • /Gf est désapprouvé et sera supprimé dans la prochaine version de Visual C++.

  • L'option du compilateur /G7 a été ajoutée.

  • L'option /GS du compilateur a été améliorée pour favoriser la protection des variables locales contre les dépassements de mémoire tampon.

  • L'option /noBool du compilateur a été supprimée. Le compilateur permet maintenant à bool d'apparaître uniquement sous la forme d'un mot clé (et non comme un identificateur) dans un fichier de code source Visual C++.

  • Le type long long est maintenant disponible comme un typedef de __int64. Le CRT n'offre toujours pas la prise en charge du type long long.

  • L'option /Zm du compilateur spécifie maintenant la limite d'allocation de mémoire d'en-tête précompilé.

  • L'intrinsèque _InterlockedCompareExchange est maintenant documenté.

  • L'intrinsèque _InterlockedDecrement est maintenant documenté.

  • L'intrinsèque _InterlockedExchange est maintenant documenté.

  • L'intrinsèque _InterlockedExchangeAdd est maintenant documenté.

  • L'intrinsèque _InterlockedIncrement est maintenant documenté.

  • _ReadWriteBarrier intrinsèque a été ajouté.

Attributs Visual C++

  • L'attribut implements est maintenant documenté.

Éditeur de liens

Les options d'éditeur de liens suivantes ont été ajoutées :

  • /ASSEMBLYDEBUG

  • /ASSEMBLYLINKRESOURCE

  • /DELAYSIGN

  • /KEYFILE

  • /KEYCONTAINER

  • /SAFESEH

Préprocesseur

  • Le symbole _STATIC_CPPLIB est maintenant documenté pour une utilisation avec /MD.

  • Le symbole _CPPLIB_VER est désormais documenté.

  • Les attributs suivants de la directive #import sont maintenant documentés :

    • auto_search

    • auto_rename

    • no_search_namespace

    • rename_search_namespace

    • tlbid

MASM

La directive .SAFESEH et l'option /safeseh ml.exe ont été ajoutées.

Bibliothèques Visual C++

Ancienne bibliothèque iostream

L'ancienne bibliothèque iostream a été supprimée de Visual C++ dans cette version. Utilisez la bibliothèque C++ standard pour la programmation iostream.

Bibliothèque Runtime C

  • La documentation de la bibliothèque Runtime C inclut maintenant des informations pour les équivalents du .NET Framework.

  • _get_heap_handle a été ajouté.

  • La macro _CRTDBG_CHECK_DEFAULT_DF, utilisée dans _CrtSetDbgFlag, a maintenant la valeur 0, ce qui signifie qu'aucun contrôle de tas n'est effectué par défaut.

  • swprintf est maintenant compatible avec la norme ISO C (C++ seulement).

  • vswprintf n'a dorénavant qu'une forme C++ qui vous permet de spécifier le nombre maximal de caractères à stocker.

  • Pour plusieurs des fonctions multioctets, par exemple _mbsset, le CRT ne détectait pas toujours les chaînes multioctets non valides, où un octet de tête était suivi d'un octet de queue null. Le CRT comporte maintenant un plus grand nombre de contrôles de caractères multioctets non valides, où un octet de tête est suivi d'un octet de queue null.

  • _set_purecall_handler a été ajouté.

  • Précédemment, lorsqu'un processus chargeait une DLL qui faisait référence de manière statique à la bibliothèque CRT, la précision en virgule flottante était initialisée à 53 bits. Dans Visual C++ .NET 2003, la précision en virgule flottante n'est pas initialisée dans ce scénario. Cela pourrait constituer un changement majeur dans certaines applications qui dépendaient du CRT pour initialiser la précision en virgule flottante.

  • Le CRT dispose maintenant des formes float et double pour toutes les fonctions mathématiques. Ces nouvelles fonctions ne peuvent être appelées qu'à partir de Visual C++.

Bibliothèque C++ standard

Dans les versions précédentes, les entrées/sorties de caractères dans un flux pouvaient entraîner le stockage entraîner le stockage de valeurs character ou unsigned short si wchar_t n'était pas défini comme type natif. Maintenant, un type unsigned short est toujours traité comme un caractère.

Dans Visual C++ .NET 2003, les membres des fichiers d'en-tête <hash_map> et <hash_set> ne figurent plus dans l'espace de noms std, mais ont été transférés dans l'espace de noms stdext.

La bibliothèque C++ standard a été mise à jour pour tirer parti de la prise en charge améliorée du compilateur Visual C++ pour le standard C++. Par exemple, l'implémentation de la bibliothèque C++ standard fournie dans Visual C++ utilise maintenant une spécialisation partielle de modèle.

ATL

  • Dans Visual Studio .NET 2003, le compilateur MIDL possède un paramètre par défaut /robust qui fait que les projets exécutés sous Windows NT 4 cessent de répondre.

Pour remplacer la valeur de l'indicateur du compilateur MIDL par /no_robust

  1. Cliquez avec le bouton droit sur votre projet puis, dans le menu contextuel, cliquez sur Propriétés.

    La boîte de dialogue Propriétés du projet s'affiche.

  2. Dans le volet gauche, cliquez sur MIDL, puis sélectionnez Ligne de commande.

  3. Entrez /no_robust dans la zone de texte Options supplémentaires.

  • La macro de conversion de chaînes ATL USES_CONVERSION a été remplacée par USES_CONVERSION_EX. Elle tentera d'allouer de l'espace sur la pile. S'il n'y a pas de place disponible sur la pile, elle tentera le tas. S'il n'y a pas d'espace sur le tas, elle retourne NULL. USES_CONVERSION_EX comporte un paramètre supplémentaire (threshold) que vous pouvez utiliser : si la demande est plus grande que la taille de threshold, la macro passera directement au tas.

  • _alloca a été remplacé par _atl_safe_alloca.

  • La classe CSocketAddr a été ajoutée pour fournir des méthodes indépendantes du protocole pour la gestion des adresses IPv6 et IPv4.

  • Lors de la génération d'un projet qui produit un fichier exécutable, ATL place automatiquement entre guillemets le nom du chemin d'accès créé au moment de l'exécution avec le paramètre de script Registrar %MODULE%. Si vous ne souhaitez pas que le nom du chemin d'accès inclue les guillemets, utilisez plutôt le nouveau paramètre %%MODULE_RAW%.

    Lors de la génération d'un projet qui produit un fichier DLL, ATL n'ajoute pas de guillemets au nom du chemin d'accès si %MODULE% ou %MODULE_RAW% est utilisé.

MFC

  • Les maps de connexion ne sont plus compactées lorsqu'un point de connexion est supprimé ; le point de connexion supprimé est dorénavant remplacé par une valeur NULL. Par conséquent, vous devez rechercher les valeurs NULL lors de l'utilisation de CConnectionPoint::GetConnections ou CConnectionPoint::GetNextConnection.

  • Les fonctions suivantes peuvent maintenant lever des exceptions : CSimpleString::FreeExtra, CSimpleString::GetAt, CSimpleString::operator [], CSimpleString::ReleaseBuffer, CSimpleString::ReleaseBufferSetLength, CStrBuf::SetLength et certains constructeurs CTime::CTime.

  • Les comportements d'AfxIsValidAddress et AfxIsValidString ont changé. Avec des projets compilés sans le mode débogage, les deux fonctions testent simplement la présence d'un argument non NULL.

  • CHeaderCtrl::GetOrderArray n'a plus de deuxième paramètre par défaut ; -1 n'est plus une valeur valide pour le deuxième paramètre.

  • CAsyncSocket possède de nouveaux membres reconnaissant IPv6 : GetPeerNameEx, GetSockNameEx, ReceiveFromEx et SendToEx.

ATL et MFC

  • La classe CImage assure dorénavant le suivi du nombre d'objets créés. Lorsque le compte passe à 0, la fonction GdiplusShutdown est automatiquement appelée pour libérer les ressources utilisées par GDI+. Cela empêche les ressources d'être libérées lorsque des objets CImage sont créés par une DLL.

  • La classe MFC CString a été réécrite sous forme de classe de modèles, CStringT. Cela vous permet d'utiliser CString dans des projets ATL sans établir de liaison dans la plus grande bibliothèque statique MFC ou dans une DLL.

    Remarque :

    Cette version résout le problème décrit dans l'article de la Base de connaissances « PRB : Linking Errors When You Import CString-Derived Classes » (Q309801). Vous trouverez les articles de la Base de connaissances sur le CD-ROM MSDN Library ou à l'adresse https://support.microsoft.com/default.aspx. Si vous avez rencontré des erreurs d'éditeur de liens lors de l'exportation d'une classe dérivée CString à partir d'une DLL d'extension MFC dans Visual C++ .NET 2002 et avez appliqué la solution décrite dans cet article, vous devez supprimer le code de cette solution, puisque le problème a été résolu dans Visual C++ .NET 2003.

  • CStrBufT et CSimpleStringT possèdent désormais un paramètre de modèle supplémentaire indiquant si CString doit être utilisé à partir de la DLL MFC. Utilisez le typedef se trouvant dans la classe CStringT ou CSimpleStringT dans atlsimplstr.h (à la place du typedef global).

ATL Server

  • Dans un service Web XML créé avec ATL Server, l'action par défaut consiste à valider les paramètres SOAP après leur lecture. Pour désactiver la validation, définissez la macro _ATL_SOAP_NO_PARAMETER_VALIDATIONS.

  • SPROXY.EXE peut dorénavant traiter un fichier .discomap ou un fichier .wsdl. Spécifiez la nouvelle option /wsdl lorsque vous utilisez un fichier .wsdl comme entrée :

    sproxy /wsdl <input_location>
    

    où <input_location> est le chemin d'accès du fichier .wsdl à utiliser.

    SPROXY.EXE peut maintenant traiter un fichier results.discomap :

    sproxy results.discomap
    

    Notez que le fichier .discomap contient un lien vers une copie locale du fichier .wsdl et utilise également une copie locale du fichier de schéma.

Environnement de développement

Remarque :

Il se peut que certaines fonctionnalités mentionnées dans cette rubrique ne soient pas encore opérationnelles dans la version actuelle de Visual C++. Pour plus d'informations, consultez Modifications apportées à Visual C++ 2005 et aux éditions antérieures.

Lorsque vous ouvrez un projet Visual C++ de Visual Studio .NET dans Visual C++ .NET 2003, l'ancien fichier de projet est renommé et un nouveau fichier de projet pour l'environnement Visual C++ .NET 2003 est créé.

Le format d'un fichier .vcproj est maintenant documenté.

Les nouvelles fonctionnalités suivantes sont mises en œuvre dans l'environnement de développement :

  • Les macros $(WebDeployPath), $(WebDeployRoot), $(ParentName), $(RootNameSpace), $(SafeParentName) et $(SafeInputName) ont été ajoutées.

  • Il est maintenant possible de générer un projet sans générer aucun de ses projets dépendants.

Modèles de projets en extensions managées pour C++

Cette version inclut plusieurs nouveaux modèles de projet que vous pouvez utiliser pour créer des applications en extensions managées pour C++ :

  • Bibliothèque de contrôles Windows (.NET)

  • Application Windows Forms (.NET)

  • Service Windows (.NET)

En outre, les modèles de projets managés dans Visual C++ .NET 2002, ont été renommés pour cette version :

  • Application managée C++ se nomme maintenant Application console (.NET)

  • Bibliothèque de classes managées C++ se nomme maintenant Bibliothèque de classes (.NET)

  • Projet vide C++ managé se nomme maintenant Projet vide (.NET)

  • Service Web C++ managé se nomme désormais Service Web ASP.NET

Concepteur Windows Forms pour les extensions managées pour C++

Avec l'ajout du Concepteur Windows Forms pour cette version, Visual C++ introduit une solution de développement d'applications rapide pour la création de vos applications Windows Forms dans des extensions managées pour C++.

Cette fonction inclut la prise en charge complète de la boîte à outils et de l'Explorateur de serveurs, qui vous permet de faire glisser ou de couper et coller des contrôles et des composants directement sur votre application Windows Forms. En outre, vous pouvez facilement manipuler les propriétés de vos contrôles et de vos composants par l'intermédiaire de la grille des propriétés.

Modèle Automation de génération de projet

Visual C++ .NET offre de nouvelles pages de propriétés et un certain nombre de nouveaux objets, ainsi que de nouvelles propriétés et méthodes pour les objets existants qui améliorent le modèle de génération de projet.

Nouvelles pages de propriétés

Ressources managées, page de propriétés

XML Data Generator Tool, page de propriétés

Wrapper managé, page de propriétés

Wrapper managé auxiliaire, page de propriétés

Nouveaux objets

Objet VCALinkTool

Objet VCActiveXReference

Objet VCAssemblyReference

Objet VCAuxiliaryManagedWrapperGeneratorTool

Objet VCManagedResourceCompilerTool

Objet VCManagedWrapperGeneratorTool

Objet VCPrimaryInteropTool

Objet VCProjectReference

Objet VCReference

Collection VCReferences

Objet VCReferenceConfiguration

Objet VCXMLDataGeneratorTool

Nouveaux membres ou membres modifiés pour les objets existants

Plusieurs propriétés et méthodes nouvelles ou mises à jour ont été ajoutées à des objets existants. Notez que les modifications peuvent englober divers aspects, par exemple une signature mise à jour ou l'ajout de nouveaux membres.

Objet

Membre nouveau ou modifié

Objet VCCLCompilerTool

Propriété EnableEnhancedInstructionSet

 

Propriété ToolKind

Objet VCLinkerTool

Propriété FixedBaseAddress

 

Propriété ToolKind

Objet VCLibrarianTool

Propriété ToolKind

Objet VCCustomBuildTool

Propriété ToolKind

Objet VCMidlTool

Propriété ToolKind

Objet VCResourceCompilerTool

Propriété ToolKind

Objet VCPreBuildEventTool

Propriété ToolKind

Objet VCPreLinkEventTool

Propriété ToolKind

Objet VCPostBuildEventTool

Propriété ToolKind

Objet VCBscMakeTool

Propriété ToolKind

Objet VCNMakeTool

Propriété ToolKind

Objet VCWebServiceProxyGeneratorTool

Propriété Namespaces (VCProjectEngine)

 

Propriété References

 

Propriété ToolKind

Objet VCWebDeploymentTool

Propriété ToolKind

Objet VCProject

Méthode AddAssemblyReference

 

Méthode AddActiveXReference

 

Méthode AddProjectReference

 

Méthode CanAddAssemblyReference

 

Méthode CanAddActiveXReference

 

Méthode CanAddProjectReference

 

Propriété Object

 

Propriété References

 

Propriété ReferencesConsumableByDesigners

 

Méthode RemoveReference

 

Propriété RootNamespace

 

Propriété VCReferences

Objet VCFile

Méthode AddFile

 

Méthode CanAddFile

 

Propriété FileType

 

Propriété Items

 

Propriété Object

 

Méthode RemoveFile

Objet VCFilter

Propriété Object

Objet VCConfiguration

Propriété FullReferencesPath

 

Propriété ReferencesPath

 

Propriété ReferenceTools

 

Propriété SatelliteDLLs

 

Méthode StopBuild

 

Propriété StyleSheets

Objet VCStyleSheet

Propriété FullReferencesPath

 

Propriété ReferencesPath

 

Propriété ReferenceTools

 

Propriété StyleSheetDirectory

 

Propriété StyleSheetName

Objet VCFileConfiguration

Propriété ProjectConfiguration

 

Méthode Compile

 

Propriété OutputUpToDate

Objet VCProjectEngine

Propriété ShowEnvironmentInBuildLog

Voir aussi

Autres ressources

Modifications du produit dans les versions de Visual C++