Skip to content

Commit 79f44e0

Browse files
authored
Merge pull request #61 from Mythetech/feat/razor-previews
2 parents b0227fb + 1bbf250 commit 79f44e0

12 files changed

Lines changed: 1175 additions & 72 deletions

File tree

Apollo.Compilation.Worker/Program.cs

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Buffers.Text;
1+
using System.Buffers.Text;
22
using System.Collections.Concurrent;
33
using System.Reflection;
44
using System.Runtime.Loader;
@@ -64,9 +64,41 @@ await resolver.GetMetadataReferenceAsync("System.Console.wasm"),
6464
await resolver.GetMetadataReferenceAsync("xunit.assert.wasm"),
6565
await resolver.GetMetadataReferenceAsync("xunit.core.wasm")
6666
};
67-
67+
68+
var isRazorProject = solution.Type == ProjectType.RazorClassLibrary ||
69+
solution.Items.Any(i => i.Path.EndsWith(".razor", StringComparison.OrdinalIgnoreCase));
70+
71+
if (isRazorProject)
72+
{
73+
try
74+
{
75+
references.Add(await resolver.GetMetadataReferenceAsync("System.Threading.Tasks.wasm"));
76+
references.Add(await resolver.GetMetadataReferenceAsync("System.Collections.wasm"));
77+
references.Add(await resolver.GetMetadataReferenceAsync("System.Linq.wasm"));
78+
references.Add(await resolver.GetMetadataReferenceAsync("System.ObjectModel.wasm"));
79+
references.Add(await resolver.GetMetadataReferenceAsync("System.ComponentModel.wasm"));
80+
references.Add(await resolver.GetMetadataReferenceAsync("System.ComponentModel.Primitives.wasm"));
81+
LogMessageWriter.Log("Added system references for Razor project", LogSeverity.Debug);
82+
}
83+
catch (Exception ex)
84+
{
85+
LogMessageWriter.Log($"Warning: Could not load system references: {ex.Message}", LogSeverity.Warning);
86+
}
87+
88+
try
89+
{
90+
references.Add(await resolver.GetMetadataReferenceAsync("Microsoft.AspNetCore.Components.wasm"));
91+
references.Add(await resolver.GetMetadataReferenceAsync("Microsoft.AspNetCore.Components.Web.wasm"));
92+
LogMessageWriter.Log("Added Blazor component references for Razor project", LogSeverity.Debug);
93+
}
94+
catch (Exception ex)
95+
{
96+
LogMessageWriter.Log($"Warning: Could not load Blazor references: {ex.Message}", LogSeverity.Warning);
97+
}
98+
}
99+
68100
nugetAssemblyCache = solution.NuGetReferences ?? [];
69-
101+
70102
foreach (var nugetRef in nugetAssemblyCache)
71103
{
72104
if (nugetRef.AssemblyData?.Length > 0)
@@ -76,8 +108,10 @@ await resolver.GetMetadataReferenceAsync("xunit.core.wasm")
76108
LogMessageWriter.Log($"Added NuGet reference: {nugetRef.AssemblyName}", LogSeverity.Debug);
77109
}
78110
}
79-
80-
var result = new CompilationService().Compile(solution, references);
111+
112+
var result = isRazorProject
113+
? new RazorCompilationService().Compile(solution, references)
114+
: new CompilationService().Compile(solution, references);
81115

82116
asmCache = result.Assembly;
83117

Apollo.Compilation/Apollo.Compilation.csproj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<TargetFramework>net10.0</TargetFramework>
@@ -13,6 +13,8 @@
1313

1414
<ItemGroup>
1515
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" />
16+
<PackageReference Include="Microsoft.CodeAnalysis.Razor" />
17+
<PackageReference Include="Microsoft.AspNetCore.Razor.Language" />
1618
<PackageReference Include="Microsoft.Extensions.Hosting" />
1719
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" />
1820
<PackageReference Include="System.Console" />

0 commit comments

Comments
 (0)