public override async Task Build(string configuration, CancellationToken cancellationToken) { var props = new Dictionary <string, string> { { "OutputPath", OutputDirectory.FullName }, { "Configuration", string.IsNullOrEmpty(configuration) ? "Release" : configuration }, { "AndroidPackageFormat", "apk" }, { "AndroidSupportedAbis", "x86" } }; // msbuild ../sample/TestApp.Android/TestApp.Android.csproj /p:Configuration=Release /p:AndroidPackageFormat=apk /p:AndroidSupportedAbis=x86 /p:OutputPath=$UITESTPATH/bin/ /t:SignAndroidPackage await MSBuild.Build(ProjectFile.FullName, OutputDirectory.Parent.Parent.FullName, props, cancellationToken, "SignAndroidPackage").ConfigureAwait(false); }
public override async Task Build(string configuration, CancellationToken cancellationToken) { var outputPath = OutputDirectory.FullName + Path.DirectorySeparatorChar; var props = new Dictionary <string, string> { { "OutputPath", outputPath }, { "Configuration", string.IsNullOrEmpty(configuration) ? "Release" : configuration }, { "Platform", "iPhoneSimulator" } }; // msbuild ../sample/TestApp.iOS/TestApp.iOS.csproj /p:Platform=iPhoneSimulator /p:Configuration=Release /p:OutputPath=$UITESTPATH/bin/ await MSBuild.Build(ProjectFile.FullName, OutputDirectory.Parent.Parent.FullName, props, cancellationToken).ConfigureAwait(false); }
public void Build() { if (!BuildAfterCodeGenerationIsCompleted) { return; } foreach (var data in Queue) { var fileName = Path.GetFileName(data.ProjectFilePath); Trace("Compile started." + fileName); MSBuild.Build(data); if (data.BuildError == null) { Trace($"Compile successfully finished. {fileName}"); } else { OnError(data.BuildError); } } }
static void Main(string[] args) { var msBuild = new MSBuild(AppConfigurator.GetAppConfigurator()); msBuild.Build(); }
public void CompileAllCommitAndCopy() { _git.FetchAll(); var commitList = GetCommitList().Reverse().ToList(); for (var i = 0; i < commitList.Count; i++) { var commit = commitList[i]; try { Log($"开始 {commit} 二分,本次任务第{i + 1}次构建,总共{commitList.Count}次构建"); if (!CheckNeedCompile(commit)) { Log($"已构建过 {commit} 无须再次运行,跳过此构建"); continue; } CleanDirectory(commit); // 如果没有指定使用 bat 脚本构建,那么执行通用构建 var compilerBatFile = BinaryChopCompileConfiguration.CompilerBatFile; if (string.IsNullOrEmpty(compilerBatFile) || !File.Exists(compilerBatFile)) { Log($"找不到指定的 bat 构建脚本文件 {compilerBatFile} 将使用默认的方式构建"); // 这里是代码里面自己带的构建配置文件 var appConfigurator = GetCurrentBuildConfiguration(); var currentBuildLogFile = GetCurrentBuildLogFile(appConfigurator); // 填充一下文件路径 var fileSniff = new FileSniff(appConfigurator); fileSniff.Sniff(); var msbuildConfiguration = AppConfigurator.Of <MsbuildConfiguration>(); var msBuildCompiler = new MSBuild(appConfigurator); msBuildCompiler.Build(new MSBuildCommandOptions() { ShouldRestore = msbuildConfiguration.ShouldRestore, MaxCpuCount = msbuildConfiguration.MaxCpuCount, }); MoveFile(commit, currentBuildLogFile); } else { Log($"开始执行 {compilerBatFile} 构建脚本文件"); var(success, output) = ProcessCommand.ExecuteCommand(compilerBatFile, null); // 将输出写入到文件里面 var logFile = Path.GetTempFileName(); File.WriteAllText(logFile, output); MoveFile(commit, new FileInfo(logFile)); } LastCommit = commit; Log($"构建 {commit} 完成,休息一下。休息 {BinaryChopCompileConfiguration.SecondTimeToRest} 秒中"); // 构建完成,休息一下 // 同步的等待,这里是调度任务,不需要使用异步 Task.Delay(TimeSpan.FromSeconds(BinaryChopCompileConfiguration.SecondTimeToRest)).Wait(); } catch (Exception e) { Log(e.ToString()); } } }