根据文档(https://github.com/Azure/azure-iot-sdk-csharp/blob/main/supported_platforms.md),Azure IoT SDK仅正式支持.NET 5。
但是 .NET 5 生命周期已结束,那么这是否准确?我们希望在 Linux 上的 .NET 6 上运行 SDK,但如果它没有得到官方支持,我们是否应该以 .NET 5 为目标,即使它已经结束了?
是的,Azure IoT SDK .NET 6 支持。
确保下载 .NET 6.0 Linux、macOS 和 Windows
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> </PropertyGroup>
using (var deviceClient = DeviceClient.CreateFromConnectionString(connectionString, TransportType.Mqtt))
{
await SendTelemetryMessage(deviceClient, deviceId);
}
}
static async Task SendTelemetryMessage(DeviceClient deviceClient, string deviceId)
{
try
{
var telemetryDataPoint = new
{
temperature = 25.5,
humidity = 60.0
};
var messageString = Newtonsoft.Json.JsonConvert.SerializeObject(telemetryDataPoint);
var message = new Message(Encoding.ASCII.GetBytes(messageString));
message.Properties.Add("deviceId", deviceId);
await deviceClient.SendEventAsync(message);
Console.WriteLine("Message sent: {0}", messageString);
}
catch (Exception ex)
{
Console.WriteLine($"Error sending telemetry: {ex.Message}");
}