Alex Rivera | Logout

Xml namespace and C# csproj

Asked 2012-04-25T02:30:01.873
9

I'm using powershell 2.0 to edit a lot of csproj files. One of the requirements for editing is to add new PropertyGroup with different condition (Please check the example below)

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'My-New-Env|AnyCPU'">

The problem is that powershell added the empty xmlns for all new PropertyGroup tags that I have added.

Eg:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'My-New-Env|AnyCPU'" xmlns="">

Is there any way to add new xml node without having any namespace?

I tried removing the namespace attribute by using the code below before adding new PropertyGroup but it didn't work. (meaning that attribute is not actually removed and I can still see the empty namespace after adding new node.)

$content = [xml](gc $_.FullName);     

    Write-Host "Reading "$_.FullName -foregroundcolor yellow;

    $project = $content.Project;

    $content.Project.RemoveAttribute("xmlns");

Edit: I'm following this post for adding new node.

How to add new PropertyGroup to csproj from powershell

Example:

$content = [xml](gc $_.FullName); 
  $importNode = $content.ImportNode($configs.DocumentElement, $true) 
  $project = $content.Project;
  $project
  $project.AppendChild($importNode);
  # $content.Save($_.FullName);
Edit
Report

1 Answer

10

Looking at this thread: http://bytes.com/topic/net/answers/377888-importing-nodes-without-namespace, it seems that it can't be easily done, you can, however go with a workaround:

Instead of:

$content.Save($_.FullName);

Use:

$content = [xml] $content.OuterXml.Replace(" xmlns=`"`"", "")
$content.Save($_.FullName);
answered 2012-05-03T12:07:22.060

Your Answer