diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 387ceda6a..5a1d48082 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -16,18 +16,23 @@ jobs:
pool:
vmImage: 'ubuntu-16.04'
steps:
+ - task: UseDotNet@2
+ displayName: 'Use .NET Core sdk'
+ inputs:
+ packageType: 'sdk'
+ version: '3.x'
- template: azure/build.yml
- job: Windows_build
pool:
- vmImage: 'vs2017-win2016'
+ vmImage: 'windows-2019'
condition: ne(variables['Build.SourceBranch'], 'refs/heads/dev')
steps:
- template: azure/build.yml
- job: Windows_deploy
pool:
- vmImage: 'vs2017-win2016'
+ vmImage: 'windows-2019'
condition: |
and (
succeeded(),
diff --git a/samples/01_basic_ping_bot/01_basic_ping_bot.csproj b/samples/01_basic_ping_bot/01_basic_ping_bot.csproj
index 5484e3d55..4b4e35e3f 100644
--- a/samples/01_basic_ping_bot/01_basic_ping_bot.csproj
+++ b/samples/01_basic_ping_bot/01_basic_ping_bot.csproj
@@ -2,7 +2,7 @@
Exe
- netcoreapp2.0
+ netcoreapp3.0
diff --git a/samples/02_commands_framework/02_commands_framework.csproj b/samples/02_commands_framework/02_commands_framework.csproj
index f479ee0b0..84b30aa99 100644
--- a/samples/02_commands_framework/02_commands_framework.csproj
+++ b/samples/02_commands_framework/02_commands_framework.csproj
@@ -2,11 +2,11 @@
Exe
- netcoreapp2.0
+ netcoreapp3.0
-
+
diff --git a/samples/03_sharded_client/03_sharded_client.csproj b/samples/03_sharded_client/03_sharded_client.csproj
index 5d76961cd..a6599c117 100644
--- a/samples/03_sharded_client/03_sharded_client.csproj
+++ b/samples/03_sharded_client/03_sharded_client.csproj
@@ -2,10 +2,14 @@
Exe
- netcoreapp2.1
+ netcoreapp3.0
_03_sharded_client
+
+
+
+
diff --git a/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj b/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj
index 5da3d506d..1b2ee45bf 100644
--- a/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj
+++ b/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj
@@ -1,13 +1,13 @@
-
+
Discord.Net.Analyzers
Discord.Analyzers
A Discord.Net extension adding support for design-time analysis of the API usage.
- netstandard1.3
+ netstandard2.0;netstandard2.1
-
+
diff --git a/src/Discord.Net.Analyzers/GuildAccessAnalyzer.cs b/src/Discord.Net.Analyzers/GuildAccessAnalyzer.cs
index 0760d019f..38d3f39d4 100644
--- a/src/Discord.Net.Analyzers/GuildAccessAnalyzer.cs
+++ b/src/Discord.Net.Analyzers/GuildAccessAnalyzer.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Immutable;
using System.Linq;
using Microsoft.CodeAnalysis;
@@ -24,6 +24,8 @@ namespace Discord.Analyzers
public override void Initialize(AnalysisContext context)
{
+ context.EnableConcurrentExecution();
+ context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.Analyze | GeneratedCodeAnalysisFlags.ReportDiagnostics);
context.RegisterSyntaxNodeAction(AnalyzeMemberAccess, SyntaxKind.SimpleMemberAccessExpression);
}
diff --git a/src/Discord.Net.Commands/Discord.Net.Commands.csproj b/src/Discord.Net.Commands/Discord.Net.Commands.csproj
index 1bef1bfea..95e7db491 100644
--- a/src/Discord.Net.Commands/Discord.Net.Commands.csproj
+++ b/src/Discord.Net.Commands/Discord.Net.Commands.csproj
@@ -4,16 +4,11 @@
Discord.Net.Commands
Discord.Commands
A Discord.Net extension adding support for bot commands.
- net46;netstandard1.3;netstandard2.0
- netstandard1.3;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 20e57d346..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.
- net46;netstandard1.3;netstandard2.0
- netstandard1.3;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.Examples/Discord.Net.Examples.csproj b/src/Discord.Net.Examples/Discord.Net.Examples.csproj
index b02d2e6d8..ec0253428 100644
--- a/src/Discord.Net.Examples/Discord.Net.Examples.csproj
+++ b/src/Discord.Net.Examples/Discord.Net.Examples.csproj
@@ -1,4 +1,4 @@
-
+
netstandard2.0
@@ -15,7 +15,7 @@
-
+
diff --git a/src/Discord.Net.Providers.WS4Net/Discord.Net.Providers.WS4Net.csproj b/src/Discord.Net.Providers.WS4Net/Discord.Net.Providers.WS4Net.csproj
index bfd0983ce..e143340e1 100644
--- a/src/Discord.Net.Providers.WS4Net/Discord.Net.Providers.WS4Net.csproj
+++ b/src/Discord.Net.Providers.WS4Net/Discord.Net.Providers.WS4Net.csproj
@@ -1,10 +1,10 @@
-
+
Discord.Net.Providers.WS4Net
Discord.Providers.WS4Net
An optional WebSocket client provider for Discord.Net using WebSocket4Net
- netstandard1.3
+ netstandard2.0
diff --git a/src/Discord.Net.Providers.WS4Net/WS4NetProvider.cs b/src/Discord.Net.Providers.WS4Net/WS4NetProvider.cs
index 166e767d0..b56f3b4f0 100644
--- a/src/Discord.Net.Providers.WS4Net/WS4NetProvider.cs
+++ b/src/Discord.Net.Providers.WS4Net/WS4NetProvider.cs
@@ -1,4 +1,4 @@
-using Discord.Net.WebSockets;
+using Discord.Net.WebSockets;
namespace Discord.Net.Providers.WS4Net
{
diff --git a/src/Discord.Net.Rest/Discord.Net.Rest.csproj b/src/Discord.Net.Rest/Discord.Net.Rest.csproj
index 75b69bd04..b9592f18d 100644
--- a/src/Discord.Net.Rest/Discord.Net.Rest.csproj
+++ b/src/Discord.Net.Rest/Discord.Net.Rest.csproj
@@ -4,16 +4,13 @@
Discord.Net.Rest
Discord.Rest
A core Discord.Net library containing the REST client and models.
- net46;netstandard1.3;netstandard2.0
- netstandard1.3;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 ddd3b7954..26a249097 100644
--- a/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj
+++ b/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj
@@ -4,15 +4,12 @@
Discord.Net.WebSocket
Discord.WebSocket
A core Discord.Net library containing the WebSocket client and models.
- net46;netstandard1.3;netstandard2.0
- netstandard1.3;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 58282d85b..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.
- netstandard1.3
+ 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.Analyzers.Tests/Discord.Net.Analyzers.Tests.csproj b/test/Discord.Net.Analyzers.Tests/Discord.Net.Analyzers.Tests.csproj
index 1ee986e8a..bc587657c 100644
--- a/test/Discord.Net.Analyzers.Tests/Discord.Net.Analyzers.Tests.csproj
+++ b/test/Discord.Net.Analyzers.Tests/Discord.Net.Analyzers.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp2.1
+ netcoreapp3.0
false
@@ -15,10 +15,13 @@
-
-
-
-
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/test/Discord.Net.Analyzers.Tests/Extensions/AppDomainPolyfill.cs b/test/Discord.Net.Analyzers.Tests/Extensions/AppDomainPolyfill.cs
deleted file mode 100644
index 729bc385c..000000000
--- a/test/Discord.Net.Analyzers.Tests/Extensions/AppDomainPolyfill.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System.Linq;
-using System.Reflection;
-using Microsoft.DotNet.PlatformAbstractions;
-using Microsoft.Extensions.DependencyModel;
-
-namespace System
-{
- /// Polyfill of the AppDomain class from full framework.
- internal class AppDomain
- {
- public static AppDomain CurrentDomain { get; private set; }
-
- private AppDomain()
- {
- }
-
- static AppDomain()
- {
- CurrentDomain = new AppDomain();
- }
-
- public Assembly[] GetAssemblies()
- {
- var rid = RuntimeEnvironment.GetRuntimeIdentifier();
- var ass = DependencyContext.Default.GetRuntimeAssemblyNames(rid);
-
- return ass.Select(xan => Assembly.Load(xan)).ToArray();
- }
- }
-}
\ No newline at end of file
diff --git a/test/Discord.Net.Tests.Integration/Discord.Net.Tests.Integration.csproj b/test/Discord.Net.Tests.Integration/Discord.Net.Tests.Integration.csproj
index cd4aafac0..c571059ef 100644
--- a/test/Discord.Net.Tests.Integration/Discord.Net.Tests.Integration.csproj
+++ b/test/Discord.Net.Tests.Integration/Discord.Net.Tests.Integration.csproj
@@ -1,4 +1,4 @@
-
+
netcoreapp2.1
@@ -15,9 +15,12 @@
-
-
-
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
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 4a7898b14..357bf9531 100644
--- a/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj
+++ b/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj
@@ -1,7 +1,7 @@
-
+
- netcoreapp2.1
+ netcoreapp3.0
false
@@ -13,9 +13,12 @@
-
-
-
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
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;