Раздражение MSBuild (или вопиющее невежество с моей стороны)

При переработке нашего процесса развертывания я перешел к использованию проекта MSBuild вместо наших существующих пакетных файлов. Все основные элементы на месте, и я хотел вырезать один или два шага, но столкнулся с проблемой.

Я создаю свойство с именем OutputPath, используя задачу CombinePath, и, хотя я могу без проблем получить к нему доступ после его создания, я не знаю, как использовать его в своих интересах. Учитывать:

<CombinePath BasePath ="$(DeployFolderRoot)" Paths ="$(DeployReleaseFolder)$(ReleaseFolderFormatted)" >
  <Output TaskParameter ="CombinedPaths" ItemName ="OutputFolder"/>
</CombinePath>

<MakeDir Directories="@(OutputFolder)" />
<MakeDir Directories="@(OutputFolder)\Foo" />
<MakeDir Directories="@(OutputFolder)\Bar" />

Команды 2 и 3 терпят неудачу, потому что я ссылаюсь на массив и пытаюсь объединить его со строкой. Создание свойства и присвоение ему @(OutputFolder) просто приводит к другой группе элементов, а не к свойству, на которое я могу ссылаться с помощью средства доступа $. У меня есть уродливый обходной путь, но я хотел бы немного прояснить это.

Спасибо,

-Хосе


person Jose Bueno    schedule 06.07.2009    source источник


Ответы (2)


Я не уверен в точном ответе, но вот идея:

<CombinePath BasePath ="$(DeployFolderRoot)" Paths ="$(DeployReleaseFolder)$(ReleaseFolderFormatted)" >
  <Output TaskParameter ="CombinedPaths" ItemName ="OutputFolder"/>
</CombinePath>

<OutputFolder Include="$(DeployFolderRoot)$(DeployReleaseFolder)$(ReleaseFolderFormatted)\Foo" /> 
<OutputFolder Include="$(DeployFolderRoot)$(DeployReleaseFolder)$(ReleaseFolderFormatted)\Bar" />

<MakeDir Directories="@(OutputFolder)" />

По сути, если вы создадите элементы OutputFolder с путем, они будут просто добавлены в список. Кстати, это должно быть в элементе, и вы должны использовать Include="".

person justin.m.chase    schedule 06.07.2009

дО! Определенно невежество, использовал неправильный атрибут в элементе Output.

<CombinePath BasePath ="$(DeployFolderRoot)" Paths ="$(DeployReleaseFolder)$(ReleaseFolderFormatted)" >
  <Output TaskParameter ="CombinedPaths" PropertyName="OutputFolder"/>
</CombinePath>

<MakeDir Directories="$(OutputFolder)" />
<MakeDir Directories="$(OutputFolder)\Foo" />
<MakeDir Directories="$(OutputFolder)\Bar" />
person Jose Bueno    schedule 06.07.2009