我正在使用powershell 2.0编辑大量的csproj文件.编辑的一个要求是添加具有不同条件的新PropertyGroup(请查看下面的示例)
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'My-New-Env|AnyCPU'">
Run Code Online (Sandbox Code Playgroud)
问题是powershell为我添加的所有新PropertyGroup标记添加了空xmlns.
例如:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'My-New-Env|AnyCPU'" xmlns="">
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有任何命名空间的情况下添加新的xml节点?
我尝试在添加新的PropertyGroup之前使用下面的代码删除namespace属性,但它不起作用.(意味着该属性实际上并未删除,并且在添加新节点后我仍然可以看到空命名空间.)
$content = [xml](gc $_.FullName);
Write-Host "Reading "$_.FullName -foregroundcolor yellow;
$project = $content.Project;
$content.Project.RemoveAttribute("xmlns");
Run Code Online (Sandbox Code Playgroud)
编辑:我正在关注此帖添加新节点.
如何从powershell向csproj添加新的PropertyGroup
例:
$content = [xml](gc $_.FullName);
$importNode = $content.ImportNode($configs.DocumentElement, $true)
$project = $content.Project;
$project
$project.AppendChild($importNode);
# $content.Save($_.FullName);
Run Code Online (Sandbox Code Playgroud)
And*_*huk 10
看看这个帖子:http://bytes.com/topic/net/answers/377888-importing-nodes-without-namespace,似乎无法轻松完成,但是你可以采用一种解决方法:
代替:
$content.Save($_.FullName);
Run Code Online (Sandbox Code Playgroud)
使用:
$content = [xml] $content.OuterXml.Replace(" xmlns=`"`"", "")
$content.Save($_.FullName);
Run Code Online (Sandbox Code Playgroud)
小智 8
csproj文档具有默认命名空间.因此,在创建元素时,您需要引用相同的命名空间,否则您会发现xmlns生成的xml设置为空字符串.
这是我找到解决方案的链接
$elem = $content.CreateElement("PropertyGroup", $content.DocumentElement.NamespaceURI);
$content.Project.AppendChild($elem);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4262 次 |
最近记录: |