Domanda

Ho un file XML di origine che viene utilizzato per creare file C # che vengono quindi compilati come parte di un progetto.
Attualmente ho un target BeforeBuild che esegue il mio convertitore da XML a C #.
Il problema è che, al momento dell'esecuzione del passaggio BeforeBuild, i vecchi file sembrano essere stati archiviati dal sistema di generazione, quindi i nuovi file vengono ignorati.

Come posso aggirare questo? Sembra che le trasformazioni sarebbero la strada giusta ma sono limitate in ciò che possono fare.

È stato utile?

Soluzione

Immagino che il tuo " memorizzato dal sistema di compilazione " può essere tradotto come ItemGroup contenente i file .cs che si desidera compilare viene generato quando viene letto il file msbuild, al contrario di quando viene eseguita la destinazione di compilazione. Hai diverse opzioni:

  1. <CreateItem> vedi Attività CreateItem
  2. <Output> vedi Elemento di output

Spero che questo aiuti.

Altri suggerimenti

Bene, abbiamo qualcosa di simile qui. Generiamo un .cs da un file xml usando un .tt. Entrambi i file fanno parte di un csproj specifico. Going properties - & Gt; BuildEvents su csproj fornisce questo piccolo frammento nella riga di comando dell'evento Pre-build:

del "$(ProjectDir)MyCsFile.cs"
copy /b /y "$(ProjectDir)\MyXmlFile.xml" "$(TargetDir)"
"$(ProjectDir)tt.bat" "$(ProjectDir)MyTemplateFile.tt"

Non ho idea se ti possa essere utile, spero che possa bastare come soluzione alternativa all'ultima possibilità.

Penso che devi mostrarci un po 'del tuo file di regole / build. Dovresti avere una regola / dipendenza per il file cs che ha l'xml come dipendenza.

Non sono sicuro di cosa intendi per " memorizzato dal sistema di compilazione "

Controlla attentamente le tue regole per errori / omissioni.

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