예제 #1
0
        public TaskEngine(ExpressionEngine.ExpressionEngine expressionEngine,
                          IFileSystem fileSystem)
        {
            if (expressionEngine == null)
            {
                throw new ArgumentNullException("expressionEngine");
            }
            if (fileSystem == null)
            {
                throw new ArgumentNullException("fileSystem");
            }

            _expressionEngine = expressionEngine;
            _fileSystem       = fileSystem;

            _taskRunners = new Dictionary <Type, ITaskRunner>
            {
                { typeof(PropertyGroup), new PropertyGroupTask(_expressionEngine) },
                { typeof(ItemGroup), new ItemGroupTask(_expressionEngine) },
                { typeof(Message), new MessageTask(_expressionEngine) },
                { typeof(Warning), new WarningTask(_expressionEngine) },
                { typeof(Error), new ErrorTask(_expressionEngine) },
                { typeof(Copy), new CopyTask(_expressionEngine, _fileSystem) },
                { typeof(Delete), new DeleteTask(_expressionEngine, _fileSystem) },
                //{typeof (Csc), new CscTask(_expressionEngine, _fileSystem)},
                { typeof(Csc), new RoslynTask(_expressionEngine, _fileSystem) },
                { typeof(Exec), new ExecTask(_expressionEngine, _fileSystem) },
                { typeof(ResolveAssemblyReference), new ResolveAssemblyReferenceTask(_expressionEngine, _fileSystem) },
                { typeof(ResolveProjectReference), new ResolveProjectReferenceTask(_expressionEngine, _fileSystem) },
                { typeof(Output), new OutputTask(_expressionEngine) }
            };
        }
예제 #2
0
        public WarningTask(ExpressionEngine.ExpressionEngine expressionEngine)
        {
            if (expressionEngine == null)
            {
                throw new ArgumentNullException("expressionEngine");
            }

            _expressionEngine = expressionEngine;
        }
예제 #3
0
        public PropertyGroupTask(ExpressionEngine.ExpressionEngine expressionEngine)
        {
            if (expressionEngine == null)
            {
                throw new ArgumentNullException("expressionEngine");
            }

            _expressionEngine = expressionEngine;
        }
예제 #4
0
        public DeleteTask(ExpressionEngine.ExpressionEngine expressionEngine, IFileSystem fileSystem)
        {
            if (expressionEngine == null)
            {
                throw new ArgumentNullException("expressionEngine");
            }
            if (fileSystem == null)
            {
                throw new ArgumentNullException("fileSystem");
            }

            _expressionEngine = expressionEngine;
            _fileSystem       = fileSystem;
        }
예제 #5
0
        public RoslynTask(ExpressionEngine.ExpressionEngine expressionEngine, IFileSystem fileSystem)
        {
            if (expressionEngine == null)
            {
                throw new ArgumentNullException(nameof(expressionEngine));
            }
            if (fileSystem == null)
            {
                throw new ArgumentNullException(nameof(fileSystem));
            }

            _expressionEngine = expressionEngine;
            _fileSystem       = fileSystem;
        }
예제 #6
0
        public BuildEngine(Arguments arguments, IFileSystem fileSystem)
        {
            if (arguments == null)
            {
                throw new ArgumentNullException("arguments");
            }

            if (arguments.MaxCpuCount <= 0 || arguments.MaxCpuCount > 1024)
            {
                throw new BuildException(
                          string.Format(
                              "error MSB1032: Maximum CPU count is not valid. Value must be an integer greater than zero and nore more than 1024.\r\nSwitch: {0}",
                              arguments.MaxCpuCount));
            }

            _fileSystem = fileSystem;
            var buildlogStream = _fileSystem.OpenWrite("buildlog.txt");

            Log = new BuildLog(arguments, buildlogStream, true);
            _csharpProjectParser = new ProjectParser(_fileSystem);
            _solutionParser      = new SolutionParser(_csharpProjectParser);
            _expressionEngine    = new ExpressionEngine.ExpressionEngine(fileSystem);
            _taskEngine          = new TaskEngine.TaskEngine(_expressionEngine, fileSystem);
            _arguments           = arguments;
            if (_arguments.Targets.Count == 0)
            {
                _arguments.Targets.Add(Targets.Build);
            }
            else
            {
                _arguments.Targets.Sort(new TargetComparer());
            }

            _environment = new BuildEnvironment(name: "Build Engine Environment");
            foreach (var property in arguments.Properties)
            {
                _environment.Properties.Add(property.Name, property.Value);
            }

            _buildScript = LoadBuildScript();
        }
예제 #7
0
 public OutputTask(ExpressionEngine.ExpressionEngine expressionEngine)
 {
     _expressionEngine = expressionEngine;
 }
예제 #8
0
 public ResolveAssemblyReferenceTask(ExpressionEngine.ExpressionEngine expressionEngine, IFileSystem fileSystem)
 {
     _expressionEngine = expressionEngine;
     _fileSystem       = fileSystem;
 }