SORU: Kişisel DocumentationProvider'ımı ağaç sembollerine nasıl uygularım? SymbolFinder.FindSymbolAtPosition()Kaynak ağaç sembolleri için verinin üzerine geldiğinde roslyn'i kullanma
Kullanırken aldığım sembolün türü Özellikle GetDocumentationForSymbol() işlevini geçersiz kılmak istiyorum. Otomatik tamamlama sembollerim için geçersiz kıldım, ancak üzerine geldiğim semboller değil.
AMAÇ:
Merhaba, ben oluşturma bir metin editörü için intellisense toplamak için Roslyn kullanıyorum. Yapmam gereken şeylerden biri hızlı bilgi veya araç ipuçları. Otomatik tamamlama önerileri için çalışıyorum. Bu
compilation = CSharpCompilation.Create(
"MyIntellisense",
new[] { CSharpSyntaxTree.ParseText(dotNetCode) },
assemblies
.Select(i => MetadataReference
.CreateFromFile(i.Location, MetadataReferenceProperties.Assembly,
new DotNetDocumentationProvider(
new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));
gibi görünen bir parçacığını kullanarak bu XML ve dokümantasyon ben gereken şekilde ayrıştırır benim kendi kişisel DotNetDocumentationProvider kullanır. Bu, ben Öneriler.GetRecommendedSymbolsAtPosition() kullandığımda sahip olduğum sembollerin türleri olan montaj sembolleri için çalışır.
DÜZENLEME: Sadece daha arka plan :)
Ben iki farklı şekilde semboller olsun vermek istedi.
var information = symbol.GetDocumentationCommentXml();
:
1) Tek yönlü kullanıcı ben gidebilirsiniz Bu sembollerle ve her bir arama için otomatik tamamlama bilgi sorduğunda ben bu kullanmak
var symbols = Recommender.GetRecommendedSymbolsAtPosition(semanticModel, offset, solution.Workspace);
çağırdığınızda olduğu
protected override string GetDocumentationForSymbol(string documentationMemberID, CultureInfo preferredCulture, CancellationToken cancellationToken = default(CancellationToken))
:
Bu sonuçta ben sınıf DocumentationProvider dan geçersiz kıldık bir işlevini çağırır 0
2) İkinci yol aslında kod aynı hattan (aynı işlevi çağırmak
var symbol = SymbolFinder.FindSymbolAtPosition(semanticModel, offset, workspace, cancellationToken);
üzerinde kullanıcı bu KURU)
var information = symbol.GetDocumentationCommentXml();
Ama bu tutarak geldiğinde içindir Benim geçersiz kılma GetDocumentationCommentXml() yerine, varsayılan Roslyn olanı çağırır.
Teşekkürler!
Standart sağlayıcıyla ilgili sorun nedir? – SLaks
Hangi semboller çalışmıyor? – SLaks
Belgeleri editörümüz intellisense'de quickinfo ile açığa çıkarmak istiyoruz. Sorun şu ki, kaynak kodumuz dinamik bir biçimde (ASP.NET gibi) templated bir dilden üretilir ve sonuç olarak, bir çok sentetik ad alanı, sınıf adı ve orijinaline kodlama yapan son kullanıcıya maruz kalmaması gereken diğer şeyler içerir. templated kaynağı. – ReckerDan