प्राप्त करें मैं वाक्यविन्यास पेड़ को संशोधित करने की कोशिश कर रहा हूं और फिर अर्थात् मॉडल अद्यतन कर रहा हूं। - एक ही अपवादसिंटैक्स पेड़ को संशोधित करें, फिर अद्यतन अर्थात् मॉडल
var tree = Roslyn.Compilers.CSharp.SyntaxTree.ParseCompilationUnit(code);
var compilation = Roslyn.Compilers.CSharp.Compilation.Create(
"MyCompilation",
syntaxTrees: new[] { tree },
references: new[] { mscorlib });
var semanticModel = compilation.GetSemanticModel(tree);
...
var oldStatementNode = (parent as ExpressionStatementSyntax); //some SyntaxNode in the tree
var oldExpressionNode = oldStatementNode.Expression;
var newExpressionNode = Syntax.ParenthesizedExpression(oldExpressionNode);
var newRootNode = tree.GetRoot().ReplaceNode(oldExpressionNode, newExpressionNode);
var semanticInfo = semanticModel.GetTypeInfo(newExpressionNode); //throws exception "Syntax node is not within syntax tree"
अगर मैं semanticModel = compilation.GetSemanticModel(tree);
फोन या यहाँ तक कि GetTypeInfo()
कॉल करने से पहले tree
के साथ नए संकलन करने की कोशिश: यहाँ क्या मैं अब तक है।
तो मैं SemanticModel
अपडेट कैसे प्राप्त करूं? (बेशक मैं संशोधित स्रोत प्राप्त कर सकता हूं और इसके साथ सब कुछ शुरू करने से कर सकता हूं, लेकिन मुझे लगता है कि वहां अधिक कुशल तरीका है)।
मुझे कुछ स्पष्ट याद आ रही है मुझे यकीन है, शायद कहीं नया सिंटैक्स पेड़ बनाया गया है?