nanoFramework.System.Net.Http.Server
1.5.125
Prefix Reserved
See the version list below for details.
dotnet add package nanoFramework.System.Net.Http.Server --version 1.5.125
NuGet\Install-Package nanoFramework.System.Net.Http.Server -Version 1.5.125
<PackageReference Include="nanoFramework.System.Net.Http.Server" Version="1.5.125" />
paket add nanoFramework.System.Net.Http.Server --version 1.5.125
#r "nuget: nanoFramework.System.Net.Http.Server, 1.5.125"
// Install nanoFramework.System.Net.Http.Server as a Cake Addin #addin nuget:?package=nanoFramework.System.Net.Http.Server&version=1.5.125 // Install nanoFramework.System.Net.Http.Server as a Cake Tool #tool nuget:?package=nanoFramework.System.Net.Http.Server&version=1.5.125
Welcome to the .NET nanoFramework System.Net.Http Library repository
Build status
Component | Build Status | NuGet Package |
---|---|---|
System.Net.Http | ||
System.Net.Http.Client | ||
System.Net.Http.Server |
Usage examples
The API, classes and namespaces in this library follow, as close as possible, the .NET ones.
Exceptions are the lack of async calls, generics and the Task, async/await model. The names reflect that by dropping the Async suffix and not returning Task
and the lack of the overloaded methods with CancelationToken
parameters.
Also worth mentioning is the need to pass the CA root certificate to HttpClient
in order to be able to validate the server certificate.
HttpClient calling REST services
HttpClient
makes it very easy to connect and consume REST services.
In order to use it, one has to create the object and them perform the calls. Note that HttpClient
is meant to be reused throughout the application lifecycle. There is no need to create a new instance every time a call has to be performed. Like this:
static readonly HttpClient _httpClient = new HttpClient();
To pass the CA root certificate allowing to validate the secure server certificate. The CA root cert can also come from a binary file or text file from a resource.
_httpClient.HttpsAuthentCert = new X509Certificate(
@"-----BEGIN CERTIFICATE-----
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl
MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp
U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw
NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE
ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp
ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3
DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf
8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN
+lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0
X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa
K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA
1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G
A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR
zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0
YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD
bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w
DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3
L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D
eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp
VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY
WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q=
-----END CERTIFICATE-----");
[!Note]
In order to get a root certificate from a server, if you install OpenSSL, you can run the following command:
openssl s_client -connect the.server-to-get-the-cert.com:443 -showcerts
This will show you all the root certs used and present them as PEM. You can then copy/paste the one you need.
It's possible to add HTTP headers that will be sent along with each request.
_httpClient.DefaultRequestHeaders.Add("x-ms-blob-type", "BlockBlob");
Perform a HTTP GET request
Here's a example of a HTTP request to read some content as a string:
HttpResponseMessage response = _httpClient.Get("https://httpbin.org/get");
response.EnsureSuccessStatusCode();
var responseBody = response.Content.ReadAsString();
The above call would return something similar to the following, which can be output in Visual Studio by calling Debug.WriteLine(responseBody)
:
{
"args": {},
"headers": {
"Host": "httpbin.org",
"X-Amzn-Trace-Id": "Root=1-6214aad3-38e5f8357bdf90530300eb5f",
"X-Ms-Blob-Type": "BlockBlob"
},
"origin": "5.249.47.208",
"url": "https://httpbin.org/get"
}
Note the call to response.EnsureSuccessStatusCode();
. This will throw an HttpRequestException
in case the status code from the HTTP request is not a successful one.
Perform a HTTP POST request
Follows an example of a HTTP request performing POST request to send some json content to an endpoint.
var content = new StringContent("{\"someProperty\":\"someValue\"}", Encoding.UTF8, "application/json");
var result = _httpClient.Post("https://httpbin.org/anything", content);
result.EnsureSuccessStatusCode();
Worth noting that the json content above it's presented as a simple string to simplify the code. There is a json library available to help with serializing and deserializing from/to C# classes, even the most complex ones.
Again, note the call to response.EnsureSuccessStatusCode();
to make sure the HTTP request was successfully performed.
Download binary content to a file
Using HttpClient
makes it easy to deal with binary content too. Here's an example of how to download a file from a webserver.
HttpResponseMessage response = _httpClient.Get("https://storage-on-the-cloud.net/file-with-binary-content");
response.EnsureSuccessStatusCode();
using FileStream fs = new FileStream($"I:\\i-am-a-binary-file.bin", FileMode.Create, FileAccess.Write);
response.Content.ReadAsStream().CopyTo(fs);
Disposing the response
[!Important] You MUST dispose the response sent but any of the request. The device memory is limited and the response content will never be disposed if not asked. Depending on the devices, you may have only 16 possible requests before you'll get an out of memory.
Here is few right patterns to make sure you'll dispose properly the response content:
using HttpResponseMessage response = client.Get(apiUrl);
// do whatever you want
// When the response object won't be used, it will be disposed
You can as well have an explicit using for a block:
using HttpResponseMessage response = client.Get(apiUrl)
{
// do whatever you want
// when exiting the block, the response will be disposed
}
Or explicitly dispose the response:
HttpResponseMessage response = client.Get(apiUrl);
// do whatever you want
// Dispose explicitly the content
response.Dispose();
In all cases, you MUST make ure you are disposing the response content.
Debugging through a reverse proxy
When code is deployed to a MCU it might be desirable to let the device connect to your development machine running IIS Express. This can be achieved with a proxy such as this one. Be aware that this leads to SocketExceptions with the current version of nanoFramework System.Net.Http when sending consecutive requests to your development machine. A simple retry mechanism in Debug mode will get around this.
Feedback and documentation
For documentation, providing feedback, issues and finding out how to contribute please refer to the Home repo.
Join our Discord community here.
Credits
The list of contributors to this project can be found at CONTRIBUTORS.
License
The nanoFramework Class Libraries are licensed under the MIT license.
Code of Conduct
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behaviour in our community. For more information see the .NET Foundation Code of Conduct.
.NET Foundation
This project is supported by the .NET Foundation.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net is compatible. |
-
- nanoFramework.CoreLibrary (>= 1.15.5)
- nanoFramework.Runtime.Events (>= 1.11.15)
- nanoFramework.System.Collections (>= 1.5.31)
- nanoFramework.System.Net (>= 1.10.72)
- nanoFramework.System.Text (>= 1.2.54)
- nanoFramework.System.Threading (>= 1.1.32)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on nanoFramework.System.Net.Http.Server:
Package | Downloads |
---|---|
nanoFramework.WebServer
This is a simple multithread WebServer supporting simple controller and event based calls. Perfect for .NET nanoFramework REST API based project. Supports both HTTPS and HTTP. If serving files from local storage is a requirement, please use instead the 'nanoFramework.WebServer.FileSystem' nuget. |
|
CCSWE.nanoFramework.WebServer
A simple asynchronous web server implementation for nanoFramework. |
|
nanoFramework.WebServer.FileSystem
This is a simple multithread WebServer supporting simple controller and event based calls. Perfect for .NET nanoFramework REST API based project. Support all type of Http Methods. Perfect for simple embedded web pages, with Support of file on a storage (USB, SD Card, in Memory). Supports both HTTPS and HTTP. Use this version if you want to serve local files and have support for System.IO.FileSystem on your device. Otherwise use 'nanoFramework.WebServer' nuget. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on nanoFramework.System.Net.Http.Server:
Repository | Stars |
---|---|
nanoframework/Samples
🍬 Code samples from the nanoFramework team used in testing, proof of concepts and other explorational endeavours
|
Version | Downloads | Last updated |
---|---|---|
1.5.150 | 651 | 9/26/2024 |
1.5.145 | 315 | 7/30/2024 |
1.5.138 | 766 | 5/13/2024 |
1.5.136 | 259 | 5/10/2024 |
1.5.134 | 484 | 4/8/2024 |
1.5.132 | 211 | 4/8/2024 |
1.5.130 | 313 | 4/3/2024 |
1.5.128 | 203 | 4/3/2024 |
1.5.125 | 639 | 1/29/2024 |
1.5.118 | 429 | 1/24/2024 |
1.5.113 | 3,770 | 11/10/2023 |
1.5.110 | 149 | 11/9/2023 |
1.5.108 | 242 | 11/9/2023 |
1.5.106 | 337 | 11/3/2023 |
1.5.104 | 527 | 10/10/2023 |
1.5.102 | 303 | 10/4/2023 |
1.5.99 | 582 | 8/8/2023 |
1.5.97 | 354 | 7/27/2023 |
1.5.95 | 232 | 7/27/2023 |
1.5.84 | 1,094 | 2/17/2023 |
1.5.82 | 582 | 1/24/2023 |
1.5.78 | 1,032 | 12/28/2022 |
1.5.75 | 355 | 12/28/2022 |
1.5.73 | 351 | 12/28/2022 |
1.5.70 | 511 | 12/27/2022 |
1.5.68 | 384 | 12/22/2022 |
1.5.61 | 674 | 11/23/2022 |
1.5.54 | 837 | 10/26/2022 |
1.5.52 | 413 | 10/26/2022 |
1.5.50 | 475 | 10/26/2022 |
1.5.48 | 619 | 10/25/2022 |
1.5.45 | 435 | 10/25/2022 |
1.5.43 | 666 | 10/24/2022 |
1.5.41 | 473 | 10/24/2022 |
1.5.39 | 446 | 10/24/2022 |
1.5.37 | 458 | 10/23/2022 |
1.5.35 | 705 | 10/23/2022 |
1.5.30 | 749 | 10/10/2022 |
1.5.27 | 439 | 10/8/2022 |
1.5.24 | 1,000 | 9/22/2022 |
1.5.22 | 743 | 9/22/2022 |
1.5.20 | 1,360 | 9/15/2022 |
1.5.18 | 501 | 9/15/2022 |
1.5.13 | 1,297 | 8/5/2022 |
1.5.10 | 726 | 8/4/2022 |
1.5.8 | 473 | 8/4/2022 |
1.5.6 | 445 | 8/4/2022 |
1.5.4 | 717 | 8/3/2022 |
1.5.2 | 732 | 8/3/2022 |
1.4.0.25 | 720 | 8/3/2022 |
1.4.0.23 | 1,062 | 6/13/2022 |
1.4.0.21 | 786 | 6/8/2022 |
1.4.0.19 | 744 | 6/8/2022 |
1.4.0.14 | 854 | 5/26/2022 |
1.4.0.12 | 547 | 5/18/2022 |
1.4.0.10 | 560 | 5/3/2022 |
1.4.0 | 1,037 | 3/28/2022 |
1.4.0-preview.52 | 143 | 3/28/2022 |
1.4.0-preview.51 | 133 | 3/28/2022 |
1.4.0-preview.50 | 128 | 3/28/2022 |
1.4.0-preview.48 | 124 | 3/28/2022 |
1.4.0-preview.47 | 131 | 3/28/2022 |
1.4.0-preview.46 | 129 | 3/28/2022 |
1.4.0-preview.44 | 169 | 3/17/2022 |
1.4.0-preview.43 | 132 | 3/17/2022 |
1.4.0-preview.42 | 144 | 3/14/2022 |
1.4.0-preview.41 | 124 | 3/14/2022 |
1.4.0-preview.40 | 130 | 3/14/2022 |
1.4.0-preview.39 | 131 | 3/14/2022 |
1.4.0-preview.37 | 132 | 3/14/2022 |
1.4.0-preview.36 | 147 | 3/8/2022 |
1.4.0-preview.35 | 131 | 3/8/2022 |
1.4.0-preview.33 | 154 | 3/4/2022 |
1.4.0-preview.32 | 129 | 3/3/2022 |
1.4.0-preview.31 | 135 | 3/2/2022 |
1.4.0-preview.29 | 151 | 2/28/2022 |
1.4.0-preview.28 | 169 | 2/24/2022 |
1.4.0-preview.26 | 156 | 2/17/2022 |
1.4.0-preview.24 | 143 | 2/17/2022 |
1.4.0-preview.22 | 186 | 2/6/2022 |
1.4.0-preview.21 | 155 | 2/4/2022 |
1.4.0-preview.19 | 150 | 2/4/2022 |
1.4.0-preview.18 | 161 | 1/28/2022 |
1.4.0-preview.16 | 151 | 1/28/2022 |
1.4.0-preview.15 | 149 | 1/28/2022 |
1.4.0-preview.13 | 145 | 1/28/2022 |
1.4.0-preview.12 | 151 | 1/21/2022 |
1.4.0-preview.6 | 248 | 1/12/2022 |
1.4.0-preview.5 | 147 | 1/12/2022 |
1.4.0-preview.4 | 145 | 1/11/2022 |
1.4.0-preview.3 | 151 | 1/11/2022 |
1.3.7-preview.8 | 167 | 1/5/2022 |
1.3.7-preview.7 | 166 | 1/3/2022 |
1.3.7-preview.6 | 159 | 1/3/2022 |
1.3.7-preview.5 | 151 | 1/3/2022 |
1.3.7-preview.4 | 151 | 12/30/2021 |
1.3.7-preview.3 | 167 | 12/28/2021 |
1.3.6 | 586 | 12/3/2021 |
1.3.6-preview.23 | 164 | 12/3/2021 |
1.3.6-preview.21 | 155 | 12/3/2021 |
1.3.6-preview.20 | 157 | 12/2/2021 |
1.3.6-preview.19 | 166 | 12/2/2021 |
1.3.6-preview.18 | 157 | 12/2/2021 |
1.3.6-preview.17 | 155 | 12/2/2021 |
1.3.6-preview.16 | 161 | 12/2/2021 |
1.3.6-preview.14 | 161 | 12/2/2021 |
1.3.6-preview.12 | 161 | 12/2/2021 |
1.3.6-preview.10 | 171 | 12/1/2021 |
1.3.6-preview.7 | 164 | 12/1/2021 |
1.3.6-preview.1 | 315 | 11/11/2021 |
1.3.5-preview.8 | 241 | 10/22/2021 |
1.3.5-preview.5 | 202 | 10/18/2021 |
1.3.4 | 886 | 7/16/2021 |
1.3.4-preview.78 | 158 | 7/16/2021 |
1.3.4-preview.76 | 174 | 7/16/2021 |
1.3.4-preview.74 | 166 | 7/16/2021 |
1.3.4-preview.72 | 171 | 7/15/2021 |
1.3.4-preview.70 | 188 | 7/14/2021 |
1.3.4-preview.68 | 325 | 6/19/2021 |
1.3.4-preview.66 | 273 | 6/19/2021 |
1.3.4-preview.64 | 182 | 6/17/2021 |
1.3.4-preview.62 | 219 | 6/7/2021 |
1.3.4-preview.60 | 186 | 6/7/2021 |
1.3.4-preview.58 | 219 | 6/7/2021 |
1.3.4-preview.56 | 554 | 6/6/2021 |
1.3.4-preview.54 | 577 | 6/3/2021 |
1.3.4-preview.52 | 175 | 6/2/2021 |
1.3.4-preview.50 | 190 | 6/1/2021 |
1.3.4-preview.48 | 196 | 6/1/2021 |
1.3.4-preview.41 | 227 | 5/25/2021 |
1.3.4-preview.39 | 237 | 5/21/2021 |
1.3.4-preview.37 | 237 | 5/20/2021 |
1.3.4-preview.35 | 189 | 5/19/2021 |
1.3.4-preview.33 | 182 | 5/19/2021 |
1.3.4-preview.31 | 197 | 5/19/2021 |
1.3.4-preview.29 | 182 | 5/15/2021 |
1.3.4-preview.27 | 170 | 5/15/2021 |
1.3.4-preview.25 | 169 | 5/15/2021 |
1.3.4-preview.23 | 204 | 5/13/2021 |
1.3.4-preview.22 | 171 | 5/13/2021 |
1.3.4-preview.20 | 211 | 5/11/2021 |
1.3.4-preview.18 | 247 | 5/6/2021 |
1.3.4-preview.16 | 170 | 5/6/2021 |
1.3.4-preview.14 | 170 | 5/5/2021 |
1.3.4-preview.13 | 166 | 5/5/2021 |
1.3.4-preview.10 | 262 | 4/10/2021 |
1.3.4-preview.9 | 208 | 4/9/2021 |
1.3.4-preview.7 | 211 | 4/5/2021 |
1.3.3-preview.65 | 259 | 3/20/2021 |
1.3.3-preview.62 | 218 | 3/19/2021 |
1.3.3-preview.60 | 182 | 3/17/2021 |
1.3.3-preview.57 | 174 | 3/17/2021 |
1.3.3-preview.55 | 246 | 3/2/2021 |
1.3.3-preview.50 | 537 | 1/19/2021 |
1.3.3-preview.47 | 223 | 1/6/2021 |
1.3.3-preview.40 | 416 | 12/29/2020 |
1.3.3-preview.34 | 292 | 12/7/2020 |
1.3.3-preview.32 | 220 | 12/7/2020 |
1.3.3-preview.27 | 346 | 11/3/2020 |
1.3.3-preview.25 | 229 | 10/26/2020 |
1.3.3-preview.23 | 266 | 10/21/2020 |
1.3.3-preview.17 | 254 | 10/20/2020 |
1.3.3-preview.15 | 321 | 10/1/2020 |
1.3.3-preview.11 | 241 | 9/30/2020 |
1.3.3-preview.9 | 250 | 9/30/2020 |
1.3.3-preview.7 | 266 | 9/27/2020 |
1.3.3-preview.5 | 274 | 9/27/2020 |
1.3.3-preview.1 | 238 | 9/24/2020 |
1.3.2-preview.3 | 260 | 9/19/2020 |
1.3.2-preview.1 | 268 | 8/25/2020 |
1.3.1-preview.6 | 282 | 7/2/2020 |
1.3.1-preview.3 | 315 | 6/30/2020 |
1.3.0 | 592 | 6/16/2020 |
1.3.0-rc.3 | 296 | 6/16/2020 |
1.3.0-preview.11 | 309 | 6/16/2020 |
1.3.0-preview.9 | 243 | 6/16/2020 |
1.3.0-preview.7 | 238 | 6/16/2020 |
1.3.0-alpha.12 | 306 | 6/16/2020 |
1.3.0-alpha.10 | 236 | 6/16/2020 |
1.3.0-alpha.8 | 240 | 6/16/2020 |
1.2.2 | 489 | 6/12/2020 |
1.2.2-preview.41 | 245 | 6/12/2020 |
1.2.2-preview.39 | 264 | 6/12/2020 |
1.2.2-preview.34 | 255 | 6/3/2020 |
1.2.2-preview.33 | 270 | 6/3/2020 |
1.2.2-preview.31 | 351 | 5/31/2020 |
1.2.2-preview.30 | 253 | 5/31/2020 |
1.2.2-preview.29 | 291 | 5/31/2020 |
1.2.2-preview.28 | 273 | 5/29/2020 |
1.2.2-preview.27 | 267 | 5/8/2020 |
1.2.2-preview.26 | 270 | 5/8/2020 |
1.2.2-preview.25 | 255 | 4/27/2020 |
1.2.2-preview.24 | 254 | 4/24/2020 |
1.2.2-preview.23 | 238 | 4/21/2020 |
1.2.2-preview.22 | 286 | 4/16/2020 |
1.2.2-preview.19 | 279 | 4/16/2020 |
1.2.2-preview.18 | 254 | 4/14/2020 |
1.2.2-preview.17 | 251 | 4/14/2020 |
1.2.2-preview.16 | 248 | 4/14/2020 |
1.2.2-preview.15 | 289 | 3/25/2020 |
1.2.2-preview.14 | 287 | 3/15/2020 |
1.2.2-preview.13 | 260 | 3/10/2020 |
1.2.2-preview.12 | 250 | 3/10/2020 |
1.2.2-preview.10 | 258 | 3/10/2020 |
1.2.2-preview.8 | 251 | 3/10/2020 |
1.2.2-preview.7 | 257 | 3/10/2020 |
1.2.2-preview.6 | 277 | 3/9/2020 |
1.2.2-preview.5 | 282 | 3/9/2020 |
1.2.2-preview.4 | 274 | 3/6/2020 |
1.2.2-preview.3 | 300 | 1/13/2020 |
1.2.2-preview.2 | 282 | 11/14/2019 |
1.2.2-preview.1 | 275 | 11/12/2019 |
1.2.2-alpha.42 | 241 | 6/12/2020 |
1.2.2-alpha.40 | 271 | 6/12/2020 |
1.2.2-alpha.38 | 287 | 6/11/2020 |
1.2.2-alpha.35 | 245 | 6/3/2020 |
1.2.2-alpha.34 | 270 | 6/3/2020 |
1.2.2-alpha.32 | 360 | 5/31/2020 |
1.2.2-alpha.31 | 277 | 5/31/2020 |
1.2.2-alpha.30 | 278 | 5/30/2020 |
1.2.2-alpha.29 | 273 | 5/29/2020 |
1.2.2-alpha.28 | 270 | 5/8/2020 |
1.2.2-alpha.27 | 270 | 5/8/2020 |
1.2.2-alpha.26 | 246 | 4/27/2020 |
1.2.2-alpha.23 | 281 | 4/16/2020 |
1.2.2-alpha.21 | 282 | 4/16/2020 |
1.2.2-alpha.20 | 280 | 4/16/2020 |
1.2.2-alpha.19 | 254 | 4/14/2020 |
1.2.2-alpha.18 | 249 | 4/14/2020 |
1.2.2-alpha.17 | 255 | 4/14/2020 |
1.2.2-alpha.16 | 295 | 3/25/2020 |
1.2.2-alpha.15 | 291 | 3/15/2020 |
1.2.2-alpha.14 | 245 | 3/10/2020 |
1.2.2-alpha.13 | 251 | 3/10/2020 |
1.2.2-alpha.11 | 252 | 3/10/2020 |
1.2.2-alpha.10 | 253 | 3/10/2020 |
1.2.2-alpha.9 | 257 | 3/10/2020 |
1.2.2-alpha.8 | 279 | 3/9/2020 |
1.2.2-alpha.7 | 272 | 3/9/2020 |
1.2.2-alpha.6 | 299 | 3/9/2020 |
1.2.1-preview.3 | 275 | 11/8/2019 |
1.2.1-preview.1 | 286 | 11/5/2019 |
1.2.0-preview.3 | 265 | 10/18/2019 |
1.1.0 | 572 | 10/17/2019 |
1.1.0-preview.3 | 276 | 10/17/2019 |
1.0.8-preview.7 | 271 | 10/17/2019 |
1.0.8-preview.5 | 282 | 10/15/2019 |
1.0.8-preview.4 | 276 | 9/30/2019 |
1.0.8-preview.1 | 284 | 8/30/2019 |
1.0.7-preview.1 | 292 | 8/30/2019 |
1.0.6-preview.33 | 291 | 8/19/2019 |
1.0.6-preview.30 | 293 | 7/19/2019 |
1.0.6-preview.26 | 294 | 6/23/2019 |
1.0.6-preview.19 | 315 | 6/22/2019 |
1.0.6-preview.17 | 318 | 6/18/2019 |
1.0.5-preview-028 | 539 | 4/5/2019 |