using System.IO; using Nuke.Common; using Nuke.Common.Execution; using Nuke.Common.ProjectModel; using Nuke.Common.Tools.DotNet; using static Nuke.Common.IO.FileSystemTasks; using static Nuke.Common.IO.PathConstruction; using static Nuke.Common.Tools.DotNet.DotNetTasks; [CheckBuildProjectConfigurations] [UnsetVisualStudioEnvironmentVariables] class Build : NukeBuild { public static int Main() => Execute(x => x.Publish); [Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")] readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release; [Solution] readonly Solution Solution; AbsolutePath OutputDirectory => RootDirectory / "output"; Target Clean => _ => _ .Before(Restore) .Executes(() => { EnsureCleanDirectory(OutputDirectory); }); Target Restore => _ => _ .Executes(() => { DotNetRestore(s => s .SetProjectFile(Solution)); }); Target Compile => _ => _ .DependsOn(Restore) .Executes(() => { DotNetBuild(s => s .SetProjectFile(Solution) .SetConfiguration(Configuration) .EnableNoRestore()); }); Target Test => _ => _ .DependsOn(Compile) .Executes(() => { DotNetTest(s => s .SetProjectFile(Solution) .EnableNoRestore()); }); Target Publish => _ => _ .DependsOn(Test) .Executes(() =>{ DotNetPublish(s => s .SetConfiguration(Configuration) .SetOutput(OutputDirectory)); var lessFiles = Directory.GetFiles(OutputDirectory / "wwwroot/css", "*.less"); foreach (var file in lessFiles) File.Delete(file); var cssFiles = Directory.GetFiles(OutputDirectory / "wwwroot/css", "*.css"); foreach (var file in cssFiles) if (new FileInfo(file).Length == 0) File.Delete(file); }); }