Breaking changes

What broke between versions?

When we're making new versions of this library, there are several breaking changes that we had to make to maintain the library better and to introduce new features and/or improvements. Here are the following breaking changes sorted from the oldest to the latest:

From 1.0.0-1.5.0 to 1.6.0

The version 1.6.0 of the library has introduced the following breaking changes:

Moved namespaces

PlatformHelper.cs
namespace SpecProbe.Platform

PlatformHelper included platform-specific tools that check for the installed operating system on your computer, as well as other properties, such as the architecture. However, one of the SpecProbe versions moved this source file to SpecProbe.Software, but the namespace didn't change. As a result, we had to adjust it to match the assembly in question.

Starting from this version, you'll need to update all the libraries that refer to this platform helper to use the brand new namespace to avoid bogus loading errors.

RidGraphReader.cs
namespace SpecProbe.Platform
HardwareProber.cs
namespace SpecProbe.Hardware
Hardware .cs files
namespace SpecProbe.Hardware.*

We've moved the software-related classes to the appropriate SpecProbe.Software library and all the hardware code one directory level closer to the root so that we can get rid of .Hardware part of the SpecProbe root namespace.

You must change all the references to point to the updated namespaces.

From 1.6.0 to 3.0.0

The version 3.0.0 of the library has introduced the following breaking changes:

Library manager reworked

LibraryItem.cs
public class LibraryItem

In order to simplify things, we've decided to lower the requirement of managing native libraries so that you need to just call the constructor of one class instead of two. That class that you need to create has a path to a native library file that you wish to load.

LibraryManager.cs
public LibraryItem FindItem()

As a result, the above function has been removed.

LibraryManager.cs
public LibraryManager(params LibraryItem[] items)

Also, the above constructor has been changed to take an array of LibraryFile classes that specify which file to load.

While it simplifies native library loading, you'll need to create conditional statements so that you can filter loading by architecture.

Refactored parser functions

We've refactored all parser functions so that they more accurately reflect the hardware type being parsed, with single-array properties actually being a single class instance to simplify things. As a result, we've renamed all the properties and changed them into functions:

  • Processors -> GetProcessor()

  • Memory -> GetMemory()

  • Video -> GetVideos()

  • HardDisk -> GetHardDisks()

In addition to that, each device type now store their own errors instead of grouping exceptions together. This further simplifies exception handling. This led to a rename of the Errors property to GetParseExceptions().

In order to upgrade to 3.0.0, you must change all calls to the device info properties so that the above functions can be called instead.

Last updated