Kısmi sınıflar için tüm bildirimlerde rapor vermeye çalışmak için kod analizörü şablonundan gelen varsayılan analizci projesini değiştiriyorum.Report Partial ClassesDiagnostik
Ben kodunu değiştirmiş: İki ayrı dosyalarda
public override void Initialize(AnalysisContext context)
{
context.RegisterSymbolAction(AnalyzeSymbol, SymbolKind.NamedType);
}
private static void AnalyzeSymbol(SymbolAnalysisContext context)
{
var namedTypeSymbol = (INamedTypeSymbol)context.Symbol;
// Find just those named type symbols with names containing lowercase letters.
if (namedTypeSymbol.Name.ToCharArray().Any(char.IsLower))
{
foreach (var location in namedTypeSymbol.Locations)
{
// For all such symbols, produce a diagnostic.
var diagnostic = Diagnostic.Create(Rule, location, namedTypeSymbol.Name);
context.ReportDiagnostic(diagnostic);
}
}
}
, böyle kısmi sınıfları:
// File1.cs
partial class Foo
{
public string BarString;
}
// File2.cs
partial class Foo
{
public string FooBarString;
}
Ben ReportDiagnostic üzerinde kesme noktaları koymak ve her çağrısında görüyorum konumu, ancak Visual Studio'da yalnızca tek bir dosyada tanılama raporlar.
Birden çok uygulamayı Foo
tek bir dosyaya koyarsam (ve bu dosya bildiriminde bildiriliyorsa), her iki tanılamayı da bildiririm.
Tanılamaların nasıl raporlanacağını veya bu bir hata olduğunu yanlış anlıyor muyum? Bir hata ise, bu bir Roslyn sorunu mu yoksa Visual Studio'nun Roslyn tüketimi ile ilgili bir problem mi?
Her iki dosya da IDE'de açık mı? – SLaks
Evet, her iki dosya açık. –
Bunu yeniden üretebilirim. Bana bir böcek gibi geliyor. Şimdiye kadar bunun için bir sorun açmayı önermediyseniz: https://github.com/dotnet/roslyn/issues/ – JoshVarty