Skip to content

Commit 8b588fa

Browse files
committed
Initial CI
1 parent 2b5de72 commit 8b588fa

File tree

14 files changed

+160
-102
lines changed

14 files changed

+160
-102
lines changed

.github/workflows/ci.yaml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: .NET
2+
3+
on: [push]
4+
5+
jobs:
6+
build:
7+
runs-on: windows-latest
8+
9+
steps:
10+
- uses: actions/checkout@v4
11+
- name: Setup .NET SDK
12+
uses: actions/setup-dotnet@v4
13+
with:
14+
dotnet-version: |
15+
8.0.x
16+
9.0.x
17+
- name: Install dependencies
18+
run: dotnet restore
19+
- name: Locate MSBuild with vswhere
20+
id: msbuild
21+
shell: pwsh
22+
run: |
23+
$msbuildPath = & "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" `
24+
-latest -requires Microsoft.Component.MSBuild `
25+
-find MSBuild\**\Bin\MSBuild.exe
26+
27+
if (-not $msbuildPath) {
28+
Write-Error "MSBuild not found!"
29+
exit 1
30+
}
31+
32+
echo "MSBUILD=$msbuildPath" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
33+
Write-Host "Found MSBuild at $msbuildPath"
34+
- name: Build
35+
run: |
36+
& $env:MSBUILD AspNetCore.sln /p:Configuration=Debug /p:Platform="Any CPU"
37+
- name: Test Zapto.AspNetCore.NetFx
38+
run: dotnet test --no-restore --verbosity normal tests/Zapto.AspNetCore.NetFx.Tests/Zapto.AspNetCore.NetFx.Tests.csproj
39+
- name: Publish
40+
uses: GerardSmit/[email protected]
41+
if: github.ref == 'refs/heads/main'
42+
with:
43+
NUGET_KEY: ${{secrets.NUGET_API_KEY}}
44+
VERSION_FILE_PATH: src/Directory.Build.props
45+
PROJECT_FILE_PATH: |
46+
src/Zapto.AspNetCore.NetFx/Zapto.AspNetCore.NetFx.csproj

sandbox/WebFormsApp/Web.config

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -25,61 +25,59 @@
2525
<runtime>
2626
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
2727
<dependentAssembly>
28-
<assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" />
29-
<bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
30-
</dependentAssembly>
31-
<dependentAssembly>
32-
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
33-
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
34-
</dependentAssembly>
35-
<dependentAssembly>
36-
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
37-
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
28+
<assemblyIdentity name="Microsoft.Extensions.Configuration.Binder" publicKeyToken="adb9793829ddae60" culture="neutral" />
29+
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
3830
</dependentAssembly>
31+
</assemblyBinding>
32+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
3933
<dependentAssembly>
40-
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
41-
<bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
34+
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
35+
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
4236
</dependentAssembly>
37+
</assemblyBinding>
38+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
4339
<dependentAssembly>
4440
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
4541
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
4642
</dependentAssembly>
47-
<dependentAssembly>
48-
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
49-
<bindingRedirect oldVersion="0.0.0.0-6.0.1.0" newVersion="6.0.1.0" />
50-
</dependentAssembly>
43+
</assemblyBinding>
44+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
5145
<dependentAssembly>
5246
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
5347
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
5448
</dependentAssembly>
49+
</assemblyBinding>
50+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
5551
<dependentAssembly>
5652
<assemblyIdentity name="Microsoft.Extensions.ObjectPool" publicKeyToken="adb9793829ddae60" culture="neutral" />
5753
<bindingRedirect oldVersion="0.0.0.0-8.0.12.0" newVersion="8.0.12.0" />
5854
</dependentAssembly>
55+
</assemblyBinding>
56+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
5957
<dependentAssembly>
6058
<assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />
6159
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
6260
</dependentAssembly>
63-
<dependentAssembly>
64-
<assemblyIdentity name="mscorlib" publicKeyToken="b77a5c561934e089" culture="neutral" />
65-
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
66-
</dependentAssembly>
67-
<dependentAssembly>
68-
<assemblyIdentity name="System" publicKeyToken="b77a5c561934e089" culture="neutral" />
69-
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
70-
</dependentAssembly>
61+
</assemblyBinding>
62+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
7163
<dependentAssembly>
7264
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
7365
<bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" />
7466
</dependentAssembly>
67+
</assemblyBinding>
68+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
7569
<dependentAssembly>
76-
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
70+
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
7771
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
7872
</dependentAssembly>
73+
</assemblyBinding>
74+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
7975
<dependentAssembly>
80-
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
81-
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
76+
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
77+
<bindingRedirect oldVersion="0.0.0.0-6.0.1.0" newVersion="6.0.1.0" />
8278
</dependentAssembly>
79+
</assemblyBinding>
80+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
8381
<dependentAssembly>
8482
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
8583
<bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />

