| File: Rules\ContentFolderInPackageReferenceProjectRule.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.Packaging\NuGet.Packaging.csproj (NuGet.Packaging) |
using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; using NuGet.Common; namespace NuGet.Packaging.Rules { internal class ContentFolderInPackageReferenceProjectRule : IPackageRule { public string MessageFormat { get; } public ContentFolderInPackageReferenceProjectRule(string messageFormat) { MessageFormat = messageFormat; } public IEnumerable<PackagingLogMessage> Validate(PackageArchiveReader builder) { if (builder.GetFiles() .Select(t => PathUtility.GetPathWithDirectorySeparator(t)) .Any(t => t.StartsWith (PackagingConstants.Folders.Content + Path.DirectorySeparatorChar, StringComparison.OrdinalIgnoreCase))) { // if package has content folder but no contentFiles folder if (!builder.GetFiles() .Select(t => PathUtility.GetPathWithDirectorySeparator(t)) .Any(t => t.StartsWith (PackagingConstants.Folders.ContentFiles + Path.DirectorySeparatorChar, StringComparison.OrdinalIgnoreCase))) { var issue = new List<PackagingLogMessage>(); issue.Add(PackagingLogMessage.CreateWarning( string.Format(CultureInfo.CurrentCulture, MessageFormat), NuGetLogCode.NU5121)); return issue; } } return new List<PackagingLogMessage>(); } } }