Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Incorrect syntax is generated when creating a UsingDirective from factory in Roslyn

Tags:

c#

.net

roslyn

I am using Roslyn in order to generate a tree from another one. So we are dealing with AST transformation. I am using SyntaxFactory in order to generate nodes.

In the specific case I want to create a u using directive that should look like this:

using MyNamespace.SubNamespace;

So I do:

var usingDirective = SyntaxFactory.UsingDirective(SyntaxFactory.ParseName("MyNamespace.SubNamespace"));
var newNode = mynode.AddUsings(new[] { usingDirective });

But if I inspect the final tree newNode which is generated (the string source code generated by simply calling newNode.ToString()), I see that my directive has been added like this:

usingMyNamespace.SubNamespace;

I can see the same thing if I just do: usingDirective.ToString(). It seems very wrong, a space is needed and that should trigger a syntax error. What is going on?

like image 820
Andry Avatar asked Dec 04 '25 11:12

Andry


1 Answers

Add this to fix the problem:

SyntaxFactory.UsingDirective(
    SyntaxFactory.ParseName("MyNamespace.SubNamespace")).NormalizeWhitespace();
like image 75
Dudi Keleti Avatar answered Dec 07 '25 01:12

Dudi Keleti