Проверьте наличие узла XML, если присутствует другой узел XML - PullRequest
0 голосов
/ 19 января 2012

У меня есть каталог, переданный в качестве параметра командной строки в сценарий оболочки Power. Мне нужно рекурсивно искать файлы с расширением csprj и проверять, присутствует ли узел HintPath в узле Project / ItemGroup / Reference. Если узел HintPath присутствует, проверьте наличие другого узла с именем Private со значением False и выйдите с кодом ошибки 0. В ItemGroup

может быть несколько узлов Reference

Можно ли создать сценарий Power Shell для этого? Пример XML-файла приведен ниже

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
         ToolsVersion="3.5">
  <ItemGroup>
    <Reference Include="IronPython, Version= ...">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\shared\IronPython-1.1\IronPython.dll</HintPath>
    </Reference>
    <Reference Include="log4net, Version= ...">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\binaries\log4net.dll</HintPath>
      <Private>False</Private>
    </Reference>
  </ItemGroup>
</Project>

1 Ответ

1 голос
/ 19 января 2012
gci . -filter *.csproj -recurse | foreach-object {
  $filename = $_.fullname 
  [xml]$sample = gc $_.fullname
  $sample.Project.ItemGroup.Reference | 
  select @{N="filename";E={$filename}}, hintpath, private 
}

Должен дать вам такой обзор:

filename                                 HintPath                                private
--------                                 --------                                -------
C:\users\mytest\desktop\sample1.csproj   ..\shared\IronPython-1.1\IronPython.dll        
C:\users\mytest\desktop\sample1.csproj   ..\binaries\log4net.dll                 False  
C:\users\mytest\desktop\sample2.csproj   ..\shared\IronPython-1.1\IronPython.dll        
C:\users\mytest\desktop\sample2.csproj   ..\binaries\log4net.dll                 False 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...