public IEnumerable <PackagingLogMessage> Validate(PackageArchiveReader builder) { var set = new HashSet <string>(StringComparer.OrdinalIgnoreCase); foreach (var file in builder.GetFiles().Select(t => PathUtility.GetPathWithDirectorySeparator(t))) { var parts = file.Split(Path.DirectorySeparatorChar); if (parts.Length >= 3 && parts[0].Equals(LibDirectory, StringComparison.OrdinalIgnoreCase)) { set.Add(file); } } return(set.Where(s => !FrameworkNameValidatorUtility.IsValidFrameworkName(s) && !FrameworkNameValidatorUtility.IsValidCultureName(builder, s)) .Select(CreatePackageIssue)); }
internal IEnumerable <PackagingLogMessage> Validate(IEnumerable <string> files) { var managedCodeConventions = new ManagedCodeConventions(new RuntimeGraph()); var collection = new ContentItemCollection(); collection.Load(files); var libItems = ContentExtractor.GetContentForPattern(collection, managedCodeConventions.Patterns.CompileLibAssemblies); var refItems = ContentExtractor.GetContentForPattern(collection, managedCodeConventions.Patterns.CompileRefAssemblies); var buildItems = ContentExtractor.GetContentForPattern(collection, managedCodeConventions.Patterns.MSBuildFiles); var libFrameworks = ContentExtractor.GetGroupFrameworks(libItems).ToArray(); var refFrameworks = ContentExtractor.GetGroupFrameworks(refItems).ToArray(); var buildFrameworks = ContentExtractor.GetGroupFrameworks(buildItems).ToArray(); if (libFrameworks.Length == 0 && refFrameworks.Length == 0) { //if you can't find the ref and lib folder, then find the build folder if (buildFrameworks.Length != 0) { //if you can find any folders other than native or any, raise an NU5127 if (buildFrameworks.Any(t => (FrameworkConstants.DotNetAll.Satisfies(t) || FrameworkNameValidatorUtility.IsValidFrameworkName(t)) && t.GetShortFolderName() != FrameworkConstants.FrameworkIdentifiers.DotNet && t.GetShortFolderName() != FrameworkConstants.FrameworkIdentifiers.Native)) { var possibleFrameworks = buildFrameworks. Where(t => t.IsSpecificFramework && t.GetShortFolderName() != FrameworkConstants.FrameworkIdentifiers.DotNet && t.GetShortFolderName() != FrameworkConstants.FrameworkIdentifiers.Native). Select(t => t.GetShortFolderName()).ToArray(); (var tfmNames, var suggestedDirectories) = GenerateWarningString(possibleFrameworks); var issue = new List <PackagingLogMessage>(); issue.Add(PackagingLogMessage.CreateWarning(string.Format(MessageFormat, tfmNames, suggestedDirectories), NuGetLogCode.NU5127)); return(issue); } } } return(Array.Empty <PackagingLogMessage>()); }