PermitCore.Client 1.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package PermitCore.Client --version 1.0.0
                    
NuGet\Install-Package PermitCore.Client -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PermitCore.Client" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PermitCore.Client" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="PermitCore.Client" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PermitCore.Client --version 1.0.0
                    
#r "nuget: PermitCore.Client, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PermitCore.Client@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PermitCore.Client&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=PermitCore.Client&version=1.0.0
                    
Install as a Cake Tool

PermitCore.Client — Official .NET SDK

NuGet

Official .NET client for PermitCore license management.

Installation

dotnet add package PermitCore.Client

Quick Start

using PermitCore;

var client = new PermitCoreClient("https://your-permitcore-instance.com");

// On every app launch — check if license is valid
var result = await client.ValidateAsync("PERMIT-XXXX-XXXX-XXXX-XXXX");

if (!result.IsValid)
{
    Console.WriteLine($"Invalid: {result.Message}");
    return;
}

Console.WriteLine($"Valid! Product: {result.ProductName}");

// Check feature flags
if (result.HasFeature("export"))
    EnableExportFeature();

if (result.IsTrial)
    Console.WriteLine($"Trial — {result.TrialDaysRemaining} days remaining");

// Warn if vendor's subscription is expiring
if (result.VendorWarning is not null)
    ShowWarningDialog(result.VendorWarning);

Activation (first install)

// Call once when the customer first installs on a new device
// Auto-generates hardware fingerprint (HWID)
var result = await client.ActivateAsync("PERMIT-XXXX-XXXX-XXXX-XXXX");

// Or supply your own device identifier
var result = await client.ActivateAsync(
    licenseKey:  "PERMIT-XXXX-XXXX-XXXX-XXXX",
    deviceId:    PermitCoreClient.GetHardwareId(),
    deviceName:  Environment.MachineName);

Offline Mode

When the server is unreachable, the SDK automatically serves the last valid response from a local cache for offlineGraceDays days (configured per-license in PermitCore).

var result = await client.ValidateAsync("PERMIT-XXXX-XXXX-XXXX-XXXX");

if (result.IsOffline)
    ShowStatusBar("Running in offline mode");

The cache is stored in %LOCALAPPDATA%/.permitcore_cache_{hash}.

Floating / Concurrent Licenses

// Check out a seat at app startup
var session = await client.CheckoutAsync("PERMIT-XXXX-XXXX-XXXX-XXXX");

if (!session.Success)
{
    Console.WriteLine($"No seats available: {session.Message}");
    return;
}

// Keep alive every 4 minutes (expires after 15 min without heartbeat)
using var timer = new Timer(async _ =>
    await client.HeartbeatAsync(session.SessionToken!),
    null, TimeSpan.FromMinutes(4), TimeSpan.FromMinutes(4));

// Release seat on exit
AppDomain.CurrentDomain.ProcessExit += async (_, _) =>
    await client.CheckinAsync(session.SessionToken!);

Hardware ID

// Get the stable hardware fingerprint for this machine
string hwid = PermitCoreClient.GetHardwareId();

Configuration

var client = new PermitCoreClient(new PermitCoreOptions
{
    BaseUrl            = "https://your-permitcore-instance.com",
    EnableOfflineCache = true,  // default: true
});

Supported Targets

  • .NET 6, 7, 8, 9
  • .NET Standard 2.0

License

MIT

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  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 is compatible.  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 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

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
1.1.0 73 9/17/2026
1.0.0 202 8/30/2026