public static ProjectSnapshot Create(string projectDirectory, string configuration, DesignTimeWorkspace workspaceContext, IReadOnlyList <string> projectSearchPaths) { var projectContextsCollection = workspaceContext.GetProjectContextCollection(projectDirectory); if (!projectContextsCollection.ProjectContexts.Any()) { throw new InvalidOperationException($"Unable to find project.json in '{projectDirectory}'"); } GlobalSettings globalSettings; var currentSearchPaths = projectContextsCollection.Project.ResolveSearchPaths(out globalSettings); var snapshot = new ProjectSnapshot(); snapshot.Project = projectContextsCollection.Project; snapshot.ProjectDiagnostics = new List <DiagnosticMessage>(projectContextsCollection.ProjectDiagnostics); snapshot.ProjectSearchPaths = currentSearchPaths.ToList(); snapshot.GlobalJsonPath = globalSettings?.FilePath; foreach (var projectContext in projectContextsCollection.FrameworkOnlyContexts) { snapshot.ProjectContexts[projectContext.TargetFramework] = ProjectContextSnapshot.Create(projectContext, configuration, currentSearchPaths); } return(snapshot); }
private bool UpdateProject() { ProjectSnapshot newSnapshot = null; if (_appPath.WasAssigned || _configure.WasAssigned || _filesChanged.WasAssigned || _refreshDependencies.WasAssigned) { _appPath.ClearAssigned(); _configure.ClearAssigned(); _filesChanged.ClearAssigned(); bool resetCache = _refreshDependencies.WasAssigned ? _refreshDependencies.Value : false; _refreshDependencies.ClearAssigned(); newSnapshot = ProjectSnapshot.Create(_appPath.Value, _configure.Value, _workspaceContext, _remote.ProjectSearchPaths, clearWorkspaceContextCache: resetCache); } if (newSnapshot == null) { return(false); } _local = newSnapshot; return(true); }
public static ProjectSnapshot Create(string projectDirectory, string configuration, DesignTimeWorkspace workspaceContext, IReadOnlyList<string> previousSearchPaths, bool clearWorkspaceContextCache) { var projectContextsCollection = workspaceContext.GetProjectContextCollection(projectDirectory, clearWorkspaceContextCache); if (!projectContextsCollection.ProjectContexts.Any()) { throw new InvalidOperationException($"Unable to find project.json in '{projectDirectory}'"); } GlobalSettings globalSettings; var currentSearchPaths = projectContextsCollection.Project.ResolveSearchPaths(out globalSettings); var snapshot = new ProjectSnapshot(); snapshot.Project = projectContextsCollection.Project; snapshot.ProjectDiagnostics = new List<DiagnosticMessage>(projectContextsCollection.ProjectDiagnostics); snapshot.ProjectSearchPaths = currentSearchPaths.ToList(); snapshot.GlobalJsonPath = globalSettings?.FilePath; foreach (var projectContext in projectContextsCollection.FrameworkOnlyContexts) { snapshot.ProjectContexts[projectContext.TargetFramework] = ProjectContextSnapshot.Create(projectContext, configuration, previousSearchPaths); } return snapshot; }
private void SendOutgingMessages(List <DiagnosticMessageGroup> diagnostics) { _projectInforamtionMessenger.UpdateRemote(_local, _remote); _projectDiagnosticsMessenger.UpdateRemote(_local, _remote); if (_local.ProjectDiagnostics != null) { diagnostics.Add(new DiagnosticMessageGroup(_local.ProjectDiagnostics)); } var unprocessedFrameworks = new HashSet <NuGetFramework>(_remote.Projects.Keys); foreach (var pair in _local.Projects) { ProjectSnapshot localProjectSnapshot = pair.Value; ProjectSnapshot remoteProjectSnapshot; if (!_remote.Projects.TryGetValue(pair.Key, out remoteProjectSnapshot)) { remoteProjectSnapshot = new ProjectSnapshot(); _remote.Projects[pair.Key] = remoteProjectSnapshot; } if (localProjectSnapshot.DependencyDiagnostics != null) { diagnostics.Add(new DiagnosticMessageGroup( localProjectSnapshot.TargetFramework, localProjectSnapshot.DependencyDiagnostics)); } unprocessedFrameworks.Remove(pair.Key); foreach (var messenger in _messengers) { messenger.UpdateRemote(localProjectSnapshot, remoteProjectSnapshot); } } // Remove all processed frameworks from the remote view foreach (var framework in unprocessedFrameworks) { _remote.Projects.Remove(framework); } }
private bool UpdateProjectStates() { ProjectState state = null; if (_appPath.WasAssigned || _configure.WasAssigned || _filesChanged.WasAssigned || _refreshDependencies.WasAssigned) { _appPath.ClearAssigned(); _configure.ClearAssigned(); _filesChanged.ClearAssigned(); _refreshDependencies.ClearAssigned(); state = ProjectState.Create(_appPath.Value, _configure.Value, _workspaceContext, _remote.ProjectSearchPaths); } if (state == null) { return(false); } _local = Snapshot.CreateFromProject(state.Project); _local.ProjectDiagnostics = state.Diagnostics; foreach (var projectInfo in state.Projects) { var projectWorkd = new ProjectSnapshot { RootDependency = projectInfo.RootDependency, TargetFramework = projectInfo.Framework, SourceFiles = new List <string>(projectInfo.SourceFiles), CompilerOptions = projectInfo.CompilerOptions, ProjectReferences = projectInfo.ProjectReferences, FileReferences = projectInfo.CompilationAssembiles, DependencyDiagnostics = projectInfo.DependencyDiagnostics, Dependencies = projectInfo.Dependencies }; _local.Projects[projectInfo.Framework] = projectWorkd; } return(true); }