Как я могу развить свою SemanticModel в Roslyn? [Дубликат]

Чтобы найти файл ini, сначала запустите

php -i | grep -i "loaded configuration file"

. Затем откройте файл и измените

upload_max_filesize = 2M
post_max_size = 2M

, заменив 2M на нужный размер, например 100M.

У меня есть сообщение в блоге с немного дополнительной информацией http://www.seanbehan.com/how-to-increase-or-change-the-file-upload- размер-в-PHP-ини-файл-для-WordPress

7
задан ren 28 August 2012 в 18:51
поделиться

1 ответ

Типы Roslyn неизменяемы, поэтому вам нужно построить новый SyntaxTree для вашего newRootNode, а затем вызвать compilation.UpdateSyntaxTree, чтобы получить новый Compilation, а затем вы можете вызвать newCompilation.GetSemanticModel(newTree), чтобы получить новый SemanticModel.

Рассмотрите возможность перехода на уровень обслуживания и вместо этого используйте ISolution. Что-то вроде:

var doc = Solution.Create(SolutionId.CreateNewId()).AddCSharpProject("MyCompilation", "MyCompilation").AddMetadataReference(mscorlib).AddDocument("MyFile", code);

var semanticModel = (SemanticModel)doc.GetSemanticModel();
var root = (CompilationUnitSyntax)doc.GetSyntaxRoot();

SyntaxNode parent = null;
var oldStatementNode = (parent as ExpressionStatementSyntax); //some SyntaxNode in the tree
var oldExpressionNode = oldStatementNode.Expression;
var newExpressionNode = Syntax.ParenthesizedExpression(oldExpressionNode);
var newRootNode = root.ReplaceNode(oldExpressionNode, newExpressionNode);

doc = doc.UpdateSyntaxRoot(newRootNode);
semanticModel = (SemanticModel)doc.GetSemanticModel();
14
ответ дан Kevin Pilch 24 August 2018 в 06:05
поделиться