Exemplo n.º 1
0
        private static async Task <(ErgonProject project, DiagnosticLog log)> LoadProjectAsync(
            string path, ErgonProjectCollection projectCollection, CancellationToken cancellationToken)
        {
            var log = new DiagnosticLog();

            try
            {
                var loadedProjects = projectCollection.GetLoadedProjects(path);
                if (loadedProjects != null && loadedProjects.Count > 0)
                {
                    Debug.Assert(loadedProjects.Count == 1);

                    return(loadedProjects.First(), log);
                }

                using (var stream = FileUtilities.OpenAsyncRead(path))
                    using (var readStream = await SerializableBytes.CreateReadableStreamAsync(stream, cancellationToken).ConfigureAwait(false))
                        using (var reader = new StreamReader(readStream))
                        {
                            var project = ErgonProject.FromString(await reader.ReadToEndAsync(), path);

                            projectCollection.Add(project);

                            // todo: assign project.path = path
                            return(project, log);
                        }
            }
            catch (Exception e)
            {
                log.Add(e, path);
                return(project : null, log);
            }
        }
Exemplo n.º 2
0
        private async Task <ErgonProjectInstance> BuildProjectAsync(
            ErgonProject project, string[] targets, DiagnosticLog log, CancellationToken cancellationToken)
        {
            // create a project instance to be executed by build engine.
            // The executed project will hold the final model of the project after execution via msbuild.
            var projectInstance = project.CreateProjectInstance();

            // Verify targets
            foreach (var target in targets)
            {
                if (!projectInstance.Targets.ContainsKey(target))
                {
                    log.Add(string.Format(WorkspaceMSBuildResources.Project_does_not_contain_0_target, target), projectInstance.FullPath);
                    return(projectInstance);
                }
            }

            //_batchBuildLogger.SetProjectAndLog(projectInstance.FullPath, log);

            //var buildRequestData = new MSB.Execution.BuildRequestData(projectInstance, targets);

            //var result = await BuildAsync(buildRequestData, cancellationToken).ConfigureAwait(false);

            //if (result.OverallResult == ErgonBuildResultCode.Failure)
            //{
            //    if (result.Exception != null)
            //    {
            //        log.Add(result.Exception, projectInstance.FullPath);
            //    }
            //}

            return(projectInstance);
        }
Exemplo n.º 3
0
        public Task <ErgonProjectInstance> BuildProjectAsync(
            ErgonProject project, DiagnosticLog log, CancellationToken cancellationToken)
        {
            Debug.Assert(_batchBuildStarted);

            var targets = new[] { TargetNames.Compile, TargetNames.CoreCompile };

            return(BuildProjectAsync(project, targets, log, cancellationToken));
        }
Exemplo n.º 4
0
        protected ProjectFile(ProjectFileLoader loader, ErgonProject loadedProject, ProjectBuildManager buildManager, DiagnosticLog log)
        {
            _loader        = loader;
            _loadedProject = loadedProject;
            _buildManager  = buildManager;

            _projectDirectory = loadedProject != null
                ? PathUtilities.EnsureTrailingSeparator(loadedProject.DirectoryPath)
                : null;

            Log = log;
        }
Exemplo n.º 5
0
 public ErgonProjectFile(ErgonProjectFileLoader loader, ErgonProject project, ProjectBuildManager buildManager, DiagnosticLog log)
     : base(loader, project, buildManager, log)
 {
 }
Exemplo n.º 6
0
 protected override ProjectFile.ProjectFile CreateProjectFile(ErgonProject project, ProjectBuildManager buildManager, DiagnosticLog log)
 {
     return(new ErgonProjectFile(this, project, buildManager, log));
 }
Exemplo n.º 7
0
 protected abstract ProjectFile CreateProjectFile(ErgonProject project, ProjectBuildManager buildManager, DiagnosticLog log);