Skip to content

Commit

Permalink
Upgrade to MessagePack 2.0 and .NET Core 3.1
Browse files Browse the repository at this point in the history
See #54, #55

+semver:breaking
cd21h committed Jan 12, 2020
1 parent f278025 commit 0d2c4ba
Showing 18 changed files with 859 additions and 166 deletions.
6 changes: 6 additions & 0 deletions appveyor.yml
Original file line number Diff line number Diff line change
@@ -22,6 +22,12 @@ environment:
GITHUB_PASSWORD:
secure: 9gArAAMTQRHIsSZcJ+87GM+kaSfsBlouuFHtBR1hWBY=

install:
- ps: ./dotnet-install.ps1 -Version 3.1.100 -InstallDir "C:\Program Files\dotnet"
- ps: ./dotnet-install.ps1 -Version 3.0.101 -InstallDir "C:\Program Files\dotnet"
- ps: ./dotnet-install.ps1 -Version 2.2.207 -InstallDir "C:\Program Files\dotnet"
- ps: ./dotnet-install.ps1 -Version 2.1.607 -InstallDir "C:\Program Files\dotnet"

build_script:
- ps: ./build.ps1

686 changes: 686 additions & 0 deletions dotnet-install.ps1

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions src/Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project>

<PropertyGroup Label="Build">
<TargetFrameworks>netstandard1.6;netstandard2.0;netcoreapp2.2;netcoreapp3.0</TargetFrameworks>
<TargetFrameworks>netcoreapp2.1;netcoreapp2.2;netcoreapp3.0;netcoreapp3.1</TargetFrameworks>
<SignAssembly>True</SignAssembly>
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
@@ -43,5 +43,5 @@
<IsTestProject>true</IsTestProject>
<IsPackable>False</IsPackable>
</PropertyGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -10,32 +10,30 @@
<Compile Include="..\Alphacloud.MessagePack.HttpFormatter\ReadableTypesCache.cs" Link="Internal\ReadableTypesCache.cs" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.6'">
<PackageReference Include="Microsoft.AspNetCore.Mvc.Abstractions" Version="[1.1.8, 2.0.0)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="[1.1.8, 2.0.0)" />
<PackageReference Include="System.Collections.Immutable" Version="1.6.0" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="Microsoft.AspNetCore.Mvc.Abstractions" Version="[2.0.0, 3.0.0)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="[2.0.0, 3.0.0)" />
<PackageReference Include="System.Collections.Immutable" Version="1.5.0" />
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp2.1'">
<PackageReference Include="Microsoft.AspNetCore.Mvc.Abstractions" Version="[2.1.0, 2.2.0)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="[2.1.0, 2.2.0)" />
<PackageReference Include="System.Collections.Immutable" Version="1.7.0" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp2.2'">
<PackageReference Include="Microsoft.AspNetCore.Mvc.Abstractions" Version="[2.2.0, 3.0.0)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="[2.2.0, 3.0.0)" />
<PackageReference Include="System.Collections.Immutable" Version="1.6.0" />
<PackageReference Include="System.Collections.Immutable" Version="1.7.0" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.0'">
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

<ItemGroup Label="Package References">
<PackageReference Include="JetBrains.Annotations" Version="2019.1.3" PrivateAssets="All" />
<PackageReference Include="MessagePack" Version="[1.8.74, 2.0.0)" />
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0-beta2-19554-01" PrivateAssets="All" />
<PackageReference Include="MessagePack" Version="[2.0.323, 3.0.0)" />
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
</ItemGroup>

</Project>
</Project>

