public IEnumerable <PackageIssue> Validate(PackageBuilder builder) { foreach (IPackageFile file in builder.Files) { string path = file.Path; string directory = Path.GetDirectoryName(path); // if under 'lib' directly if (directory.Equals(PackagingConstants.Folders.Lib, StringComparison.OrdinalIgnoreCase)) { if (PackageHelper.IsAssembly(path)) { yield return(CreatePackageIssueForAssembliesUnderLib(path)); } } else if (!ValidFolders.Any(folder => path.StartsWith(folder, StringComparison.OrdinalIgnoreCase))) { // when checking for assemblies outside 'lib' folder, only check .dll files. // .exe files are often legitimate outside 'lib'. if (path.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".winmd", StringComparison.OrdinalIgnoreCase)) { yield return(CreatePackageIssueForAssembliesOutsideLib(path)); } } } }
public IEnumerable <PackLogMessage> Validate(PackageArchiveReader builder) { foreach (var packageFile in builder.GetFiles()) { var file = PathUtility.GetPathWithDirectorySeparator(packageFile); var directory = Path.GetDirectoryName(file); // if under 'lib' directly if (directory.Equals(PackagingConstants.Folders.Lib, StringComparison.OrdinalIgnoreCase)) { if (PackageHelper.IsAssembly(file)) { yield return(CreatePackageIssueForAssembliesUnderLib(file)); } } else if (!ValidFolders.Any(folder => file.StartsWith(folder, StringComparison.OrdinalIgnoreCase))) { // when checking for assemblies outside 'lib' folder, only check .dll files. // .exe files are often legitimate outside 'lib'. if (file.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) || file.EndsWith(".winmd", StringComparison.OrdinalIgnoreCase)) { yield return(CreatePackageIssueForAssembliesOutsideLib(file)); } } } }