Public Access
28 lines
896 B
C#
28 lines
896 B
C#
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();
|
|
}
|
|
}
|