Remove net451 as a cross-compile target

This commit is contained in:
Pranav K 2017-03-12 20:10:02 -07:00
parent 3e6303b6c1
commit d6d13a0986
18 changed files with 59 additions and 121 deletions

1
.gitignore vendored
View File

@ -34,3 +34,4 @@ launchSettings.json
BenchmarkDotNet.Artifacts/
BDN.Generated/
binaries/
global.json

View File

@ -3,7 +3,7 @@
<Import Project="..\..\build\common.props" />
<PropertyGroup>
<TargetFrameworks>net451;netcoreapp1.1</TargetFrameworks>
<TargetFrameworks>net46;netcoreapp1.1</TargetFrameworks>
<IsPackable>false</IsPackable>
</PropertyGroup>

View File

@ -3,7 +3,7 @@
<Import Project="..\..\build\common.props" />
<PropertyGroup>
<TargetFrameworks>netcoreapp1.1;net451</TargetFrameworks>
<TargetFrameworks>netcoreapp1.1;net46</TargetFrameworks>
<IsPackable>false</IsPackable>
</PropertyGroup>

View File

@ -4,7 +4,7 @@
<PropertyGroup>
<Description>HTTPS support for the ASP.NET Core Kestrel cross-platform web server.</Description>
<TargetFrameworks>net451;netstandard1.3</TargetFrameworks>
<TargetFrameworks>netstandard1.3;net46</TargetFrameworks>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<PackageTags>aspnetcore;kestrel</PackageTags>
<NoWarn>CS1591;$(NoWarn)</NoWarn>

View File

@ -132,7 +132,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Adapter.Internal
_logger.LogDebug(builder.ToString());
}
#if NET451
#if NET46
// The below APM methods call the underlying Read/WriteAsync methods which will still be logged.
public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
{
@ -209,6 +209,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Adapter.Internal
}, tcs, cancellationToken);
return tcs.Task;
}
#elif NETSTANDARD1_3
#else
#error target frameworks need to be updated.
#endif
}
}

View File

@ -135,7 +135,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Adapter.Internal
}
}
#if NET451
#if NET46
public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
{
var task = ReadAsync(buffer, offset, count, default(CancellationToken), state);
@ -211,6 +211,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Adapter.Internal
}, tcs, cancellationToken);
return tcs.Task;
}
#elif NETSTANDARD1_3
#else
#error target frameworks need to be updated.
#endif
}
}

View File

@ -1382,14 +1382,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
{
// .NET 451 doesn't have pointer overloads for Encoding.GetString so we
// copy to an array
#if NET451
return Encoding.UTF8.GetString(path.ToArray());
#else
fixed (byte* pointer = &path.DangerousGetPinnableReference())
{
return Encoding.UTF8.GetString(pointer, path.Length);
}
#endif
}
public void OnHeader(Span<byte> name, Span<byte> value)

View File

@ -1,7 +1,7 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
#if NET451
#if NET46
using System;
#endif
using System.IO;
@ -97,14 +97,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
}
}
#if NET451
public override void Close()
{
_requestStream.Close();
_responseStream.Close();
}
#endif
protected override void Dispose(bool disposing)
{
if (disposing)
@ -124,7 +116,13 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
return _responseStream.FlushAsync(cancellationToken);
}
#if NET451
#if NET46
public override void Close()
{
_requestStream.Close();
_responseStream.Close();
}
public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
{
return _requestStream.BeginRead(buffer, offset, count, callback, state);
@ -134,6 +132,19 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
{
return _requestStream.EndRead(asyncResult);
}
public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
{
return _responseStream.BeginWrite(buffer, offset, count, callback, state);
}
public override void EndWrite(IAsyncResult asyncResult)
{
_responseStream.EndWrite(asyncResult);
}
#elif NETSTANDARD1_3
#else
#error target frameworks need to be updated.
#endif
public override Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
@ -146,18 +157,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
return _requestStream.CopyToAsync(destination, bufferSize, cancellationToken);
}
#if NET451
public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
{
return _responseStream.BeginWrite(buffer, offset, count, callback, state);
}
public override void EndWrite(IAsyncResult asyncResult)
{
_responseStream.EndWrite(asyncResult);
}
#endif
public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
{
return _responseStream.WriteAsync(buffer, offset, count, cancellationToken);

View File

@ -74,7 +74,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
return ReadAsync(buffer, offset, count).Result;
}
#if NET451
#if NET46
public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
{
var task = ReadAsync(buffer, offset, count, default(CancellationToken), state);
@ -112,6 +112,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
}, tcs, cancellationToken);
return tcs.Task;
}
#elif NETSTANDARD1_3
#else
#error target frameworks need to be updated
#endif
public override Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
@ -198,15 +201,15 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
case FrameStreamState.Open:
if (cancellationToken.IsCancellationRequested)
{
return TaskUtilities.GetCancelledZeroTask(cancellationToken);
return Task.FromCanceled<int>(cancellationToken);
}
break;
case FrameStreamState.Closed:
throw new ObjectDisposedException(nameof(FrameRequestStream));
case FrameStreamState.Aborted:
return _error != null ?
TaskUtilities.GetFaultedTask(_error) :
TaskUtilities.GetCancelledZeroTask();
Task.FromException<int>(_error) :
Task.FromCanceled<int>(new CancellationToken(true));
}
return null;
}

View File

