/// <summary> /// Write all the output files to the output directory defined in the options after performing a function. /// </summary> /// /// <example> /// The following will output a single file (`NewName.md`) to `OutputDirectory`: /// /// ```c# /// new MetalsharpProject() /// .AddOutput("text", "File.md") /// .Build(i => i.OutputFiles.First(file => file.Name == "File").Name = "NewName", new BuildOptions { OutputDirectory = "OutputDirectory" }); /// ``` /// </example> /// /// <param name="func"> /// The function to perform before the files are output. /// </param> /// <param name="options"> /// The options to configure the building behavior. /// </param> public void Build(Action <MetalsharpProject> func, BuildOptions options) { BeforeBuild?.Invoke(this, new EventArgs()); func(this); AfterBuild?.Invoke(this, new EventArgs()); Build(options); }
internal string ToXml() { var sb = new StringBuilder(); sb.Append("<binding "); if (BeforeBuild.Any()) { sb.Append($"{BindingTargets.BeforeBuild}='{string.Join(",", BeforeBuild)}' "); } if (AfterBuild.Any()) { sb.Append($"{BindingTargets.AfterBuild}='{string.Join(",", AfterBuild)}' "); } if (Clean.Any()) { sb.Append($"{BindingTargets.Clean}='{string.Join(",", Clean)}' "); } if (Open.Any()) { sb.Append($"{BindingTargets.Open}='{string.Join(",", Open)}' "); } sb.Append("/>"); return(sb.ToString()); }
/// <summary> /// Before Build /// </summary> public void OnPreprocessBuild(BuildReport report) => BeforeBuild?.Invoke();