/* Copyright (C) 2014-2019 de4dot@gmail.com This file is part of dnSpy dnSpy is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. dnSpy is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with dnSpy. If not, see . */ using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using dnlib.DotNet; namespace dnSpy.Contracts.AsmEditor.Compiler { /// /// Compiles source code /// public interface ILanguageCompiler : IDisposable { /// /// Gets the file extension, including the period, eg. ".cs" /// string FileExtension { get; } /// /// Assembly references that must be included when compiling the code, even if the /// references aren't part of the edited assembly. This is usually empty unless the /// language uses types from certain language specific assemblies, eg. Visual Basic /// usually needs Microsoft.VisualBasic. /// /// The module the user is editing /// IEnumerable GetRequiredAssemblyReferences(ModuleDef editedModule); /// /// Initializes the project /// /// Project info void InitializeProject(CompilerProjectInfo projectInfo); /// /// Compiles the code /// /// Cancellation token /// Task CompileAsync(CancellationToken cancellationToken); /// /// Adds more documents /// /// Documents to add to the compilation /// ICodeDocument[] AddDocuments(CompilerDocumentInfo[] documents); /// /// Adds new metadata references /// /// Metadata references /// bool AddMetadataReferences(CompilerMetadataReference[] metadataReferences); } }