github danikf/tik4net v5.0.0-alpha

pre-release6 hours ago

tik4net 5.0.0-alpha

Full release notes and version history: Wiki → History

What's new in 5.0

  • RoMON — reach a router you have no IP route to, through a neighbouring MikroTik, over Telnet, SSH, MAC-Telnet or any WinBox transport; RoMON discover and ping included
  • One codebase from RouterOS 6.49 to 7.24 — the same entities read and write correctly on each version, tested on 7.24.5, 7.21.5 and 6.49.13
  • TikField<T> — a property knows whether the router printed the field; it never invents a default, and a value from a newer RouterOS does not break the read
  • DescribeMenu — ask the router what a menu takes: sub-menus, commands, arguments, readable and clearable fields, accepted words, from the router's own grammar
  • Connection string — TikConnectionSetup.FromConnectionString: router, credentials and transport come from config
  • Negated matchers and value lists — src-address=!10.0.0.0/8 is a negated address; dst-port=22,8291, tcp-flags=syn,!ack are typed, immutable TikValueList<T>
  • Analyzers TIK001 / TIK002 — compile-time warnings for TikField comparisons that can never be true, with a code fix
  • SSH private-key login, list sync with the fewest moves, and filtered CLI reads that run on the router

Breaking changes (from 4.x)

Full guide, with before/after code: Upgrading from 4.x to 5.0 — and a ready-to-paste prompt for an AI coding agent: with an AI agent

Package IDs, namespaces and the connection API are unchanged. What changed:

  • Every entity property except .id is a TikField<T?> — the compiler finds most of it; read What compiles but changed meaning in the guide, above all if you merge or diff entity lists
  • Adds and singleton saves send only what you assigned — a property's DefaultValue documents the router's default without acting on it
  • Multi-value fields are TikValueList<T>; timeouts and command durations are TimeSpan; dates are DateTime
  • A filter on a field the menu does not have throws, and a CLI read the router refuses with a parse error throws TikCommandTrapException
  • A refused or unreachable port throws SocketException; Guard and LinqEx are internal; a few entities changed shape (see the guide)

NuGet packages

Package Install
tik4net (core + O/R mapper) dotnet add package tik4net --version 5.0.0-alpha
tik4net.ssh (satellite, opt-in) dotnet add package tik4net.ssh --version 5.0.0-alpha
tik4net.testing dotnet add package tik4net.testing --version 5.0.0-alpha
tik4net.mcp (dev/debug helper tool) dotnet tool install -g tik4net.mcp --version 5.0.0-alpha

Full Changelog: v4.0.0...v5.0.0-alpha

Don't miss a new tik4net release

NewReleases is sending notifications on new releases.