45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
using System.Collections.Immutable;
|
|
using System.Reflection;
|
|
|
|
using Microsoft.CodeAnalysis;
|
|
using Microsoft.CodeAnalysis.CSharp;
|
|
|
|
using RoslynPad.Roslyn;
|
|
|
|
namespace Szmedi.RvKits.RvScript
|
|
{
|
|
public class RevitRoslynHost : RoslynHost
|
|
{
|
|
public RevitRoslynHost(IEnumerable<Assembly> additionalAssemblies = null, RoslynHostReferences references = null, ImmutableArray<string>? disabledDiagnostics = null) : base(additionalAssemblies, references, disabledDiagnostics)
|
|
{
|
|
}
|
|
|
|
protected override Project CreateProject(Solution solution, DocumentCreationArgs args, CompilationOptions compilationOptions, Project previousProject = null)
|
|
{
|
|
var name = args.Name ?? "Program";
|
|
var id = ProjectId.CreateNewId(name);
|
|
|
|
var parseOptions = new CSharpParseOptions(kind: SourceCodeKind.Script, languageVersion: LanguageVersion.Default);
|
|
|
|
compilationOptions = compilationOptions.WithScriptClassName(name);
|
|
|
|
solution = solution.AddProject(ProjectInfo.Create(
|
|
id,
|
|
VersionStamp.Create(),
|
|
name,
|
|
name,
|
|
LanguageNames.CSharp,
|
|
isSubmission: true,
|
|
parseOptions: parseOptions,
|
|
hostObjectType: typeof(ScriptGlobals),
|
|
compilationOptions: compilationOptions,
|
|
metadataReferences: previousProject != null ? ImmutableArray<MetadataReference>.Empty : DefaultReferences,
|
|
projectReferences: previousProject != null ? new[] { new ProjectReference(previousProject.Id) } : null));
|
|
|
|
var project = solution.GetProject(id);
|
|
|
|
return project;
|
|
}
|
|
}
|
|
}
|