diff --git a/src/Workspaces/Core/Portable/Diagnostics/Extensions.cs b/src/Workspaces/Core/Portable/Diagnostics/Extensions.cs index 8b1ee538265ae70bcabb00eb14490710351d1919..70dee2bb2aab61e6782ef501d4bcc8193c48e99a 100644 --- a/src/Workspaces/Core/Portable/Diagnostics/Extensions.cs +++ b/src/Workspaces/Core/Portable/Diagnostics/Extensions.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Collections.Immutable; using System.Globalization; +using System.Linq; using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.CodeFixes; @@ -57,6 +58,15 @@ public static DiagnosticData ToDiagnosticData(this Diagnostic diagnostic, Projec return DiagnosticData.Create(project.GetDocument(diagnostic.Location.SourceTree), diagnostic); } + if (diagnostic.Location.Kind == LocationKind.ExternalFile) + { + var document = project.Documents.FirstOrDefault(d => d.FilePath == diagnostic.Location.GetLineSpan().Path); + if (document != null) + { + return DiagnosticData.Create(document, diagnostic); + } + } + return DiagnosticData.Create(project, diagnostic); }