Skip to content

Commit 056b551

Browse files
authored
Fix downloading razor compiler from branch/PR (#68)
2 parents 493ccb1 + e2c416b commit 056b551

File tree

10 files changed

+41
-13
lines changed

10 files changed

+41
-13
lines changed

Directory.Packages.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
55
<!-- We are not using package source mapping. -->
66
<NoWarn>$(NoWarn);NU1507</NoWarn>
7-
<NetCoreVersion>10.0.0-preview.4.25252.106</NetCoreVersion>
7+
<NetCoreVersion>10.0.0-preview.4.25258.110</NetCoreVersion>
88
<AspNetCoreVersion>$(NetCoreVersion)</AspNetCoreVersion>
99
<RoslynVersion>5.0.0-1.25252.6</RoslynVersion>
1010
<FluentUIVersion>4.11.8</FluentUIVersion>

eng/CopyDotNetDTs.targets

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
<Project>
22

3+
<ItemGroup>
4+
<Content Remove="**\*.d.ts" />
5+
</ItemGroup>
6+
37
<Target Name="CopyDotNetDTs" AfterTargets="ProcessFrameworkReferences">
48
<ItemGroup>
59
<_DotnetDTsPath Include="%(RuntimePack.PackageDirectory)\runtimes\browser-wasm\native\dotnet.d.ts" Condition="'%(RuntimePack.Identity)' == 'Microsoft.NETCore.App.Runtime.Mono.browser-wasm'" />

global.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"sdk": {
3-
"version": "10.0.100-preview.4.25252.106"
3+
"version": "10.0.100-preview.4.25258.110",
4+
"workloadVersion": "10.0.100-preview.4.25263.1"
45
}
56
}

nuget.config

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
66
<add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
77
<add key="dotnet-tools" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" />
8-
<add key="dotnet10" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json" />
98
</packageSources>
109
<packageSourceMapping>
1110
<clear />

