Le migliori pratiche per includere XSD nel progetto C #

4

Ho uno schema XSD che devo includere nel mio programma, per convalidare qualche XML di input dell'utente. Lo schema dovrà essere regolarmente aggiornato. (Dal programmatore.)

Il mio metodo corrente per includere questo è un riferimento ad esso all'interno di Resources.resx - tuttavia, questo non sembra ideale in quanto richiede di duplicare tutti i miei enum tra XSD e C #.

Ho anche cercato di convertire il file XSD in una classe runtime usando xsd.exe - tuttavia, come ho capito, è necessario eseguire un processo separato al di fuori di Visual Studio, il che rende più complesso l'aggiornamento e richiede la processo dettagliato per autori futuri.

Non riesco a immaginare che si tratti di una situazione insolita - esiste un metodo con cui questo viene comunemente fatto, dove posso rimuovere la duplicazione nel mio metodo attuale, ma non ho ancora la necessità di elaborare manualmente lo schema su ogni aggiornamento ?

    
posta Chris 10.02.2015 - 10:28
fonte

2 risposte

4

Crea un passo di pre-build per eseguire XSD.EXE prima di ogni build.

Ho trovato altre 2 risposte su SO che spiegano come automatizzare questo: link link

Il secondo si riferisce a uno strumento chiamato XSD2code che si trova su codeplex. Però però non vedo un pacchetto nuget.

    
risposta data 11.02.2015 - 14:34
fonte
2

La risposta dipende in larga misura dalla frequenza con cui ci si aspetta che i tipi cambino in un modo che imporrebbe modifiche allo schema.

Se le modifiche si verificano raramente o per niente, la cosa più semplice da fare dal punto di vista del manutentore potrebbe benissimo essere quella di duplicare i valori in un documento XSD statico.

Se i cambiamenti si verificano frequentemente, potrebbe essere meglio trovare un modo per generare l'XSD come artefatto di costruzione. Ciò eliminerà le duplicazioni e garantirà che sia aggiornato, ma potrebbe esserci un significativo costo iniziale per metterlo insieme.

    
risposta data 10.02.2015 - 19:36
fonte

Leggi altre domande sui tag