Pergunta

Eu tenho um arquivo XML de origem que é usado para criar arquivos de C #, que são então compilados como parte de um projeto.
Atualmente tenho um alvo BeforeBuild que corre meu XML para C conversor #.
O problema é que no momento em que o passo BeforeBuild é executado os arquivos antigos parecem ter sido armazenado pelo sistema de compilação para os novos arquivos são ignorados.

Como posso resolver isso? Parece que transforma seria o caminho, mas eles são limitados no que podem fazer.

Foi útil?

Solução

Eu acho que o seu "armazenados pelo sistema de construção" pode ser traduzido como a ItemGroup contendo os arquivos .cs que deseja compilação é gerado quando o arquivo msbuild é lido, ao contrário de quando o seu alvo de compilação é executado. Você tem várias opções:

  1. <CreateItem> ver href="http://msdn.microsoft.com/en-us/library/s2y3e43x.aspx" rel="nofollow noreferrer"> CreateItem tarefa
  2. <Output> ver href="http://msdn.microsoft.com/en-us/library/ms164287.aspx" rel="nofollow noreferrer"> elemento de saída

Espero que isso ajude.

Outras dicas

Bem, temos algo semelhante-ish aqui. Nós gen um .cs fora um arquivo xml usando um .tt. Ambos os arquivos são parte de um csproj específico. Indo Propriedades-> BuildEvents no csproj dá a este pequeno trecho na linha de comando evento pré-compilação:

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

Não faço ideia se isso é de qualquer utilidade para você, espero que pode ser suficiente como uma última solução acaso.

Eu acho que você precisa para nos mostrar um pouco do seu arquivo de regras / build. Você deve ter uma regra / dependência para o arquivo de cs que tem o xml como a dependência.

Eu não tenho certeza que você entende por "armazenados pelo sistema de compilação"

Verifique suas regras cuidadosamente para erros / omissões.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top