diff --git a/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj b/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj
index 05b9e8117..e96a2be27 100644
--- a/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj
+++ b/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj
@@ -4,7 +4,7 @@
Discord.Net.Analyzers
Discord.Analyzers
A Discord.Net extension adding support for design-time analysis of the API usage.
- netstandard2.0
+ netstandard2.0;netstandard2.1
diff --git a/src/Discord.Net.Commands/Discord.Net.Commands.csproj b/src/Discord.Net.Commands/Discord.Net.Commands.csproj
index 1a7a73fb3..95e7db491 100644
--- a/src/Discord.Net.Commands/Discord.Net.Commands.csproj
+++ b/src/Discord.Net.Commands/Discord.Net.Commands.csproj
@@ -4,8 +4,8 @@
Discord.Net.Commands
Discord.Commands
A Discord.Net extension adding support for bot commands.
- net461;netstandard2.0
- netstandard2.0
+ net461;netstandard2.0;netstandard2.1
+ netstandard2.0;netstandard2.1
diff --git a/src/Discord.Net.Commands/Readers/UserTypeReader.cs b/src/Discord.Net.Commands/Readers/UserTypeReader.cs
index 6d9f1dd8c..c0104e341 100644
--- a/src/Discord.Net.Commands/Readers/UserTypeReader.cs
+++ b/src/Discord.Net.Commands/Readers/UserTypeReader.cs
@@ -49,7 +49,7 @@ namespace Discord.Commands
string username = input.Substring(0, index);
if (ushort.TryParse(input.Substring(index + 1), out ushort discriminator))
{
- var channelUser = await channelUsers.FirstOrDefault(x => x.DiscriminatorValue == discriminator &&
+ var channelUser = await channelUsers.FirstOrDefaultAsync(x => x.DiscriminatorValue == discriminator &&
string.Equals(username, x.Username, StringComparison.OrdinalIgnoreCase)).ConfigureAwait(false);
AddResult(results, channelUser as T, channelUser?.Username == username ? 0.85f : 0.75f);
diff --git a/src/Discord.Net.Core/Discord.Net.Core.csproj b/src/Discord.Net.Core/Discord.Net.Core.csproj
index 39f5d0a2d..dd2f2afe3 100644
--- a/src/Discord.Net.Core/Discord.Net.Core.csproj
+++ b/src/Discord.Net.Core/Discord.Net.Core.csproj
@@ -4,13 +4,13 @@
Discord.Net.Core
Discord
The core components for the Discord.Net library.
- net461;netstandard2.0
- netstandard2.0
+ net461;netstandard2.0;netstandard2.1
+ netstandard2.0;netstandard2.1
-
+
all
diff --git a/src/Discord.Net.Core/Extensions/AsyncEnumerableExtensions.cs b/src/Discord.Net.Core/Extensions/AsyncEnumerableExtensions.cs
index 282d20517..d96076259 100644
--- a/src/Discord.Net.Core/Extensions/AsyncEnumerableExtensions.cs
+++ b/src/Discord.Net.Core/Extensions/AsyncEnumerableExtensions.cs
@@ -15,7 +15,7 @@ namespace Discord
/// Flattens the specified pages into one asynchronously.
public static async Task> FlattenAsync(this IAsyncEnumerable> source)
{
- return await source.Flatten().ToArray().ConfigureAwait(false);
+ return await source.Flatten().ToArrayAsync().ConfigureAwait(false);
}
/// Flattens the specified pages into one .
public static IAsyncEnumerable Flatten(this IAsyncEnumerable> source)
diff --git a/src/Discord.Net.Core/Utils/Paging/PagedEnumerator.cs b/src/Discord.Net.Core/Utils/Paging/PagedEnumerator.cs
index a31721875..84209902a 100644
--- a/src/Discord.Net.Core/Utils/Paging/PagedEnumerator.cs
+++ b/src/Discord.Net.Core/Utils/Paging/PagedEnumerator.cs
@@ -25,26 +25,28 @@ namespace Discord
_nextPage = nextPage;
}
- public IAsyncEnumerator> GetEnumerator() => new Enumerator(this);
+ public IAsyncEnumerator> GetAsyncEnumerator(CancellationToken cancellationToken = new CancellationToken()) => new Enumerator(this, cancellationToken);
internal class Enumerator : IAsyncEnumerator>
{
private readonly PagedAsyncEnumerable _source;
+ private readonly CancellationToken _token;
private readonly PageInfo _info;
public IReadOnlyCollection Current { get; private set; }
- public Enumerator(PagedAsyncEnumerable source)
+ public Enumerator(PagedAsyncEnumerable source, CancellationToken token)
{
_source = source;
+ _token = token;
_info = new PageInfo(source._start, source._count, source.PageSize);
}
- public async Task MoveNext(CancellationToken cancelToken)
+ public async ValueTask MoveNextAsync()
{
if (_info.Remaining == 0)
return false;
- var data = await _source._getPage(_info, cancelToken).ConfigureAwait(false);
+ var data = await _source._getPage(_info, _token).ConfigureAwait(false);
Current = new Page(_info, data);
_info.Page++;
@@ -71,7 +73,11 @@ namespace Discord
return true;
}
- public void Dispose() { Current = null; }
+ public ValueTask DisposeAsync()
+ {
+ Current = null;
+ return default;
+ }
}
}
}
diff --git a/src/Discord.Net.Rest/Discord.Net.Rest.csproj b/src/Discord.Net.Rest/Discord.Net.Rest.csproj
index 0bcd5059e..b9592f18d 100644
--- a/src/Discord.Net.Rest/Discord.Net.Rest.csproj
+++ b/src/Discord.Net.Rest/Discord.Net.Rest.csproj
@@ -4,8 +4,8 @@
Discord.Net.Rest
Discord.Rest
A core Discord.Net library containing the REST client and models.
- net461;netstandard2.0
- netstandard2.0
+ net461;netstandard2.0;netstandard2.1
+ netstandard2.0;netstandard2.1
diff --git a/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj b/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj
index b40617c43..26a249097 100644
--- a/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj
+++ b/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj
@@ -4,8 +4,8 @@
Discord.Net.WebSocket
Discord.WebSocket
A core Discord.Net library containing the WebSocket client and models.
- net461;netstandard2.0
- netstandard2.0
+ net461;netstandard2.0;netstandard2.1
+ netstandard2.0;netstandard2.1
true
diff --git a/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj b/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj
index c512a4aa8..f1db66363 100644
--- a/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj
+++ b/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj
@@ -4,7 +4,7 @@
Discord.Net.Webhook
Discord.Webhook
A core Discord.Net library containing the Webhook client and models.
- netstandard2.0
+ netstandard2.0;netstandard2.1
diff --git a/src/Discord.Net/Discord.Net.nuspec b/src/Discord.Net/Discord.Net.nuspec
index 3aa0d6add..4b7717e58 100644
--- a/src/Discord.Net/Discord.Net.nuspec
+++ b/src/Discord.Net/Discord.Net.nuspec
@@ -13,21 +13,21 @@
false
https://github.com/RogueException/Discord.Net/raw/dev/docs/marketing/logo/PackageLogo.png
-
+
-
-
+
+
-
+
diff --git a/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj b/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj
index 1202777f6..bfec38775 100644
--- a/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj
+++ b/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj
@@ -1,4 +1,4 @@
-
+
netcoreapp2.1
diff --git a/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs b/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs
index 1623d94f2..b0c20031a 100644
--- a/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs
+++ b/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs
@@ -250,7 +250,7 @@ namespace Discord
.WithFooter("This is the footer", url)
.WithImageUrl(url)
.WithThumbnailUrl(url)
- .WithTimestamp(DateTime.MinValue)
+ .WithTimestamp(DateTimeOffset.MinValue)
.WithTitle("This is the title")
.WithUrl(url)
.AddField("Field 1", "Inline", true)
diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs
index 573ca57c3..8b4e8b0d0 100644
--- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs
+++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
-using System.Text;
using System.Threading.Tasks;
using Discord.Audio;