static MSBuildSettings CreatePreProcessingMSBuildSettings(PlatformTarget target, FilePath targetFile) { var settings = new AnyBuildSettings(BuildConfig.BuildSettings); settings.PlatformTarget = target; var buildSettings = XBuildHelper.CreateMSBuildSettings(settings); var argsCustomizer = buildSettings.ArgumentCustomization; buildSettings.ArgumentCustomization = args => { if (argsCustomizer != null) { args = argsCustomizer.Invoke(args); } args.AppendQuoted("/preprocess:" + targetFile.FullPath); return(args); }; return(buildSettings); }
public static void InvokeXBuild(FilePath path, AnyBuildSettings settings, PlatformTarget platformTarget) { settings = new AnyBuildSettings(settings); settings.PlatformTarget = platformTarget; if (settings == null) { throw new ArgumentNullException("settings"); } var targets = new List <string>(); targets.AddRange(settings.Targets); if (targets.Count == 0) { targets.Add("Build"); } var relativeProjectFile = Context.Environment.WorkingDirectory.GetRelativePath(path); Context.Log.Verbose(string.Format("Starting build for {0} with platform {1}", relativeProjectFile, platformTarget)); foreach (var target in targets) { if (Context.Environment.Platform.Family == PlatformFamily.Windows && !BuildConfig.UseXBuildOnWindows) { Context.MSBuild(path, XBuildHelper.CreateMSBuildSettings(settings, target)); } else { Context.XBuild(path, XBuildHelper.CreateXBuildSettings(settings, path, target)); } } Context.Log.Verbose(string.Format("Finished build for {0} with platform {1}", relativeProjectFile, platformTarget)); }