Roslyn GetDescriptionAsync дает неполное описание

Я пытаюсь изучить службу завершения кода Roslyn. Я могу получить список завершения, но когда я пытаюсь получить описание, он возвращает только модификаторы типа и доступа, но не фактическое описание (например, функция, используемая для печати на консоли).

Вот как я пытался получить описание:

       var code = @"using System;
            using TestDll;

            public class MyClass
            {
                public static void MyMethod(int value)
                {
                    Test.
                }
            }";

            var projectInfo = ProjectInfo.Create(ProjectId.CreateNewId(), VersionStamp.Create(), "MyProject", "MyProject", LanguageNames.CSharp).
                WithMetadataReferences(new[] { MetadataReference.CreateFromFile("TestDll.dll", documentation: XmlDocumentationProvider.CreateFromFile("TestDLL.xml")) });
            var project = workspace.AddProject(projectInfo);
            var document = workspace.AddDocument(project.Id, "MyFile.cs", SourceText.From(code));

            await PrintCompletionResults(document, code.LastIndexOf("Test.") + 5);

Метод завершения печати

       private static async Task PrintCompletionResults(Document document, int position)
        {
            var completionService = CompletionService.GetService(document);
            var results = await completionService.GetCompletionsAsync(document, position);

            foreach (var i in results.Items)
            {
                Console.WriteLine(i.DisplayText);
                var desc = completionService.GetDescriptionAsync(document, i).Result; // returns for example "interface Test.DebugPrint()"

                Console.WriteLine(desc.Text);
                foreach (var prop in i.Properties)
                {
                    Console.Write($"{prop.Key}:{prop.Value}  ");
                }

                Console.WriteLine();
                foreach (var tag in i.Tags)
                {
                    Console.Write($"{tag}  ");
                }

                Console.WriteLine();
                Console.WriteLine();
            }
        }

0 ответов

Другие вопросы по тегам