roslyn如何添加#定义VAR";在C#文档之上
我想使用roslyn编辑一个C文档,在上面添加一个“定义琐事” 例如,假设我有以下内容roslyn如何添加#定义VAR";在C#文档之上,c#,edit,document,roslyn,C#,Edit,Document,Roslyn,我想使用roslyn编辑一个C文档,在上面添加一个“定义琐事” 例如,假设我有以下内容 namespace MyNameSpace { <classes> } 名称空间MyNameSpace{ } 我想去 #define X namespace MyNameSpace { <classes> } #定义X 名称空间MyNameSpace{ } 我尝试了以下方法: DocumentEditor editor = <get document editor&g
namespace MyNameSpace {
<classes>
}
名称空间MyNameSpace{
}
我想去
#define X
namespace MyNameSpace {
<classes>
}
#定义X
名称空间MyNameSpace{
}
我尝试了以下方法:
DocumentEditor editor = <get document editor>
var compilationUnit = SyntaxFactory.ParseCompilationUnit("#defin X");
var defineXTrivia = compilationUnit.GetFirstDirective();
editor.InsertBefore(editor.OriginalRoot, defineXTrivia);
DocumentEditor=
var compilationUnit=SyntaxFactory.ParseCompilationUnit(“#定义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);
转到此处键入
#定义VAR
并按下大按钮。这应该会对您有所帮助。您尝试的代码是如何失败的?当我调用l editor.GetChangedDocument()时,它抛出InvalidOperationException:指定的项不是列表的元素。虽然这样做很有效,但创建defineXDirective不是很容易吗?var defineXDirective=SyntaxFactory.Trivia(SyntaxFactory.DefineDirectiveTrivia(“X”,isActive:true).NormalizeWhitespace());事实上,我同意这是相当好的。