3

私は csproj ファイルを扱っており、プロジェクト ファイルによって参照されるすべてのファイルを抽出するコマンドレットを作成しようとしています。これには、Compile、EmbeddedResource、Resource、Content、および None 要素 (さらに重要なのは、それらの @Include 値) のすべてが含まれますが、特に気にしない dll を参照する Reference 要素を除外したいと考えています。

経験は豊富ではありませんが、必要な xpath 式は次のようになると思います

$projectFile | Select-Xml -namespace @{msb="http://schemas.microsoft.com/developer/msbuild/2003"} -xpath "//msb:ItemGroup/*[not(self::node() = msb:Reference) and @Include]"

ただし、self::node() を導入しようとするとすぐに、式はノードを返しません。ただし、self::node() がこれを行う正しい方法であるとは 100% 確信が持てません。概念的には、「ItemGroup 要素の子要素であるReference 要素ではないノードのすべての Include 属性値」を返すように変更するアイデアはありますか?

4

1 に答える 1

5

私はあなたが必要だと思います:

//msb:ItemGroup/*[not(self::msb:Reference)]/@Include

意味: ドキュメント全体で、を除く の子のすべてのInclude属性msb:ItemGroupmsb:Reference

于 2011-02-11T23:45:18.990 に答える