![]() |
VOOZH | about |
dotnet add package FiftyOne.DeviceDetection.Hash.Engine.OnPremise --version 4.5.110
NuGet\Install-Package FiftyOne.DeviceDetection.Hash.Engine.OnPremise -Version 4.5.110
<PackageReference Include="FiftyOne.DeviceDetection.Hash.Engine.OnPremise" Version="4.5.110" />
<PackageVersion Include="FiftyOne.DeviceDetection.Hash.Engine.OnPremise" Version="4.5.110" />Directory.Packages.props
<PackageReference Include="FiftyOne.DeviceDetection.Hash.Engine.OnPremise" />Project file
paket add FiftyOne.DeviceDetection.Hash.Engine.OnPremise --version 4.5.110
#r "nuget: FiftyOne.DeviceDetection.Hash.Engine.OnPremise, 4.5.110"
#:package FiftyOne.DeviceDetection.Hash.Engine.OnPremise@4.5.110
#addin nuget:?package=FiftyOne.DeviceDetection.Hash.Engine.OnPremise&version=4.5.110Install as a Cake Addin
#tool nuget:?package=FiftyOne.DeviceDetection.Hash.Engine.OnPremise&version=4.5.110Install as a Cake Tool
👁 Data rewards the curious
Pipeline API
This repository contains the device detection engines for the .NET implementation of the Pipeline API.
The specification is also available on GitHub and is recommended reading if you wish to understand the concepts and design of this API.
Visual Studio 2022 or later is recommended. Although Visual Studio Code can be used for working with most of the projects.
The core device detection projects are written in C and C++. The Pipeline engines are written in C# and target .NET Standard 2.0.3. Example and test projects mostly target .NET 6.0 though in some cases, projects are available targeting other frameworks.
For runtime dependencies, see our
dependencies
page. The ci/options.json file lists the tested and packaged .NET versions
and operating systems automatic tests are performed with. The solution will
likely operate with other versions.
The API can either use our cloud service to get its data or it can use a local (on-premise) copy of the data.
You will require a resource key to use the Cloud API. You can create resource keys using our configurator, see our documentation on how to use this.
The cloud property tiers changed in May 2026, so the examples and documentation now reflect what is free and what needs a paid subscription. A free resource key created here selects the free tier properties, whilst a key created here also includes the paid properties used by the examples. See pricing to get a paid subscription with more properties.
In order to perform device detection on-premise, you will need to use a 51Degrees data file. This repository includes a free, 'lite' file in the 'device-detection-data' sub-module that has a significantly reduced set of properties. To obtain a file with a more complete set of device properties see the 51Degrees website. If you want to use the lite file, you will need to install GitLFS.
On Linux:
sudo apt-get install git-lfs
git lfs install
Then, navigate to 'device-detection-cxx/device-detection-data' and execute:
git lfs pull
The examples in the device-detection-dotnet-examples repository resolve the data file in the following order:
_51DEGREES_DD_PATH environment variable, set to an explicit path to
the data file.The easiest way to install is to use NuGet to add the reference to the package:
Install-Package FiftyOne.DeviceDetection
Device detection on-premise uses a native binary (i.e. compiled from C code to target a specific platform/architecture). The NuGet package contains several binaries for common platforms. However, in some cases, you'll need to build the native binaries yourself for your target platform. This section explains how to do this.
v14310.0.18362.0sudo apt-get install g++ make libatomic1git submodule update --init --recursiveVisual studio should now be able to build the native binaries as part of its normal build process.
You can package a project into NuGet *.nupkg file by running a command like:
dotnet pack [Project] -o "[PackagesFolder]" /p:PackageVersion=0.0.0 -c [Configuration] /p:Platform=[Architecture]
FiftyOne.DeviceDetection.Hash.Engine.OnPremise📝 Using AnyCPU might prevent the unmanaged (C++) code from being built into .Native.dll library. Use x86/x64/arm64 specifically.
📝 If creating cross-platform package from multiple native dlls, put all 6x FiftyOne.DeviceDetection.Hash.Engine.OnPremise.Native.dll into respective folders:
../
macos/
arm64/
x64/
linux/
x64/
x86/
windows/
x64/
x86/
and add to the packaging command:
/p:BuiltOnCI=true
related CI scripts:
BuiltOnCI var:
All NuGet packages published from this repository are strong-name signed so they can be referenced by strong-named consumer applications.
Local developer builds use the PublicSign pattern with the committed 51Degrees.publickey (no secrets required). Production builds run in CI and use the matching private key from a GitHub organization secret to produce a real cryptographic signature.
See the Strong naming section in the pipeline-dotnet README for the full mechanics — the same setup is applied across every 51Degrees .NET shipping repo so the dependency chain remains consistent under strong-name identity checks.
Examples can be found in device-detection-dotnet-examples repository.
Tests can be found in the Tests/ folder. These can all be run from within
Visual Studio or by using the dotnet test command line tool.
Some tests require additional resources to run. These will either fail or return an 'inconclusive' result if these resources are not provided.
_51DEGREES_RESOURCE_KEY environment variable should be populated
with a key that includes all properties. The legacy SUPER_RESOURCE_KEY
environment variable is still supported and is checked second. A
license is required in order to access
some properties.For complete documentation on the Pipeline API and associated engines, see the 51Degrees documentation site.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 was computed. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 was computed. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 was computed. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 netcoreapp2.0 was computed. netcoreapp2.1 netcoreapp2.1 was computed. netcoreapp2.2 netcoreapp2.2 was computed. netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 netstandard2.0 is compatible. netstandard2.1 netstandard2.1 was computed. |
| .NET Framework | net461 net461 was computed. net462 net462 was computed. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 net481 was computed. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen40 tizen40 was computed. tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
Showing the top 2 NuGet packages that depend on FiftyOne.DeviceDetection.Hash.Engine.OnPremise:
| Package | Downloads |
|---|---|
|
FiftyOne.DeviceDetection
51Degrees Device Detection parses HTTP headers to return detailed hardware, operating system, browser, and crawler information for the devices used to access your website or service. This is an alternative to popular UAParser, DeviceAtlas, and WURFL packages. |
|
|
FiftyOne.DeviceDetection.PropertyKeyed
51Degrees Device Detection engines that use property-keyed lookups (TAC, NativeModel) against on-premise hash data files. |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.5.110 | 5 | 6/17/2026 |
| 4.5.109 | 255 | 6/16/2026 |
| 4.5.108 | 617 | 6/11/2026 |
| 4.5.107 | 397 | 6/9/2026 |
| 4.5.106 | 594 | 6/3/2026 |
| 4.5.105 | 297 | 6/3/2026 |
| 4.5.104 | 424 | 6/2/2026 |
| 4.5.103 | 450 | 6/1/2026 |
| 4.5.102 | 271 | 5/31/2026 |
| 4.5.101 | 267 | 5/31/2026 |
| 4.5.100 | 285 | 5/30/2026 |
| 4.5.99 | 283 | 5/29/2026 |
| 4.5.98 | 387 | 5/28/2026 |
| 4.5.97 | 538 | 5/27/2026 |
| 4.5.96 | 903 | 5/19/2026 |
| 4.5.95 | 807 | 5/15/2026 |
| 4.5.94 | 377 | 5/13/2026 |
| 4.5.93 | 378 | 5/12/2026 |
| 4.5.92 | 214 | 5/12/2026 |
| 4.5.91 | 439 | 5/10/2026 |