Pregunta

Tengo un archivo XML de origen que se utiliza para crear archivos C # que luego se compilan como parte de un proyecto.
Actualmente tengo un objetivo BeforeBuild que ejecuta mi conversor de XML a C #.
El problema es que cuando se ejecuta el paso BeforeBuild, los archivos antiguos parecen haber sido almacenados por el sistema de compilación, por lo que se ignoran los nuevos archivos.

¿Cómo puedo evitar esto? Parece que las transformaciones serían el camino, pero están limitadas en lo que pueden hacer.

¿Fue útil?

Solución

Supongo que su & "; almacenado por el sistema de construcción &"; se puede traducir como el ItemGroup que contiene los archivos .cs que desea compilar se genera cuando se lee el archivo msbuild, en lugar de cuando se ejecuta su destino de compilación. Tienes varias opciones:

  1. <CreateItem> vea tarea CreateItem
  2. <Output> ver Elemento de salida

Espero que esto ayude.

Otros consejos

Bueno, tenemos algo similar aquí. Generamos un .cs de un archivo xml usando un .tt. Ambos archivos son parte de un csproj específico. Propiedades de ejecución: & Gt; BuildEvents en csproj proporciona este pequeño fragmento en la línea de comando del evento de precompilación:

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

No tengo idea si es de alguna utilidad para usted, espero que sea suficiente como solución alternativa de última oportunidad.

Creo que debe mostrarnos un poco de su archivo de reglas / compilación. Debería tener una regla / dependencia para el archivo cs que tiene el xml como dependencia.

No estoy seguro de lo que quieres decir con " almacenado por el sistema de construcción "

Revise sus reglas cuidadosamente por errores / omisiones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top