using Microsoft.CodeAnalysis; using RazorLight; namespace MeetingAssistant.Workflow; internal static class MeetingWorkflowRazorEngineFactory { public static RazorLightEngine Create() { return new RazorLightEngineBuilder() .UseNoProject() .SetOperatingAssembly(typeof(RazorLightEngine).Assembly) .AddMetadataReferences(CreateMetadataReferences()) .Build(); } private static MetadataReference[] CreateMetadataReferences() { return AppDomain.CurrentDomain.GetAssemblies() .Where(assembly => !assembly.IsDynamic && !string.IsNullOrWhiteSpace(assembly.Location)) .Select(assembly => assembly.Location) .Where(File.Exists) .Distinct(StringComparer.OrdinalIgnoreCase) .Select(path => MetadataReference.CreateFromFile(path)) .ToArray(); } }