私はvb.netでxmlリテラルを試していますが、得られないものがあります。これが問題を説明する小さなサンプルです。PropertyGroup
空のVisualStudioプロジェクトに2つのノードを追加しています。最初のものはxmlリテラルとして追加され、2番目はnew XElement
:として追加されます。
Imports <xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Module MyModule
Sub Main()
Dim vbproj = <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
vbproj.Root.Add(<PropertyGroup></PropertyGroup>)
Dim xNameSpace As XNamespace = "http://schemas.microsoft.com/developer/msbuild/2003"
vbproj.Root.Add(New XElement(xNameSpace + "PropertyGroup"))
Console.WriteLine(vbproj)
End Module
このコードは次の出力を書き込みます。
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003"></PropertyGroup>
<PropertyGroup />
</Project>
ご覧のとおり、最初のPropertyGroup
ノードには冗長なxmlns宣言が含まれています。それはなぜですか、そしてそれを避けることができますか?