sandbox/WebFormsApp/WebFormsApp.csproj

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<RootNamespace>WebFormsApp</RootNamespace>
1313
<AssemblyName>WebFormsApp</AssemblyName>
1414
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
15+
<RuntimeIdentifiers>win</RuntimeIdentifiers>
1516
<MvcBuildViews>false</MvcBuildViews>
1617
<UseIISExpress>true</UseIISExpress>
1718
<Use64BitIISExpress/>
@@ -107,19 +108,8 @@
107108
</ProjectReference>
108109
</ItemGroup>
109110
<ItemGroup>
110-
<PackageReference Include="Antlr" Version="3.5.0.2"/>
111-
<PackageReference Include="Microsoft.AspNet.Mvc" Version="5.2.7"/>
112-
<PackageReference Include="Microsoft.AspNet.Razor" Version="3.2.7"/>
113-
<PackageReference Include="Microsoft.AspNet.Web.Optimization" Version="1.1.3"/>
114-
<PackageReference Include="Microsoft.AspNet.WebPages" Version="3.2.7"/>
115111
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.3.0" />
116112
<PackageReference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" Version="2.0.0"/>
117-
<PackageReference Include="Microsoft.jQuery.Unobtrusive.Validation" Version="3.2.11"/>
118-
<PackageReference Include="Microsoft.Web.Infrastructure" Version="1.0.0"/>
119-
<PackageReference Include="Modernizr" Version="2.8.3"/>
120-
<PackageReference Include="Newtonsoft.Json" Version="11.0.1"/>
121-
<PackageReference Include="WebGrease" Version="1.6.0"/>
122-
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1"/>
123113
<PackageReference Include="Microsoft.AspNetCore.Routing" Version="2.3.0"/>
124114
</ItemGroup>
125115
<PropertyGroup>

src/Directory.Build.props

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<Project>
2+
3+
<PropertyGroup>
4+
<Version>1.0.0-alpha.1</Version>
5+
<PackageVersion>1.0.0-alpha.1</PackageVersion>
6+
<Authors>Zapto</Authors>
7+
<RepositoryUrl>https://github.com/zapto-dev/AspNetCore</RepositoryUrl>
8+
<Copyright>Copyright © 2025 Zapto</Copyright>
9+
<PackageTags>zapto, aspnetcore</PackageTags>
10+
<PackageProjectUrl>https://github.com/zapto-dev/AspNetCore</PackageProjectUrl>
11+
<PackageLicenseUrl>https://github.com/zapto-dev/AspNetCore/blob/main/LICENSE</PackageLicenseUrl>
12+
</PropertyGroup>
13+
14+
<PropertyGroup>
15+
<ExtensionVersion>8.0.0</ExtensionVersion>
16+
</PropertyGroup>
17+
18+
<PropertyGroup Condition="'$(TargetFramework)' == 'net9.0'">
19+
<ExtensionVersion>9.0.0</ExtensionVersion>
20+
</PropertyGroup>
21+
22+
</Project>

src/Zapto.AspNetCore.NetFx/Collections/Forms/AspNetCoreFormFileCollection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public void SetFormFile(HttpPostedFile formFile)
123123
}
124124

125125
public string? ContentType => _formFile?.ContentType;
126-
public string ContentDisposition { get; set; }
126+
public string? ContentDisposition => null;
127127

128128
public string? FileName => _formFile?.FileName;
129129

src/Zapto.AspNetCore.NetFx/Hosting/ApplicationBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public ApplicationBuilder(IServiceProvider serviceProvider, object server)
4646

4747
private ApplicationBuilder(ApplicationBuilder builder)
4848
{
49-
Properties = new CopyOnWriteDictionary<string, object>(builder.Properties, StringComparer.Ordinal);
49+
Properties = new CopyOnWriteDictionary<string, object?>(builder.Properties, StringComparer.Ordinal);
5050
}
5151

5252
/// <summary>

src/Zapto.AspNetCore.NetFx/Hosting/SharedModuleContext.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ private SharedModuleContext()
4646

4747
public readonly object InitLock = new();
4848
public bool IsInitialized;
49-
public IHost Host;
50-
public RequestDelegate Delegate;
49+
public IHost Host = null!;
50+
public RequestDelegate Delegate = null!;
5151
public Task HostedServicesTask = Task.CompletedTask;
5252

5353
public void Stop(bool immediate)
@@ -138,13 +138,13 @@ private void StopHost()
138138
IHost? host;
139139
lock (InitLock)
140140
{
141-
if (Host == null)
141+
if (Host == null!)
142142
return;
143143

144144
host = Host;
145-
Host = null;
145+
Host = null!;
146146
IsInitialized = false;
147-
Delegate = null;
147+
Delegate = null!;
148148
HostedServicesTask = Task.CompletedTask;
149149
}
150150

