2012-01-19 59 views
0

我有一個目錄作爲命令行參數傳遞給power shell腳本。我需要遞歸搜索csprj擴展名的文件,並檢查HintPath節點是否出現在Project/ItemGroup/Reference節點下。如果HintPath節點存在,請與價值False和退出,錯誤代碼0命名Private另一個節點的存在可能有多個參考節點的ItemGroup如果存在另一個xml節點,檢查是否存在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
gci . -filter *.csproj -recurse | foreach-object { 
    $filename = $_.fullname 
    [xml]$sample = gc $_.fullname 
    $sample.Project.ItemGroup.Reference | 
    select @{N="filename";E={$filename}}, hintpath, private 
} 

示例XML文件中給出應該給你這樣的概述:

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 
相關問題