src/Compiler/Compiler.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,11 @@ RazorProjectEngine createProjectEngine(IReadOnlyList<MetadataReference> referenc
510510
{
511511
b.SetRootNamespace("TestNamespace");
512512

513-
b.Features.Add(RazorAccessors.CreateDefaultTypeNameFeature());
513+
if (RazorUtil.TryCreateDefaultTypeNameFeature(out var defaultTypeNameFeature))
514+
{
515+
b.Features.Add(defaultTypeNameFeature);
516+
}
517+
514518
b.Features.Add(new CompilationTagHelperFeature());
515519
b.Features.Add(new DefaultMetadataReferenceFeature
516520
{

src/Compiler/Utils.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,21 @@ private static Func<Action<object>, IRazorFeature> CreateConfigureRazorParserOpt
9494
};
9595
}
9696

97+
public static bool TryCreateDefaultTypeNameFeature([NotNullWhen(returnValue: true)] out RazorEngineFeatureBase? result)
98+
{
99+
if (typeof(RazorEngineFeatureBase).Assembly
100+
.GetType("Microsoft.AspNetCore.Razor.Language.DefaultTypeNameFeature")?
101+
.GetConstructor(Type.EmptyTypes)?
102+
.Invoke(null) is RazorEngineFeatureBase feature)
103+
{
104+
result = feature;
105+
return true;
106+
}
107+
108+
result = null;
109+
return false;
110+
}
111+
97112
public static void ConfigureRazorParserOptionsSafe(this RazorProjectEngineBuilder builder, Action<object> configure)
98113
{
99114
builder.Features.Add(configureRazorParserOptionsFactory.Value(configure));

src/RazorAccess/RazorAccessors.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
using Microsoft.AspNetCore.Razor.Language;
22
using Microsoft.AspNetCore.Razor.Language.Intermediate;
33
using Microsoft.CodeAnalysis;
4-
using Microsoft.CodeAnalysis.Razor;
54
using Microsoft.NET.Sdk.Razor.SourceGenerators;
65
using System.Runtime.CompilerServices;
76

87
namespace DotNetLab;
98

109
public static class RazorAccessors
1110
{
12-
public static RazorEngineFeatureBase CreateDefaultTypeNameFeature()
13-
=> new DefaultTypeNameFeature();
14-
1511
public static RazorProjectItem CreateSourceGeneratorProjectItem(
1612
string basePath,
1713
string filePath,

src/Worker/Lab/AzDoDownloader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ private async Task<ImmutableArray<LoadedAssembly>> GetAssembliesViaNupkgAsync(
122122
artifactName: artifactName,
123123
fileId: nupkg.Id);
124124

125-
return NuGetUtil.GetAssembliesFromNupkg(stream, folder: packageFolder);
125+
return await NuGetUtil.GetAssembliesFromNupkgAsync(stream, folder: packageFolder);
126126
}
127127

128128
private async Task<ImmutableArray<LoadedAssembly>> GetAssembliesViaRehydrateAsync(int buildId, string artifactName, ArtifactFiles files, HashSet<string> names)

src/Worker/Lab/NuGetDownloader.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ namespace DotNetLab.Lab;
1010

1111
public static class NuGetUtil
1212
{
13-
internal static ImmutableArray<LoadedAssembly> GetAssembliesFromNupkg(Stream nupkgStream, string folder)
13+
internal static async Task<ImmutableArray<LoadedAssembly>> GetAssembliesFromNupkgAsync(Stream nupkgStream, string folder)
1414
{
1515
const string extension = ".dll";
16-
using var reader = new PackageArchiveReader(nupkgStream, leaveStreamOpen: true);
16+
using var zipArchive = await ZipArchive.CreateAsync(nupkgStream, ZipArchiveMode.Read, leaveOpen: false, entryNameEncoding: null);
17+
using var reader = new PackageArchiveReader(zipArchive);
1718
return reader.GetFiles()
1819
.Where(file =>
1920
{
@@ -173,7 +174,7 @@ public async Task<CompilerDependencyInfo> GetInfoAsync()
173174

174175
public async Task<ImmutableArray<LoadedAssembly>> GetAssembliesAsync()
175176
{
176-
return NuGetUtil.GetAssembliesFromNupkg(await GetStreamAsync(), folder: folder);
177+
return await NuGetUtil.GetAssembliesFromNupkgAsync(await GetStreamAsync(), folder: folder);
177178
}
178179
}
179180

test/UnitTests/CompilerProxyTests.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ await services.GetRequiredService<CompilerDependencyProvider>()
5555
[InlineData("9.0.0-preview.24413.5")]
5656
[InlineData("9.0.0-preview.25128.1")]
5757
[InlineData("10.0.0-preview.25252.1")]
58+
[InlineData("10.0.0-preview.25264.1")]
59+
[InlineData("main")] // test that we can download a branch
5860
public async Task SpecifiedNuGetRazorVersion(string version)
5961
{
6062
var services = WorkerServices.CreateTest(new MockHttpMessageHandler(output));
@@ -113,7 +115,7 @@ public async Task SpecifiedRazorOptions(RazorToolchain toolchain, RazorStrategy
113115
}
114116
}
115117

116-
internal sealed partial class MockHttpMessageHandler : HttpMessageHandler
118+
internal sealed partial class MockHttpMessageHandler : HttpClientHandler
117119
{
118120
private readonly ITestOutputHelper testOutput;
119121
private readonly string directory;
@@ -128,6 +130,12 @@ protected override Task<HttpResponseMessage> SendAsync(
128130
HttpRequestMessage request,
129131
CancellationToken cancellationToken)
130132
{
133+
if (request.RequestUri?.Host != "localhost")
134+
{
135+
testOutput.WriteLine($"Skipping mocking non-localhost request: {request.RequestUri}");
136+
return base.SendAsync(request, cancellationToken);
137+
}
138+
131139
testOutput.WriteLine($"Mocking request: {request.RequestUri}");
132140

133141
if (UrlRegex.Match(request.RequestUri?.ToString() ?? "") is

0 commit comments

Comments
 (0)