in src/Microsoft.NuGet.Build.Tasks/ResolveNuGetPackageAssets.cs [359:391]
private void GetAnalyzers(JObject lockFile)
{
// For analyzers, analyzers could be provided in runtime implementation packages. This might be reasonable -- imagine a gatekeeper
// scenario where somebody has a library but on .NET Native might have some specific restrictions that need to be enforced.
var target = GetTargetOrAttemptFallback(lockFile, needsRuntimeIdentifier: !string.IsNullOrEmpty(RuntimeIdentifier));
foreach (var package in GetPackagesFromTarget(lockFile, target))
{
var files = package.LibraryObject["files"];
if (files != null)
{
foreach (var file in files.Children()
.Select(x => x.ToString())
.Where(x => x.StartsWith("analyzers")))
{
if (Path.GetExtension(file).Equals(".dll", StringComparison.OrdinalIgnoreCase))
{
string path;
if (TryGetFile(package.Id, package.Version, package.RelativePackagePath, file, out path))
{
var analyzer = new TaskItem(path);
analyzer.SetMetadata(NuGetPackageIdMetadata, package.Id);
analyzer.SetMetadata(NuGetPackageVersionMetadata, package.Version);
_analyzers.Add(analyzer);
}
}
}
}
}
}