public BuildToolsServer(
            IProject project,
            ICommunicationChannel channel,
            IOutputWindowManager outputWindow,
            IBuildErrorProcessor errorProcessor,
            IProjectSourceManager projectSources,
            UnconfiguredProject unconfiguredProject)
        {
            _project        = project;
            _channel        = channel;
            _outputWindow   = outputWindow;
            _errorProcessor = errorProcessor;
            _projectSources = projectSources;

            // Build integration is not implemented for VisualC projects
            if (unconfiguredProject?.Capabilities?.Contains("VisualC") != true)
            {
                _project.RunWhenLoaded((_) =>
                {
                    _serverLoopCts = new CancellationTokenSource();
                    VSPackage.TaskFactory.RunAsyncWithErrorHandling(RunServerLoopAsync);
                });
                _project.Unloaded += () => _serverLoopCts.Cancel();
            }

            _projectName = unconfiguredProject != null?Path.GetFileName(unconfiguredProject.FullPath) : "";
        }
        public ErrorListManager(SVsServiceProvider serviceProvider, IBuildErrorProcessor buildErrorProcessor, IProject project)
        {
            _serviceProvider     = serviceProvider;
            _errorListProvider   = new ErrorListProvider(_serviceProvider);
            _buildErrorProcessor = buildErrorProcessor;
            _project             = project;

            _project.Unloaded += () => _errorListProvider.Tasks.Clear();
        }
Example #3
0
        private static BuildToolsServer StartBuildServer(Mock <IProject> projectMock, ICommunicationChannel channel, IFileSynchronizationManager deployManager = null, IBuildErrorProcessor errorProcessor = null)
        {
            deployManager  = deployManager ?? new Mock <IFileSynchronizationManager>().Object;
            errorProcessor = errorProcessor ?? new Mock <IBuildErrorProcessor>().Object;

            var output = new Mock <IOutputWindowManager>();

            output.Setup((w) => w.GetExecutionResultPane()).Returns(new Mock <IOutputWindowWriter>().Object);

            var server = new BuildToolsServer(projectMock.Object, channel, output.Object, errorProcessor, deployManager, null);

            projectMock.Raise((p) => p.Loaded += null, projectMock.Object.Options); // starts the server
            return(server);
        }