public IEnumerable <PackageVerifierIssue> Validate(IPackageRepository packageRepo, IPackage package, IPackageVerifierLogger logger) { if (!package.IsSatellitePackage()) { IEnumerable <string> allXmlFiles = from file in package.GetLibFiles() select file.Path into path where path.EndsWith(".xml", StringComparison.OrdinalIgnoreCase) select path; foreach (IPackageFile current in package.GetLibFiles()) { string assemblyPath = current.Path; // TODO: Does this need to check for just managed code? if (assemblyPath.EndsWith(".dll", StringComparison.OrdinalIgnoreCase)) { string docFilePath = Path.ChangeExtension(assemblyPath, ".xml"); if (!allXmlFiles.Contains(docFilePath, StringComparer.OrdinalIgnoreCase)) { yield return(PackageIssueFactory.AssemblyHasNoDocFile(assemblyPath)); } } } } yield break; }
public IEnumerable <PackageVerifierIssue> Validate(PackageAnalysisContext context) { if (context.Metadata.PackageTypes.Any(p => p == PackageType.DotnetCliTool)) { yield break; } if (!context.PackageReader.IsSatellitePackage()) { var allXmlFiles = from item in context.PackageReader.GetLibItems() from file in item.Items select file into path where path.EndsWith(".xml", StringComparison.OrdinalIgnoreCase) select path; foreach (var current in context.PackageReader.GetLibItems()) { foreach (var item in current.Items) { var assemblyPath = item; // TODO: Does this need to check for just managed code? if (assemblyPath.EndsWith(".dll", StringComparison.OrdinalIgnoreCase)) { var docFilePath = Path.ChangeExtension(assemblyPath, ".xml"); if (!allXmlFiles.Contains(docFilePath, StringComparer.OrdinalIgnoreCase)) { yield return(PackageIssueFactory.AssemblyHasNoDocFile(assemblyPath)); } } } } } }