BACnet.Logging.CommonLogging
4.0.0-beta.1
dotnet add package BACnet.Logging.CommonLogging --version 4.0.0-beta.1
NuGet\Install-Package BACnet.Logging.CommonLogging -Version 4.0.0-beta.1
<PackageReference Include="BACnet.Logging.CommonLogging" Version="4.0.0-beta.1" />
<PackageVersion Include="BACnet.Logging.CommonLogging" Version="4.0.0-beta.1" />
<PackageReference Include="BACnet.Logging.CommonLogging" />
paket add BACnet.Logging.CommonLogging --version 4.0.0-beta.1
#r "nuget: BACnet.Logging.CommonLogging, 4.0.0-beta.1"
#:package BACnet.Logging.CommonLogging@4.0.0-beta.1
#addin nuget:?package=BACnet.Logging.CommonLogging&version=4.0.0-beta.1&prerelease
#tool nuget:?package=BACnet.Logging.CommonLogging&version=4.0.0-beta.1&prerelease
.NET library for BACnet
A standalone BACnet protocol stack for .NET.
The stack was originally developed by Morten Kvistgaard — with significant contributions from F. Chaxel, Steve Karg, and the BACnet Stack (in C) — as part of YABE (Yet Another BACnet Explorer). This repository was forked from the YABE SourceForge SVN and is maintained here as an independent library on NuGet; it is a separate codebase from YABE (YABE keeps its own copy of the stack).
Packages
Supported target frameworks
| Package | net48 | netstandard2.0 | net8.0 | net10.0 |
|---|---|---|---|---|
| BACnet (core) | ✅ | ✅ | ✅ | ✅ |
| BACnet.Ethernet | ✅ | — | ✅ | ✅ |
| BACnet.Serial | ✅ | — | ✅ | ✅ |
| BACnet.Logging.CommonLogging | ✅ | ✅ | ✅ | ✅ |
netstandard2.0 covers .NET 6/7 and other runtimes.
Install
dotnet add package BACnet
# optional native transports:
dotnet add package BACnet.Ethernet
dotnet add package BACnet.Serial
Getting started
A minimal Who-Is / read a property over BACnet/IP:
using System.IO.BACnet;
var client = new BacnetClient(new BacnetIpUdpProtocolTransport(0xBAC0));
client.OnIam += (sender, adr, deviceId, maxApdu, seg, vendorId)
=> Console.WriteLine($"Found device {deviceId} at {adr}");
client.Start();
client.WhoIs();
The Examples/ folder has runnable samples — basic read/write, a device/server,
COV subscription, alarm/event handling, BBMD, a serial device, and more.
Logging
The stack uses Microsoft.Extensions.Logging. By default logging is a no-op; wire a factory once
and everything logs through it:
using Microsoft.Extensions.Logging;
BacnetLogging.Factory = LoggerFactory.Create(b => b.AddConsole());
Console, Serilog, NLog, and log4net all work via their MEL providers. If you already use
Common.Logging, add the BACnet.Logging.CommonLogging package and call b.AddCommonLogging().
Upgrading from 3.x to 4.0
4.0 has a few breaking changes — see MIGRATION.md for details:
- Logging moved from
Common.LoggingtoMicrosoft.Extensions.Logging(theLogproperty is nowILogger). - Native transports split into optional packages: pcap →
BACnet.Ethernet, serial →BACnet.Serial. The MS/TP and PTP protocols stay in the core; useSerialTransport.Mstp(...)/.Ptp(...)fromBACnet.Serial.
GitHub Packages
Releases are also published to GitHub Packages. To restore from there, add the source
https://nuget.pkg.github.com/ela-compil/index.json (a GitHub PAT with read:packages is required).
Contributing
See CONTRIBUTING.md. Licensed under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 is compatible. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.8
- Common.Logging (>= 3.4.1)
- Microsoft.Extensions.Logging (>= 8.0.1)
-
.NETStandard 2.0
- Common.Logging (>= 3.4.1)
- Microsoft.Extensions.Logging (>= 8.0.1)
-
net10.0
- Common.Logging (>= 3.4.1)
- Microsoft.Extensions.Logging (>= 8.0.1)
-
net8.0
- Common.Logging (>= 3.4.1)
- Microsoft.Extensions.Logging (>= 8.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.0.0-beta.1 | 0 | 7/2/2026 |
See the changelog: https://github.com/ela-compil/BACnet/blob/master/CHANGELOG.md