export async function buildProjects()

in src/projectHelper.ts [19:58]


export async function buildProjects(projects: string[], commandObserver: CommandObserver, cancelToken?: vscode.CancellationToken): Promise<BuildResult[]> {
	var buildResult = new Array<BuildResult>();
	if (commandObserver.buildInProgress) {
		vscode.window.showErrorMessage(localize('extension.existingBuildInProgressMessage', 'There is a build already running, please cancel the build before starting a new one'));
		return Promise.resolve(buildResult);
	}

	try {
		var successProjectCount = 0;
		var failedProjectCount = 0;
		commandObserver.buildInProgress = true;
		commandObserver.resetOutputChannel();
		vscode.workspace.saveAll();
		let unsupportedProjects = await validateProjectSDK(projects, commandObserver);
		if (unsupportedProjects.length > 0) {
			projects = projects.filter(p => unsupportedProjects.indexOf(p) < 0);
			unsupportedProjects.map(p => buildResult.push({ project: p, status: buildStatus.Skipped }));
		}

		for (let project of projects) {
			if (cancelToken && cancelToken.isCancellationRequested) {
				return;
			}
			await dotnetBuild(project, commandObserver, cancelToken).then(() => {
				successProjectCount++;
				buildResult.push({ project: project, status: buildStatus.Success })
			}, () => {
				failedProjectCount++;
				buildResult.push({ project: project, status: buildStatus.Failure })
			});
		}
		commandObserver.logToOutputChannel(localize('extension.buildSummaryMessage', '======== Build: {0} succeeses or up-to-date, {1} failed, {2} skipped ========', successProjectCount, failedProjectCount, unsupportedProjects.length));
	} catch (err) {
		vscode.window.showErrorMessage(err);
	}
	finally {
		commandObserver.buildInProgress = false;
	}
	return Promise.resolve(buildResult);
}