2010-07-20 6 views
1

J'essaie d'utiliser svcutil pour générer du code C++ géré à partir de XSD. La ligne de commande J'utilise estComment spécifier CppCodeProvider sur la ligne de commande de svcutil.exe?

"C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin \ xsd.exe" MyTest.xsd/classes /language:"Microsoft.VisualC.CppCodeProvider7 , cppCodeProvider, Version = 10.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a »/ espace de nom: MyTestApp

Cependant, je reçois un message d'erreur comme suit

erreur: Valeur « microsoft.visualc.cppcodeprovider7, cppcodeprovider version = 10.0.0.0, culture = neutre, publickeytoken = b03f5f7f11d50a3a 'pour le commutateur/la langue n'est pas valide. Il n'y a pas de fournisseur de codedom défini pour la langue.

Je sais que CppCodeProvider est installé dans le cadre de l'installation de Visual Studio. J'ai aussi essayé/langue: cpp en vain. J'ai été capable de générer du code en C# sans aucun problème pour le même XSD.

Est-ce que quelqu'un sait ce que je fais mal?

Répondre

2

Il est clairement indiqué dans l'article MSDN Library pour svcutil.exe:

/language:<language>

Values: c#, cs, csharp, vb, visualbasic, c++, cpp

Default: csharp

Short form: /l

Note: The switch only supports C++ for the code provider that ships with Visual Studio 2005 SP1.

Je pense que le SDK est venu avec .NET 2.0 à l'époque. Pas autrement un problème, la langue n'a pas changé depuis lors. Pourquoi ne pas utiliser csharp? Pouvoir mélanger sans peine les langues dans .NET est l'un de ses grands atouts.

+1

Nous avons beaucoup de code en C++ non géré. Nous sommes en train de convertir en managed (C# est l'objectif final). Cependant, ne peut pas accepter le coût de tout ou aucun changement. Par conséquent, nous avons besoin d'un moyen de faire des appels non gérés. Faire de l'interopérabilité en utilisant le marshaling est très coûteux car nous avons de grandes structures de données (composites) qui doivent aller et venir. Au lieu de cela, je veux prendre le contrôle de marshalling sélectivement (en seulement les structures de données requises). Cela fonctionne comme modèle de conception d'adaptateur. Nous devons donc utiliser CIL. – Chetan

+0

Remarque: Le commutateur prend uniquement en charge C++ pour le fournisseur de code fourni avec Visual Studio 2005 SP1. Cela signifie-t-il que je suis obligé d'installer Visual Studio 2005 SP1 pour que le fournisseur de code CPP fonctionne? – Chetan

Questions connexes