5

xmlpokeタスクを使用してVSプロジェクトファイル(XML)を更新しようとしています。プロジェクトルートには複数のPropertyGroupノードがあり、最初のノードを選択しようとしています。XMLは次のようになります

 <Project>
    <PropertyGroup>
    </PropertyGroup>
    <PropertyGroup>
    </PropertyGroup>
    <PropertyGroup>
    </PropertyGroup>
 </Project>

のxpathを使用し//Project/PropertyGroup[1]て最初のPropertyGroupを取得していますが、「// Project /PropertyGroup[1]が指定された一意でないxpath」というエラーが表示されます。

編集:申し訳ありませんが、私はそれが重要だとは思いませんでした(しかしそれは重要です)、Projectには名前空間があります。将来の検索者のための答えとして、正しいxmlpokeを使用して正しいXMLを配置します。

4

1 に答える 1

9

わかりました。上記のXMLスニペットを単純化しすぎました。私が理解していなかったとしたら、誰かがそれを理解していたと思います。答えは、Projectには名前空間があるため、次のようにする必要があるということです。

   <xmlpoke file="project_file.csproj" value="v4.0" xpath="//x:Project/x:PropertyGroup[1]/x:TargetFrameworkVersion">
    <namespaces>
      <namespace prefix="x" uri="http://schemas.microsoft.com/developer/msbuild/2003" />
    </namespaces>
   </xmlpoke>

参考までに、Projectタグは次のようになります。

  <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
于 2010-04-06T13:47:08.367 に答える