| File: DiscoverDefaultScopedCssItems.cs | Web Access |
| Project: src\sdk\src\StaticWebAssetsSdk\Tasks\Microsoft.NET.Sdk.StaticWebAssets.Tasks.csproj (Microsoft.NET.Sdk.StaticWebAssets.Tasks) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #nullable disable using Microsoft.Build.Framework; namespace Microsoft.AspNetCore.StaticWebAssets.Tasks; [MSBuildMultiThreadableTask] public class DiscoverDefaultScopedCssItems : Task { [Required] public ITaskItem[] Content { get; set; } [Required] // <c>.cshtml.css</c> is only supported for .NET 6 and newer apps. Since this task is used in older apps // too, this property determines if we should consider .cshtml.css files. public bool SupportsScopedCshtmlCss { get; set; } [Output] public ITaskItem[] DiscoveredScopedCssInputs { get; set; } public override bool Execute() { var discoveredInputs = new List<ITaskItem>(); foreach (var candidate in Content) { var fullPath = candidate.GetMetadata("FullPath"); if (string.Equals(candidate.GetMetadata("Scoped"), "false", StringComparison.OrdinalIgnoreCase)) { continue; } if (fullPath.EndsWith(".razor.css", StringComparison.OrdinalIgnoreCase)) { discoveredInputs.Add(candidate); } else if (SupportsScopedCshtmlCss && fullPath.EndsWith(".cshtml.css", StringComparison.OrdinalIgnoreCase)) { discoveredInputs.Add(candidate); } } DiscoveredScopedCssInputs = [.. discoveredInputs]; return !Log.HasLoggedErrors; } }