File: ProjectSystem\CPS\IWorkspaceProjectContext.cs
Web Access
Project: ..\..\..\src\VisualStudio\Core\Def\Microsoft.VisualStudio.LanguageServices_ckcrqypr_wpftmp.csproj (Microsoft.VisualStudio.LanguageServices)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
#nullable disable
 
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis;
using Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem;
 
namespace Microsoft.VisualStudio.LanguageServices.ProjectSystem
{
    /// <summary>
    /// Project context to initialize properties and items of a Workspace project created by <see cref="IWorkspaceProjectContextFactory"/>. 
    /// </summary>
    /// <remarks>
    /// <see cref="IDisposable.Dispose"/> is safe to call on instances of this type on any thread.
    /// </remarks>
    internal interface IWorkspaceProjectContext : IDisposable
    {
        // Project properties.
        string DisplayName { get; set; }
        string ProjectFilePath { get; set; }
        Guid Guid { get; set; }
        bool LastDesignTimeBuildSucceeded { get; set; }
        string BinOutputPath { get; set; }
 
        /// <summary>
        /// When this project is one of a multi-targeting group of projects, this value indicates whether or not this
        /// particular project is the primary one.  The primary project is responsible for certain things when reporting
        /// data from Roslyn's individual projects back to the project system itself.  For example, designer attributes
        /// are only associated with the primary project, and should be skipped for other projects.
        /// </summary>
        bool IsPrimary { get; set; }
 
        ProjectId Id { get; }
 
        // Options.
 
        void SetOptions(string commandLineForOptions);
        void SetOptions(ImmutableArray<string> arguments);
 
        // Other project properties.
        void SetProperty(string name, string value);
 
        // References.
        void AddMetadataReference(string referencePath, MetadataReferenceProperties properties);
        void RemoveMetadataReference(string referencePath);
        void AddProjectReference(IWorkspaceProjectContext project, MetadataReferenceProperties properties);
        void RemoveProjectReference(IWorkspaceProjectContext project);
        void AddAnalyzerReference(string referencePath);
        void RemoveAnalyzerReference(string referencePath);
 
        // Files.
        void AddSourceFile(string filePath, bool isInCurrentContext = true, IEnumerable<string> folderNames = null, SourceCodeKind sourceCodeKind = SourceCodeKind.Regular);
        void RemoveSourceFile(string filePath);
        void AddAdditionalFile(string filePath, bool isInCurrentContext = true);
        void RemoveAdditionalFile(string filePath);
        void AddDynamicFile(string filePath, IEnumerable<string> folderNames = null);
        void RemoveDynamicFile(string filePath);
 
        /// <summary>
        /// Adds a file (like a .editorconfig) used to configure analyzers.
        /// </summary>
        void AddAnalyzerConfigFile(string filePath);
 
        /// <summary>
        /// Removes a file (like a .editorconfig) used to configure analyzers.
        /// </summary>
        void RemoveAnalyzerConfigFile(string filePath);
 
        void StartBatch();
        IAsyncDisposable CreateBatchScope();
        ValueTask EndBatchAsync();
 
        void ReorderSourceFiles(IEnumerable<string> filePaths);
    }
}