src/Zapto.AspNetCore.NetFx/Http/ConnectionInfoImpl.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ internal class ConnectionInfoImpl : ConnectionInfo
1111
{
1212
private AspNetContext _context = null!;
1313
private IPAddress? _remoteIpAddress;
14-
private X509Certificate2 _certificate;
14+
private X509Certificate2? _certificate;
1515

1616
public void SetContext(AspNetContext context)
1717
{
@@ -25,7 +25,7 @@ public void Reset()
2525
_certificate = null!;
2626
}
2727

28-
public override Task<X509Certificate2> GetClientCertificateAsync(CancellationToken cancellationToken = new()) => Task.FromResult(ClientCertificate);
28+
public override Task<X509Certificate2?> GetClientCertificateAsync(CancellationToken cancellationToken = new()) => Task.FromResult(ClientCertificate);
2929

3030
public override string Id
3131
{
@@ -90,7 +90,7 @@ public override int LocalPort
9090
set => throw new NotSupportedException();
9191
}
9292

93-
public override X509Certificate2 ClientCertificate
93+
public override X509Certificate2? ClientCertificate
9494
{
9595
get => _certificate ??= _context.Request.ClientCertificate.Certificate.Length > 0
9696
? new X509Certificate2(_context.Request.ClientCertificate.Certificate)

src/Zapto.AspNetCore.NetFx/Http/HttpContextImpl.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ internal class HttpContextImpl : HttpContext
2121
private readonly ConnectionInfoImpl _connection = new();
2222
private readonly WebSocketManagerImpl _webSocketManager;
2323
private readonly SessionImpl _session = new();
24-
private IServiceProvider _requestServices;
25-
private IDictionary<object, object> _itemsValue;
24+
private IServiceProvider _requestServices = null!;
25+
private IDictionary<object, object?> _itemsValue;
2626
private ISession _sessionValue;
27-
private TaskCompletionSource<bool> _stackCompleteTcs;
28-
private TaskCompletionSource<bool> _aspCompleteTcs;
27+
private TaskCompletionSource<bool> _stackCompleteTcs = null!;
28+
private TaskCompletionSource<bool> _aspCompleteTcs = null!;
2929
private AsyncServiceScope _serviceScope;
30-
private Task _middlewareTask;
30+
private Task _middlewareTask = null!;
3131

3232
public HttpContextImpl()
3333
{
@@ -66,9 +66,9 @@ public void Reset()
6666
_aspContext = null!;
6767
_webSocketManager.Reset();
6868
_session.Reset();
69-
_requestServices = null;
69+
_requestServices = null!;
7070
RequestAborted = CancellationToken.None;
71-
TraceIdentifier = null;
71+
TraceIdentifier = null!;
7272
_sessionValue = _session;
7373
_stackCompleteTcs = null!;
7474
_aspCompleteTcs = null!;
@@ -89,11 +89,11 @@ public override void Abort()
8989

9090
public override ClaimsPrincipal User
9191
{
92-
get => _aspContext.User as ClaimsPrincipal;
92+
get => (ClaimsPrincipal)_aspContext.User;
9393
set => _aspContext.User = value;
9494
}
9595

96-
public override IDictionary<object, object> Items
96+
public override IDictionary<object, object?> Items
9797
{
9898
get => _itemsValue;
9999
set => _itemsValue = value;
@@ -107,7 +107,7 @@ public override IServiceProvider RequestServices
107107

108108
public override CancellationToken RequestAborted { get; set; }
109109

110-
public override string TraceIdentifier { get; set; }
110+
public override string TraceIdentifier { get; set; } = null!;
111111

112112
public override ISession Session
113113
{

src/Zapto.AspNetCore.NetFx/Http/HttpRequestImpl.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ namespace Zapto.AspNetCore.Http;
1111

1212
internal class HttpRequestImpl : HttpRequest
1313
{
14-
private AspNetContext _aspContext;
15-
private AspNetRequest _aspRequest;
14+
private AspNetContext _aspContext = null!;
15+
private AspNetRequest _aspRequest = null!;
1616
private readonly AspNetCoreFormFileCollection _formFiles = new();
1717
private readonly NameValueFormCollection _form = new();
1818
private readonly NameValueDictionary _query = new();
@@ -25,10 +25,10 @@ internal class HttpRequestImpl : HttpRequest
2525
private IFormCollection _formValue;
2626
private QueryString _queryStringValue = QueryString.Empty;
2727
private long? _contentLengthValue;
28-
private string _httpMethodValue;
29-
private string _schemeValue;
28+
private string _httpMethodValue = null!;
29+
private string _schemeValue = null!;
3030
private HostString _hostValue;
31-
private Stream _bodyValue;
31+
private Stream _bodyValue = null!;
3232

3333
public HttpRequestImpl(HttpContextImpl httpContext)
3434
{

0 commit comments

Comments
 (0)