2009-12-16 9 views
0

ParseXSD.csCSC commande Paramètres useage C# Temps de construction

using System; 
using System.Collections; 
using System.Xml; 
using System.Xml.Schema; 


class XmlSchemaTraverseExample 
{ 
    static void Main() 
    { 
     // Add the customer schema to a new XmlSchemaSet and compile it. 
     // Any schema validation warnings and errors encountered reading or 
     // compiling the schema are handled by the ValidationEventHandler delegate. 
     XmlSchemaSet schemaSet = new XmlSchemaSet(); 
     schemaSet.ValidationEventHandler += new ValidationEventHandler(ValidationCallback); 
     schemaSet.Add("http://www.w3.org/2001/XMLSchema", "tmp.xsd"); 
     schemaSet.Compile(); 

     // Retrieve the compiled XmlSchema object from the XmlSchemaSet 
     // by iterating over the Schemas property. 
     XmlSchema customerSchema = null; 
     foreach (XmlSchema schema in schemaSet.Schemas()) 
     { 
      customerSchema = schema; 
     } 

     // inserted more code here.... 
} 

}

Actuellement, mon ConsoleApp fonctionnait très bien.

Et je veux retirer le code dur (chemin du fichier xsd) de mon code ci-dessous.

// Je ne sais pas comment mettre à jour cette ligne.

schemaSet.Add("http://www.w3.org/2001/XMLSchema", "tmp.xsd"); 

i pourrait alors exécuter mes ParseXSD.cs fichier au moment de la construction avec la commande CSC ci-dessous.

// Je ne connais pas le bon format de commande. Je pourrais mettre à jour le paramètre de chemin facilement. Pas de code dur.

CSC ParseXSD.cs d:/tmp/tmp.xsd 

Veuillez me donner un guide. Merci d'avance.

Répondre

2

Voulez-vous le spécifier au moment de la compilation ou au moment de l'exécution?

pour le faire lors de l'exécution changement

static void Main() 

à

static void Main(string[] args) 

puis

schemaSet.Add("http://www.w3.org/2001/XMLSchema", args[0]); 

Si vous souhaitez spécifier au moment de la compilation que vous pourriez être en mesure d'utiliser precompile directives pour le faire, mais je ne suis pas sûr si elles peuvent être spécifiées pour csc. Votre autre option consiste à faire l'injection avant de compiler avec des scripts de ligne de commande ou similaires.

+0

Bonjour GrayWizardx, je veux le spécifier au moment de la compilation. Le code analyse le fichier XSD et génère un fichier .CS pour l'utilisation du temps d'exécution. Je ne connais pas le SCC. C'est pourquoi j'ai ased les paramètres CSS. Il y a quelques autres fichiers de script perl pendant la compilation de mon application. Pourrais-je combiner le fichier ParseXSD.cs avec le script Perl? –

+0

Bien sûr. Remplacez ce "tmp.xsd" par "$ xsdFile $" puis juste avant d'appeler csc, utilisez votre script perl pour trouver cette chaîne et remplacez-la par l'emplacement du fichier xsd désiré, puis compilez et exécutez. Bien que sincèrement le changement ci-dessus vous permettrait de le faire sans avoir besoin de recompiler pour chaque nouvelle xsd. – GrayWizardx

Questions connexes