如何添加"#define VAR"c#文档之上

本文关键字:quot VAR 文档 #define 何添加 添加 | 更新日期: 2023-09-27 18:09:36

我想用roslyn编辑一个c#文档,在上面添加一个#define小知识。

例如我有如下

namespace MyNameSpace {
 <classes>
}

我想把它改成

#define X
namespace MyNameSpace {
 <classes>
}

我试了如下:

DocumentEditor editor = <get document editor>
var compilationUnit = SyntaxFactory.ParseCompilationUnit("#defin X");
                var defineXTrivia = compilationUnit.GetFirstDirective();
                editor.InsertBefore(editor.OriginalRoot, defineXTrivia);

如何添加"#define VAR"c#文档之上

我终于想通了:

// Create '#define X' trivia
var defineXDirective = SyntaxFactory.Trivia(SyntaxFactory.DefineDirectiveTrivia("X", isActive : true).NormalizeWhitespace());
// Insert '#define X' trivia on top of the document
var changedRoot = editor.OriginalRoot.WithLeadingTrivia(
                    editor.OriginalRoot.GetLeadingTrivia().InsertRange(0, defineXDirective));
editor.ReplaceNode(editor.OriginalRoot, changedRoot);