Example #1
0
    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);
    }
Example #2
0
    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));
    }