roslyn 如何在 C# 文档顶部添加“#define VAR”
roslyn How to add "#define VAR" on top of C# document
我想使用 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);
我终于想通了:
// 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);
我想使用 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);
我终于想通了:
// 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);