This file was deleted.

Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@
{
using System;
using System.Linq;
using global::MessagePack;
using JetBrains.Annotations;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
@@ -33,9 +34,16 @@ public void Configure(MvcOptions options)
.ToArray();
if (supportedMediaTypes.Length == 0) throw new InvalidOperationException("No supported media types were specified.");

options.InputFormatters.Add(new MessagePackInputFormatter(formatterOptions.FormatterResolver, supportedMediaTypes));
options.OutputFormatters.Add(
new MessagePackOutputFormatter(formatterOptions.FormatterResolver, supportedMediaTypes));
var msgpackOptions = MessagePackSerializerOptions.Standard;
if (formatterOptions.FormatterResolver != null) msgpackOptions = msgpackOptions.WithResolver(formatterOptions.FormatterResolver);
msgpackOptions = msgpackOptions
.WithAllowAssemblyVersionMismatch(formatterOptions.AllowAssemblyVersionMismatch)
.WithCompression(formatterOptions.Compression)
.WithOldSpec(formatterOptions.OldSpec)
.WithOmitAssemblyVersion(formatterOptions.OmitAssemblyVersion);

options.InputFormatters.Add(new MessagePackInputFormatter(msgpackOptions, supportedMediaTypes));
options.OutputFormatters.Add(new MessagePackOutputFormatter(msgpackOptions, supportedMediaTypes));

foreach (var fileExtension in formatterOptions.FileExtensions)
{
Original file line number Diff line number Diff line change
@@ -42,5 +42,35 @@ public class MessagePackFormatterOptions
/// Formatter resolver.
/// </summary>
public IFormatterResolver FormatterResolver { get; set; }

/// <summary>
/// Compression scheme to apply to serialized sequences, <see cref="MessagePackSerializerOptions.Compression" />.
/// </summary>
public MessagePackCompression Compression { get; set; }

/// <summary>
/// Serialize using old specification.
/// See <see cref="MessagePackWriter.OldSpec" /> and <see cref="MessagePackSerializerOptions.OldSpec" /> for details.
/// </summary>
/// <remarks>
/// Reading always supports both new and old specifications.
/// </remarks>
public bool? OldSpec { get; set; }

/// <summary>
/// Value indicating whether serialization should omit assembly version, culture and public key token metadata when
/// using the typeless formatter,
/// default is <c>false</c>.
/// See <see cref="MessagePackSerializerOptions.OmitAssemblyVersion" /> for details.
/// </summary>
public bool OmitAssemblyVersion { get; set; }

/// <summary>
/// Allows deserializer to instantiate types from an assembly with a different version if a matching version cannot be
/// found,
/// default is <c>false</c>.
/// See <see cref="MessagePackSerializerOptions.AllowAssemblyVersionMismatch" />
/// </summary>
public bool AllowAssemblyVersionMismatch { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -2,7 +2,6 @@
{
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using global::MessagePack;
using Internal;
@@ -17,15 +16,15 @@
public class MessagePackInputFormatter : InputFormatter
{
readonly ReadableTypesCache _readableTypesCache;
readonly IFormatterResolver _resolver;
readonly MessagePackSerializerOptions _options;

/// <inheritdoc />
public MessagePackInputFormatter([NotNull] IFormatterResolver resolver, [NotNull] ICollection<string> mediaTypes)
public MessagePackInputFormatter([NotNull] MessagePackSerializerOptions options, [NotNull] ICollection<string> mediaTypes)
{
_resolver = resolver ?? throw new ArgumentNullException(nameof(resolver));
_options = options ?? throw new ArgumentNullException(nameof(options));
if (mediaTypes == null) throw new ArgumentNullException(nameof(mediaTypes));
if (mediaTypes.Count == 0) throw new ArgumentException("Media type must be specified.", nameof(mediaTypes));
_readableTypesCache = new ReadableTypesCache(resolver);
_readableTypesCache = new ReadableTypesCache(options.Resolver);

foreach (var mediaType in mediaTypes)
{
@@ -36,9 +35,9 @@ public MessagePackInputFormatter([NotNull] IFormatterResolver resolver, [NotNull
/// <inheritdoc />
public override async Task<InputFormatterResult> ReadRequestBodyAsync(InputFormatterContext context)
{
var request = context.HttpContext.Request;

var result = await AsyncSerializerCache.Instance.Get(context.ModelType).DeserializeAsync(request.Body, _resolver);
var httpContext = context.HttpContext;
var result = await MessagePackSerializer.DeserializeAsync(context.ModelType, httpContext.Request.Body, _options,
httpContext.RequestAborted).ConfigureAwait(false);
return InputFormatterResult.Success(result);
}

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#if !NETCOREAPP3_0
#if NETCOREAPP2_1 || NETCOREAPP2_2
namespace Alphacloud.MessagePack.AspNetCore.Formatters
{
using System;
Original file line number Diff line number Diff line change
@@ -13,17 +13,16 @@
/// </summary>
public class MessagePackOutputFormatter : OutputFormatter
{
static readonly byte[] NilBuffer = {MessagePackCode.Nil};
readonly IFormatterResolver _resolver;
readonly MessagePackSerializerOptions _options;

/// <summary>
/// Constructor.
/// </summary>
/// <param name="resolver">Contract resolver.</param>
/// <param name="options">Contract resolver.</param>
/// <param name="mediaTypes">Supported media types.</param>
public MessagePackOutputFormatter([NotNull] IFormatterResolver resolver, ICollection<string> mediaTypes)
public MessagePackOutputFormatter([NotNull] MessagePackSerializerOptions options, ICollection<string> mediaTypes)
{
_resolver = resolver ?? throw new ArgumentNullException(nameof(resolver));
_options = options ?? throw new ArgumentNullException(nameof(options));
if (mediaTypes == null) throw new ArgumentNullException(nameof(mediaTypes));
if (mediaTypes.Count == 0) throw new ArgumentException("Media type must be specified.", nameof(mediaTypes));

@@ -34,22 +33,47 @@ public MessagePackOutputFormatter([NotNull] IFormatterResolver resolver, ICollec
}

/// <inheritdoc />
public override async Task WriteResponseBodyAsync(OutputFormatterWriteContext context)
public override Task WriteResponseBodyAsync(OutputFormatterWriteContext context)
{
#if NETCOREAPP2_1 || NETCOREAPP2_2
if (context.ObjectType == typeof(object))
{
if (context.Object == null)
{
await context.HttpContext.Response.Body.WriteAsync(NilBuffer, 0, 1, context.HttpContext.RequestAborted).ConfigureAwait(false);
context.HttpContext.Response.Body.WriteByte(MessagePackCode.Nil);
return Task.CompletedTask;
}

await AsyncSerializerCache.Instance.Get(context.Object.GetType())
.SerializeAsync(context.HttpContext.Response.Body, context.Object, _resolver)
.ConfigureAwait(false);
return MessagePackSerializer.SerializeAsync(context.Object.GetType(), context.HttpContext.Response.Body, context.Object,
_options, context.HttpContext.RequestAborted);
}

await AsyncSerializerCache.Instance.Get(context.ObjectType).SerializeAsync(context.HttpContext.Response.Body, context.Object, _resolver)
.ConfigureAwait(false);
return MessagePackSerializer.SerializeAsync(context.ObjectType, context.HttpContext.Response.Body, context.Object, _options,
context.HttpContext.RequestAborted);
#endif

#if NETCOREAPP3_0 || NETCOREAPP3_1
var writer = context.HttpContext.Response.BodyWriter;
if (context.ObjectType == typeof(object))
{
if (context.Object == null)
{
var span = writer.GetSpan(1);
span[0] = MessagePackCode.Nil;
writer.Advance(1);
}
else
{
MessagePackSerializer.Serialize(context.Object.GetType(), writer, context.Object, _options, context.HttpContext.RequestAborted);
}
}
else
{
MessagePackSerializer.Serialize(context.ObjectType, writer, context.Object, _options, context.HttpContext.RequestAborted);
}

return writer.FlushAsync().AsTask();
#endif
}
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup Label="Build">
<TargetFrameworks>netstandard2.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>
</PropertyGroup>

<PropertyGroup Label="Package">
<PackageTags>messagepack msgpack webapi formatter serialization alphacloud</PackageTags>
<Description>MessagePack formatters for WebApi client</Description>
@@ -13,15 +13,12 @@
<Compile Include="..\..\common\AssemblyVersion.cs" Link="AssemblyVersion.cs" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="[5.2.7, 6.0.0)" />
</ItemGroup>

<ItemGroup Label="Package References">
<PackageReference Include="JetBrains.Annotations" Version="2019.1.3" PrivateAssets="All" />
<PackageReference Include="MessagePack" Version="[1.8.74, 2.0.0)" />
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0-beta2-19554-01" PrivateAssets="All" />
<PackageReference Include="System.Collections.Immutable" Version="1.6.0" />
<PackageReference Include="MessagePack" Version="[2.0.323, 3.0.0)" />
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="[5.2.7, 6.0.0)" />
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
<PackageReference Include="System.Collections.Immutable" Version="1.7.0" />
</ItemGroup>

</Project>
</Project>
Original file line number Diff line number Diff line change
@@ -20,21 +20,24 @@
[PublicAPI]
public class MessagePackMediaTypeFormatter : MediaTypeFormatter
{
static readonly byte[] NilBuffer = {MessagePackCode.Nil};
static readonly object _lock = new object();
static readonly IDictionary<Type, object> _valueTypeDefaults = new Dictionary<Type, object>(16);

/// <summary>
/// MessagePack media type.
/// </summary>
[PublicAPI] public const string DefaultMediaType = "application/x-msgpack";

static readonly Task<object> NullResult = Task.FromResult<object>(null);
[NotNull] readonly IFormatterResolver _resolver;
ReadableTypesCache _readableTypesCache;
[NotNull] readonly MessagePackSerializerOptions _options;
[NotNull] ReadableTypesCache _readableTypesCache;

/// <inheritdoc />
public MessagePackMediaTypeFormatter([NotNull] IFormatterResolver resolver, [NotNull] ICollection<string> mediaTypes)
public MessagePackMediaTypeFormatter([NotNull] MessagePackSerializerOptions options, [NotNull] ICollection<string> mediaTypes)
{
if (mediaTypes == null) throw new ArgumentNullException(nameof(mediaTypes));
_resolver = resolver ?? throw new ArgumentNullException(nameof(resolver));
_readableTypesCache = new ReadableTypesCache(resolver);
_options = options ?? throw new ArgumentNullException(nameof(options));
_readableTypesCache = new ReadableTypesCache(options.Resolver);

foreach (var mediaType in mediaTypes)
{
@@ -47,7 +50,7 @@ public MessagePackMediaTypeFormatter([NotNull] MessagePackMediaTypeFormatter for
: base(formatter)
{
if (formatter == null) throw new ArgumentNullException(nameof(formatter));
_resolver = formatter._resolver;
_options = formatter._options;
_readableTypesCache = formatter._readableTypesCache;
}

@@ -65,7 +68,7 @@ public override bool CanWriteType(Type type)
}

/// <inheritdoc />
public override Task<object> ReadFromStreamAsync(
public override async Task<object> ReadFromStreamAsync(
Type type, Stream readStream, HttpContent content, IFormatterLogger formatterLogger)
{
if (type == null) throw new ArgumentNullException(nameof(type));
@@ -75,22 +78,21 @@ public override Task<object> ReadFromStreamAsync(
long? contentLength = content?.Headers?.ContentLength;
if (contentLength.HasValue && contentLength.GetValueOrDefault() == 0L)
{
return GetDefaultAsyncResultForType(type);
return GetDefaultForType(type);
}

try
{
var result = MessagePackSerializer.NonGeneric.Deserialize(type, readStream, _resolver);
return result != null
? Task.FromResult(result)
: NullResult;
var result = await MessagePackSerializer.DeserializeAsync(type, readStream, _options)
.ConfigureAwait(false);
return result;
}
catch (Exception exception)
{
if (formatterLogger == null) throw;

formatterLogger.LogError(string.Empty, exception);
return GetDefaultAsyncResultForType(type);
return GetDefaultForType(type);
}
}

@@ -106,21 +108,25 @@ public override Task WriteToStreamAsync(

if (value == null && type == typeof(object))
{
writeStream.WriteByte(MessagePackCode.Nil);
}
else
{
MessagePackSerializer.NonGeneric.Serialize(type, writeStream, value, _resolver);
return writeStream.WriteAsync(NilBuffer, 0, 1, cancellationToken);
}

return Task.CompletedTask;
return MessagePackSerializer.SerializeAsync(type, writeStream, value, _options, cancellationToken);
}

static Task<object> GetDefaultAsyncResultForType(Type type)
static object GetDefaultForType(Type type)
{
return type.IsValueType
? Task.FromResult(Activator.CreateInstance(type))
: NullResult;
if (!type.IsValueType) return null;

// ReSharper disable once InconsistentlySynchronizedField
if (_valueTypeDefaults.TryGetValue(type, out var def)) return def;
lock (_lock)
{
if (_valueTypeDefaults.TryGetValue(type, out def)) return def;
def = Activator.CreateInstance(type);
_valueTypeDefaults[type] = def;
return def;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ public static class MsgPackHttpClientExtensions
/// Default formatter (uses <see cref="ContractlessStandardResolver" />).
/// </summary>
[PublicAPI]
public static readonly MessagePackMediaTypeFormatter DefaultFormatter = new MessagePackMediaTypeFormatter(ContractlessStandardResolver.Instance,
public static readonly MessagePackMediaTypeFormatter DefaultFormatter = new MessagePackMediaTypeFormatter(ContractlessStandardResolver.Options,
new[] {MessagePackMediaTypeFormatter.DefaultMediaType});

/// <summary>
19 changes: 13 additions & 6 deletions src/samples/NetCoreWebApi/NetCoreWebApi.csproj
Original file line number Diff line number Diff line change
@@ -1,25 +1,32 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup Label="Build">
<TargetFrameworks>netcoreapp2.1;netcoreapp2.2;netcoreapp3.0</TargetFrameworks>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
<noWarn>1573;1591</noWarn>
</PropertyGroup>

<ItemGroup Condition=" '$(TargetFramework)' != 'netcoreapp3.0' ">
<PackageReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Serilog" Version="2.9.0" />
<PackageReference Include="Serilog.AspNetCore" Version="3.1.0" />
<PackageReference Include="Serilog.AspNetCore" Version="3.2.0" />
<PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" />
</ItemGroup>

<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp2.1' ">
<PackageReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp2.2' ">
<PackageReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.0'">
<PackageReference Include=" Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.0.0" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<PackageReference Include=" Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.0" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\lib\Alphacloud.MessagePack.AspNetCore.Formatters\Alphacloud.MessagePack.AspNetCore.Formatters.csproj" />
</ItemGroup>
8 changes: 4 additions & 4 deletions src/samples/NetCoreWebApi/Startup.cs
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
#if NETCOREAPP3_0
#if NETCOREAPP3_0 || NETCOREAPP3_1
using Microsoft.Extensions.Hosting;
#endif
using Microsoft.Extensions.Configuration;
@@ -24,7 +24,7 @@ public Startup(IConfiguration configuration)
public void ConfigureServices(IServiceCollection services)
{
services.AddMessagePack();
#if NETCOREAPP3_0
#if NETCOREAPP3_0 || NETCOREAPP3_1
services.AddControllersWithViews()
.AddNewtonsoftJson();
services.AddRazorPages();
@@ -41,7 +41,7 @@ public void ConfigureServices(IServiceCollection services)

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app,
#if NETCOREAPP3_0
#if NETCOREAPP3_0 || NETCOREAPP3_1
IWebHostEnvironment env
#else
IHostingEnvironment env
@@ -52,7 +52,7 @@ IHostingEnvironment env
{
app.UseDeveloperExceptionPage();
}
#if NETCOREAPP3_0
#if NETCOREAPP3_0 || NETCOREAPP3_1
app.UseRouting();

app.UseEndpoints(endpoints =>
4 changes: 2 additions & 2 deletions src/tests/Tests.Functional/MessagepackFormatterTests.cs
Original file line number Diff line number Diff line change
@@ -32,7 +32,7 @@ static async Task<T> ReadData<T>(HttpResponseMessage response)
var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false);
var res = MessagePackSerializer.Deserialize<T>(
stream,
ContractlessStandardResolver.Instance
ContractlessStandardResolver.Options
);
return res;
}
@@ -91,7 +91,7 @@ public async Task CanPost()

using (var req = new HttpRequestMessage(HttpMethod.Post, new Uri("/api/values", UriKind.Relative)))
{
req.Content = new ByteArrayContent(MessagePackSerializer.Serialize(model, ContractlessStandardResolver.Instance));
req.Content = new ByteArrayContent(MessagePackSerializer.Serialize(model, ContractlessStandardResolver.Options));
req.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(MessagePackFormatterOptions.DefaultContentType);

using (var response = await _setup.Client.SendAsync(req).ConfigureAwait(false))
7 changes: 5 additions & 2 deletions src/tests/Tests.Functional/Setup/TestServerSetup.cs
Original file line number Diff line number Diff line change
@@ -22,7 +22,10 @@ public class TestServerSetup : IDisposable
public TestServerSetup()
{
Server = new TestServer(Program.CreateWebHostBuilder(Array.Empty<string>())
.UseStartup<Startup>()
#if NETCOREAPP3_1 || NETCOREAPP3_0
.UseTestServer()
#endif
.UseStartup<Startup>()
.UseSolutionRelativeContentRoot("Samples/NetCoreWebApi/")
);
Client = Server.CreateClient();
@@ -31,7 +34,7 @@ public TestServerSetup()

Formatters = new MediaTypeFormatterCollection(new MediaTypeFormatter[]
{
new MessagePackMediaTypeFormatter(ContractlessStandardResolver.Instance, new[] {MessagePackMediaTypeFormatter.DefaultMediaType}),
new MessagePackMediaTypeFormatter(ContractlessStandardResolver.Options, new[] {MessagePackMediaTypeFormatter.DefaultMediaType}),
new BsonMediaTypeFormatter(),
new JsonMediaTypeFormatter()
});
8 changes: 6 additions & 2 deletions src/tests/Tests.Functional/Tests.Functional.csproj
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup Label="Build">
<TargetFrameworks>netcoreapp2.1;netcoreapp2.2;netcoreapp3.0</TargetFrameworks>
<IsPackable>false</IsPackable>
<noWarn>1573;1591;CS1591</noWarn>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Appveyor.TestLogger" Version="2.0.0" />
<PackageReference Include="FluentAssertions" Version="5.9.0" />
<PackageReference Include="FluentAssertions" Version="5.10.0" />
<PackageReference Include="Moq" Version="4.13.1" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
@@ -34,6 +33,11 @@
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="3.1.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\lib\Alphacloud.MessagePack.AspNetCore.Formatters\Alphacloud.MessagePack.AspNetCore.Formatters.csproj" />
<ProjectReference Include="..\..\lib\Alphacloud.MessagePack.HttpFormatter\Alphacloud.MessagePack.HttpFormatter.csproj" />

0 comments on commit 0d2c4ba

Please sign in to comment.