MSBuild を使用してカスタム xml 要素を web.config に挿入したいと考えています。オンラインで調べた後、私はそのような解決策を見つけました:
1) projectextensions の .build ファイルに要素を格納します。
<ProjectExtensions>
<CustomElement name="CustomElementName">
...
</CustomElement>
</ProjectExtensions>
2) GetValue で要素を取得する
<Target name="ModifyConfig">
<XmlFile.GetValue Path="$(MSBuildProjectFullPath)"
XPath="Project/ProjectExtensions/CustomElement[@name='CustomElementName']">
<Output TaskParameter="Value" PropertyName="CustomElementProperty"/>
</XmlFile.GetValue>
</Target>
必要な要素を見つけるために.buildプロジェクトが使用している名前空間を参照する必要があるため、これは機能しません(XPath Visualizerで.buildファイルをチェックしました)。だから、私はさらなる解決策を探して、これに来ます:
<ItemGroup>
<XmlNamespace Include="MSBuild">
<Prefix>msb</Prefix>
<Uri>http://schemas.microsoft.com/developer/msbuild/2003</Uri>
</XmlNamespace>
</ItemGroup>
<Target name="ModifyConfig">
<XmlFile.GetValue Path="$(MSBuildProjectFullPath)" Namespaces="$(XmlNamespace)"
XPath="/msb:Project/msb:ProjectExtensions/msb:CustomElement[@name='CustomElementName']"
>
<Output TaskParameter="Value" PropertyName="CustomElementProperty"/>
</XmlFile.GetValue>
</Target>
しかし、何らかの理由で名前空間が認識されません。MSBuild は次のエラーを報告します。
C:...\mybuild.build(53,9): error : タスク エラーが発生しました。C:...\mybuild.build(53,9): エラー: メッセージ = 名前空間プレフィックス 'msb' が定義されていません。
私はそれを別の方法で参照するいくつかのバリエーションを試しましたが、どれもうまくいきませんでした.オンラインでもそれらの名前空間を適切に参照することについてはあまりありません. 私が間違っていることと、それを適切に行う方法を教えてもらえますか?