Почему @ (DocFileItem) не найден во время задачи MSBuild AfterBuild? - PullRequest
2 голосов
/ 28 июня 2010

Я пытаюсь постобработать XML-файл документации как XSLT-преобразование после сборки (с использованием нового шага XSLTransformation ), но сборка завершается ошибкой Unable to execute transformation. Could not find file 'C:\...\documentation.XML'.XML-файл документации хорошо отображается на диске после сборка завершена, но на этапе AfterBuild просто нет: <Exec Command="dir $(ProjectDir)$(DocumentationFile)"/> не находит файл и <Exec Command="$(ProjectDir)$(DocumentationFile)"/>.

Шаг XslTransformation запускается из задачи с именем AfterBuild и объявляется как зависящий от шага Compile.Похоже, я что-то упускаю из-за того, что эта задача объявлена ​​так, что она не запускается до завершения XML-файла документации, но я не могу понять, что.

Ответы [ 2 ]

2 голосов
/ 29 июня 2010

Кажется, что это ошибка в системе сборки IDE, согласно http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/8a2f4af8-7a57-454f-aa7d-684f3f89acf3: сборка IDE переименовывает файл $(DocumentationFile) в .tmp во время сборки и переименовывает его в соответствующий XML-файл документации после сборка завершена.Я не могу себе представить, почему они это сделали, кроме как для личного удовлетворения злого менеджера проекта, который, должно быть, теперь уже дьявольски смеялся, читая это ...

0 голосов
/ 28 июня 2010

Это нормально работает для меня с этим объявлением цели:

<Target Name="AfterBuild">
  <Copy SourceFiles="$(ProjectDir)$(DocumentationFile)"
        DestinationFolder="C:\..\CopyDirectory"/>
</Target>

Вы должны попытаться удалить зависимость на шаге Compile.

...