Domanda

Ho un modello T4 che genera classi da un file XML.

Come posso aggiungere una dipendenza tra il file xml e il file modello in modo che quando il file xml viene modificato il modello viene rieseguito automaticamente senza scegliere " Esegui lo strumento personalizzato " dal menu contestuale?

È stato utile?

Soluzione

Non credo che T4 supporti la trasformazione automatica dei modelli basata su una dipendenza esterna. Sono d'accordo con Marc - se hai un solo file esterno, puoi creare un & Quot personalizzato; strumento personalizzato & Quot; per il tuo file XML o usa semplicemente ttxgen . Tuttavia, non penso che questo approccio si ridimensioni a uno scenario in cui il modello t4 dipende da più di un file. Potrebbe essere necessario creare un pacchetto di Visual Studio per gestirlo.

Altri suggerimenti

Quanto tempo richiede l'esecuzione dello strumento? Un'opzione pigra potrebbe essere semplicemente modificare il csproj in modo tale che sempre esegua lo strumento durante la compilazione (presumibilmente tramite <Exec ... /> o un file targets personalizzato) - ovviamente, questo dipende dal fatto che è veloce da eseguire.

Un altro modo sarebbe quello di scrivere uno spessore che funzioni come " Strumento personalizzato " in VS, e chiama semplicemente l'ex esistente (o qualunque altra cosa) con i giusti argomenti. Non banale, ma fattibile ( vedi qui ) - Credo questo quindi presumibilmente gioca abbastanza bene con il rilevamento delle modifiche. In realtà è sulla mia lista di cose da fare per un progetto in corso, quindi lo scoprirò presto ...

Puoi utilizzare AutoTT Estensione di Visual Studio.

Questa estensione consente di configurare i trigger che eseguiranno un modello T4.

Uno dei possibili trigger è una modifica del file. Nel file di configurazione di esempio nella pagina AutoTT, l'espressione regolare per i trigger corrisponde a tutti i file nelle cartelle specificate (Controller, Contenuto), ma è possibile modificarlo in modo che venga eseguito solo con un file specifico.

Chirpy è un'altra opzione per farlo. E anche T4 Regenerator , che lo fa in modo diverso.

Hai provato a utilizzare < # @ xsd ?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top