@ -85,7 +85,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
_frameControl.Write(new ArraySegment<byte>(buffer, offset, count));
}
#if NET451
#if NET46
public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
{
var task = WriteAsync(buffer, offset, count, default(CancellationToken), state);
@ -123,6 +123,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
}, tcs, cancellationToken);
return tcs.Task;
}
#elif NETSTANDARD1_3
#else
#error target frameworks need to be updated.
#endif
public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
@ -180,7 +183,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
case FrameStreamState.Open:
if (cancellationToken.IsCancellationRequested)
{
return TaskUtilities.GetCancelledTask(cancellationToken);
return Task.FromCanceled(cancellationToken);
}
break;
case FrameStreamState.Closed:
@ -189,7 +192,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
if (cancellationToken.IsCancellationRequested)
{
// Aborted state only throws on write if cancellationToken requests it
return TaskUtilities.GetCancelledTask(cancellationToken);
return Task.FromCanceled(cancellationToken);
}
break;
}

View File

@ -166,7 +166,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
{
_connection.AbortAsync();
_cancelled = true;
return TaskUtilities.GetCancelledTask(cancellationToken);
return Task.FromCanceled(cancellationToken);
}
else if (_cancelled)
{

View File

@ -1,50 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Threading;
using System.Threading.Tasks;
namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure
{
public static class TaskUtilities
{
public static Task GetCancelledTask(CancellationToken cancellationToken)
{
#if NETSTANDARD1_3
return Task.FromCanceled(cancellationToken);
#else
var tcs = new TaskCompletionSource<object>();
tcs.TrySetCanceled();
return tcs.Task;
#endif
}
public static Task<int> GetCancelledZeroTask(CancellationToken cancellationToken = default(CancellationToken))
{
#if NETSTANDARD1_3
// Make sure cancellationToken is canceled before passing to Task.FromCanceled
if (!cancellationToken.IsCancellationRequested)
{
cancellationToken = new CancellationToken(true);
}
return Task.FromCanceled<int>(cancellationToken);
#else
var tcs = new TaskCompletionSource<int>();
tcs.TrySetCanceled();
return tcs.Task;
#endif
}
public static Task<int> GetFaultedTask(Exception error)
{
#if NETSTANDARD1_3
return Task.FromException<int>(error);
#else
var tcs = new TaskCompletionSource<int>();
tcs.SetException(error);
return tcs.Task;
#endif
}
}
}

View File

@ -4,7 +4,7 @@
<PropertyGroup>
<Description>ASP.NET Core Kestrel cross-platform web server.</Description>
<TargetFrameworks>net451;netstandard1.3</TargetFrameworks>
<TargetFrameworks>netstandard1.3;net46</TargetFrameworks>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<PackageTags>aspnetcore;kestrel</PackageTags>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>

View File

@ -6,6 +6,8 @@
<TargetFrameworks>netcoreapp1.1;net46</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netcoreapp1.1</TargetFrameworks>
<PlatformTarget Condition="'$(TargetFramework)' == 'net46'">x64</PlatformTarget>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
<ItemGroup>

View File

@ -90,6 +90,9 @@ namespace Microsoft.AspNetCore.Server.KestrelTests
var stream = new FrameRequestStream();
Assert.Throws<NotSupportedException>(() => stream.BeginWrite(new byte[1], 0, 1, null, null));
}
#elif NETCOREAPP1_1
#else
#error target frameworks need to be updated
#endif
[Fact]

View File

@ -61,6 +61,9 @@ namespace Microsoft.AspNetCore.Server.KestrelTests
var stream = new FrameResponseStream(new MockFrameControl());
Assert.Throws<NotSupportedException>(() => stream.BeginRead(new byte[1], 0, 1, null, null));
}
#elif NETCOREAPP1_1
#else
#error target frameworks need to be updated
#endif
[Fact]

View File

@ -131,18 +131,8 @@ namespace Microsoft.AspNetCore.Server.KestrelTests
var t = Task.Run(async () =>
{
var socket = TestConnection.CreateConnectedLoopbackSocket(port);
#if NET46
await Task.Factory.FromAsync(
socket.BeginSend,
socket.EndSend,
new[] { new ArraySegment<byte>(new byte[] { 1, 2, 3, 4, 5 }) },
SocketFlags.None,
null,
TaskCreationOptions.None);
#else
await socket.SendAsync(new[] { new ArraySegment<byte>(new byte[] { 1, 2, 3, 4, 5 }) },
SocketFlags.None);
#endif
socket.Dispose();
});
loop.Run();
@ -194,33 +184,13 @@ namespace Microsoft.AspNetCore.Server.KestrelTests
var t = Task.Run(async () =>
{
var socket = TestConnection.CreateConnectedLoopbackSocket(port);
#if NET46
await Task.Factory.FromAsync(
socket.BeginSend,
socket.EndSend,
new[] { new ArraySegment<byte>(new byte[] { 1, 2, 3, 4, 5 }) },
SocketFlags.None,
null,
TaskCreationOptions.None);
#else
await socket.SendAsync(new[] { new ArraySegment<byte>(new byte[] { 1, 2, 3, 4, 5 }) },
SocketFlags.None);
#endif
socket.Shutdown(SocketShutdown.Send);
var buffer = new ArraySegment<byte>(new byte[2048]);
while (true)
{
#if NET46
var count = await Task.Factory.FromAsync(
socket.BeginReceive,
socket.EndReceive,
new[] { buffer },
SocketFlags.None,
null,
TaskCreationOptions.None);
#else
var count = await socket.ReceiveAsync(new[] { buffer }, SocketFlags.None);
#endif
if (count <= 0) break;
}
socket.Dispose();

View File

@ -11,8 +11,10 @@ namespace Microsoft.AspNetCore.Testing
private static readonly string _testCertificatePath =
#if NET46
Path.Combine(Directory.GetCurrentDirectory(), "testCert.pfx");
#else
#elif NETCOREAPP1_1
Path.Combine(AppContext.BaseDirectory, "testCert.pfx");
#else
#error Target frameworks need to be updated.
#endif
public static string TestCertificatePath => _testCertificatePath;