проверить существование папки с помощью пакета расширений msbuild? - PullRequest
10 голосов
/ 24 февраля 2011

Как я могу надежно проверить существование папки с помощью задачи пакета расширений msbuild?

Как я могу сделать это, не выдавая ошибку и не останавливая сборку?

Ответы [ 2 ]

28 голосов
/ 24 февраля 2011

Не могли бы вы использовать условие Exists для цели?

Это выполнит цель OnlyIfExists, только если каталог или файл с именем Testing находятся в том же каталоге, что и файл msbuild.

<ItemGroup>
    <TestPath Include="Testing" />
</ItemGroup>
<Target Name="OnlyIfExists" Condition="Exists(@(TestPath))">
    <Message Text="This ran!" Importance="high" />
</Target>
8 голосов
/ 26 февраля 2011

Нет необходимости использовать пакет расширений, MSBuild справится с этим просто отлично. Вы должны решить, является ли это папка, которая может быть создана или удалена как часть сборки. Если это так, то вы должны быть уверены, что используете динамическую группу элементов, объявленную внутри цели (в случае проверки более чем одной папки), или вы можете использовать путь, если просто проверяете одну. Этот пример показывает оба:

<Target Name="MyTarget">
   <!-- single folder with property -->
   <PropertyGroup>
      <_CheckOne>./Folder1</_CheckOne>
      <_CheckOneExistsOrNot
          Condition="Exists('$(_CheckOne)')">exists</_CheckOneExistsOrNot>
      <_CheckOneExistsOrNot
          Condition="!Exists('$(_CheckOne)')">doesn't exist</_CheckOneExistsOrNot>
   </PropertyGroup>
   <Message
      Text="The folder $(_CheckOne) $(_CheckOneExistsOrNot)"
      />

   <!-- multiple folders with items -->
   <ItemGroup>
      <_CheckMultiple Include="./Folder2" />
      <_CheckMultiple Include="./Folder3" />
   </ItemGroup>
   <Message
      Condition="Exists('%(_CheckMultiple.Identity)')"
      Text="The folder %(_CheckMultiple.Identity) exists"
      />
   <Message
      Condition="!Exists('%(_CheckMultiple.Identity)')"
      Text="The folder %(_CheckMultiple.Identity) does not exist"
      />
</Target>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...