This repository contains Security Center SDK samples for entity management, reports, events, media, plugin roles, and client extensions. It also includes Genetec™ Web Player hosting samples.
Security Center combines access control, video surveillance, automatic license plate recognition, communications, and analytics. Use its SDKs to build standalone integrations, server-side roles, and extensions for Security Desk and Config Tool.
Choose the SDK and runtime for your integration before selecting a sample. The SDK runtime requirements below differ from the targets configured in this repository's projects.
| SDK | .NET Framework | .NET 8 | .NET 10 |
|---|---|---|---|
| Platform SDK, standalone applications | Supported; SDK assemblies target .NET Framework 4.8 | Supported from Security Center SDK 5.12.2; reference net8.0-windows SDK assemblies |
Use Security Center SDK 5.14.1 or later for net10.0-windows SDK assemblies. A .NET 10 application can also reference compatible .NET 8 SDK assemblies from SDK 5.12.2 or later. |
| Media SDK | Supported; the samples target .NET Framework 4.8.1 | Not supported | Not supported |
| Workspace SDK | Required for modules loaded by Security Desk or Config Tool | Not supported for client modules | Not supported for client modules |
| Plugin SDK, server modules | Supported | Requires Security Center 5.13 or later on the role server and compatible modern SDK assemblies | Requires Security Center 5.14.1 or later on the role server and compatible modern SDK assemblies |
A plugin's ClientModule uses the Workspace SDK and must target .NET Framework, even when its ServerModule targets .NET 8 or .NET 10. On Security Center 5.13, a modern server module also requires a .NET Framework Client discovery assembly on the server. See Building modern .NET plugins for deployment guidance.
SDK assembly compatibility and the runtime installed on the role server are separate requirements. A .NET 8 application cannot reference SDK assemblies built for .NET 10. A .NET 10 application can reference compatible SDK assemblies built for .NET 8 or .NET 10. For application and server version compatibility, see About SDK compatibility.
Prepare a development environment before building the samples.
Visit Genetec DAP and join the program. Membership provides access to the SDK documentation, installer, and a development license for Security Center.
-
Install Security Center: Ensure you have Security Center installed. You can download the installer from the Genetec Portal.
-
Activate Development License: Activate the Security Center license provided by the DAP. This license allows your integration to connect to Security Center.
-
Install Security Center SDK: The SDK contains the necessary libraries to build and run custom integrations. Download and install the Security Center SDK from the Genetec Portal.
The SDK installer automatically:
- Creates environment variables (
GSC_SDKfor .NET Framework,GSC_SDK_COREfor modern .NET) - Writes the installation path in the Windows registry
- Copies the Security Center SDK assemblies to the SDK directories
See Referencing Security Center SDK assemblies for assembly references, runtime resolution, and dependency deployment.
- Creates environment variables (
Install the build tools for the framework you select:
-
Visual Studio: Use Visual Studio 2022 version 17.8 or later for the existing samples, including .NET Framework projects, because they compile with C# 12. Use Visual Studio 2026 or later for a project targeting .NET 10.
-
.NET Framework targeting pack: Install the .NET Framework 4.8.1 targeting pack for sample projects targeting
net481. -
.NET 8: Platform SDK samples require Security Center SDK 5.12.2 or later with
net8.0-windowsassemblies. SetGSC_SDK_COREto that folder. Plugin SDK server modules require Security Center 5.13 or later, but the Plugin samples here target .NET Framework. Genetec Web Player samples target .NET 8 and do not use the .NET Security Center SDK. -
.NET SDK: For command-line builds, install the .NET 8 SDK or a later SDK that supports the sample's target, including when building
net481. A project targeting .NET 10 requires the .NET 10 SDK or a later compatible SDK. Rundotnet --list-sdksto check installed SDKs. Installing a newer SDK does not change the target selected by the project configuration. -
Build and run the samples: Open the sample projects in Visual Studio, build them, and run them.
Each sample demonstrates an SDK capability, such as video management, access control, or system events.
The samples are grouped by SDK: Platform, Media, Workspace, and Plugin. The Media, Workspace, and Plugin SDKs build on the Platform SDK. Genetec Web Player samples form a separate group:
The Platform SDK samples demonstrate entity management, event monitoring, and reporting. These capabilities provide a foundation for Media SDK, Workspace SDK, and Plugin SDK integrations.
Key capabilities demonstrated:
-
Logging on and loading entities using the
SampleBaseclass -
Entity creation, modification, and deletion
-
Report queries
-
Event monitoring and alarm processing
-
Custom fields
-
Transaction management
Start here for: Basic SDK concepts, entity operations, reporting, and core Security Center functionality.
See the Platform SDK README for prerequisites, dependencies, and build commands.
Video and audio processing samples extend the Platform SDK with specialized media functionality. These samples demonstrate streaming, playback, PTZ control, and media management capabilities.
Key capabilities demonstrated:
-
Video streaming and playback operations
-
PTZ camera coordination and control
-
Video export and format conversion
-
Audio transmission and processing
-
Overlay graphics and visual enhancements
Dependencies: Built on Platform SDK foundations for entity management and SDK connection patterns.
See the Media SDK README.
These client-side user interface extensions use Platform SDK entities and services to add components to Security Desk and Config Tool. These modules must target .NET Framework because they run inside the client applications.
Key capabilities demonstrated:
-
Custom Security Desk tasks and pages
-
Dashboard widgets and tile components
-
Config Tool configuration pages
-
Options extensions and UI integrations
Dependencies: Uses Platform SDK for entity access, authentication, and core SDK functionality within the client applications.
See the Workspace SDK README.
Server-side plugin development samples build upon Platform SDK infrastructure to create custom roles with database support, failover capabilities, and system integration.
Key capabilities demonstrated:
-
Server-side processing and custom role creation
-
Database integration with upgrade and cleanup support
-
Background services and business logic implementation
-
Custom report generation and data management
Dependencies: Uses Platform SDK patterns for entity management, queries, and core SDK functionality while adding server-side role capabilities.
See the Plugin SDK README.
Hosting samples for the Genetec Web Player (GWP), the JavaScript video player that ships with the Media Gateway. Unlike the SDK samples, these projects do not connect through the .NET Security Center SDK; they demonstrate three different application shells that load gwp.js from a Media Gateway and supply it with opaque camera tokens.
Hosting models demonstrated:
- Windows Presentation Foundation (WPF) desktop application that hosts GWP in an embedded
WebView2control, with token retrieval performed natively in .NET - ASP.NET Core Minimal API application that serves a static page and proxies token requests through a server-side endpoint
- ASP.NET Core Razor Pages application that adds CSP nonce support and server-rendered configuration on top of the Minimal API pattern
GWP samples require a reachable Media Gateway, a trusted or development Media Gateway certificate, and CORS configuration that allows the hosting page's origin. See each sample's README for details.
The sample projects in this repository are structured as follows:
- Target Frameworks: Platform SDK samples build .NET Framework 4.8.1 by default, .NET 8 through the
_NET8configurations, and .NET 10 through the_NET10configurations. Media SDK, Workspace SDK, and Plugin SDK samples target .NET Framework 4.8.1. Genetec Web Player samples target .NET 8.
The sample projects typically produce these output types:
- Executable files with the EXE extension for standalone applications
- Class libraries with the DLL extension for Workspace modules and plugins
SDK reference paths depend on the target:
- For .NET Framework 4.8.1: the Security Center SDK projects reference assemblies from the
$(GSC_SDK)directory. - For Platform SDK .NET 8 builds: the projects reference Security Center assemblies from the
$(GSC_SDK_CORE)directory. - Genetec Web Player samples do not reference the .NET Security Center SDK.
Projects can include certificate-copy steps and shared source files:
- Some projects include a post-build step to copy certificate files to the output directory.
- Projects may share common code through the use of shared project items.
The samples do not all use the same framework-targeting model. Use the configurations already defined in the solution and project files.
Platform SDK sample projects select .NET Framework 4.8.1, .NET 8, or .NET 10 through explicit build configurations:
<TargetFramework>net481</TargetFramework>
<TargetFramework Condition="'$(Configuration)' == 'Debug_NET8' OR '$(Configuration)' == 'Release_NET8'">net8.0-windows</TargetFramework>
<TargetFramework Condition="'$(Configuration)' == 'Debug_NET10' OR '$(Configuration)' == 'Release_NET10'">net10.0-windows</TargetFramework>
<Configurations>Debug;Release;Debug_NET8;Release_NET8;Debug_NET10;Release_NET10</Configurations>Use Debug or Release for net481, Debug_NET8 or Release_NET8 for net8.0-windows, and Debug_NET10 or Release_NET10 for net10.0-windows.
dotnet build "Samples/Platform SDK/CardholderSample/CardholderSample.csproj" -c Debug
dotnet build "Samples/Platform SDK/CardholderSample/CardholderSample.csproj" -c Debug_NET8These examples are scoped to a Platform SDK project so they do not run Workspace SDK or Plugin SDK post-build registration steps. For solution-wide builds, run from an elevated terminal or elevated Visual Studio instance because some Workspace SDK and Plugin SDK samples write development registration entries under HKEY_LOCAL_MACHINE.
Run these commands from the repository root. For example, to select the installed SDK 5.13 .NET 8 assemblies for the current terminal:
$env:GSC_SDK_CORE = 'C:\Program Files (x86)\Genetec Security Center 5.13 SDK\net8.0-windows'
dotnet build "Samples/Platform SDK/CardholderSample/CardholderSample.csproj" -c Debug_NET8Replace the installation path with your SDK's net8.0-windows folder. The _NET8 configurations require Security Center SDK 5.12.2 or later with assemblies targeting .NET 8. Another SDK installation can change GSC_SDK_CORE to a net10.0-windows folder, which cannot be used by these .NET 8 configurations.
Select the installed .NET 10 SDK assemblies before building an _NET10 configuration:
$env:GSC_SDK_CORE = 'C:\Program Files (x86)\Genetec Security Center 5.14 SDK\net10.0-windows'
dotnet build "Samples/Platform SDK/CardholderSample/CardholderSample.csproj" -c Debug_NET10Replace the path with your SDK's net10.0-windows directory. The .NET 10 package profile uses the dependencies supplied with SDK 5.14.1 or later. Select the build configuration for the target instead of overriding the framework with -f while using the default Debug or Release configuration.
The Media SDK, Workspace SDK, and Plugin SDK sample projects in this repository target .NET Framework 4.8.1. The solution maps the _NET8 and _NET10 configurations back to Debug and Release for those projects so that the solution configuration can focus on Platform SDK framework selection. The Genetec Web Player samples target .NET 8 and do not use the .NET Security Center SDK.
This table describes the projects in this repository. SDK runtime support can extend beyond the targets configured in these samples.
| Sample group | Configured targets | Selection |
|---|---|---|
| Platform SDK | net481, net8.0-windows, net10.0-windows |
Debug/Release, Debug_NET8/Release_NET8, or Debug_NET10/Release_NET10 |
| Media SDK | net481 |
Debug or Release |
| Workspace SDK | net481 |
Debug or Release |
| Plugin SDK | net481 |
Debug or Release |
| Genetec Web Player | net8.0 for web projects; net8.0-windows for the desktop project |
Debug or Release |
The Platform SDK samples select one target per build configuration. Install a .NET SDK that supports the selected target.
Open Samples/Genetec.Dap.CodeSamples.sln and select one of the existing solution configurations:
Debug/Release: Platform SDK samples buildnet481.Debug_NET8/Release_NET8: Platform SDK samples buildnet8.0-windows; non-Platform SDK samples continue to build theirDebug/Releaseconfigurations.Debug_NET10/Release_NET10: Platform SDK samples buildnet10.0-windows; non-Platform SDK samples continue to build theirDebug/Releaseconfigurations.
Run Visual Studio as an administrator when building the full solution if you want Workspace SDK and Plugin SDK development registration to succeed.
For a standalone Platform SDK application targeting .NET 10:
-
Install the .NET 10 SDK and, for Visual Studio builds, Visual Studio 2026 or later.
-
Set the application's
TargetFrameworktonet10.0-windows. If its SDK references or packages are conditional onnet8.0-windows, update those conditions to include the new target. -
Set
GSC_SDK_COREto compatible modern SDK assemblies. For SDK 5.14.1 or later with .NET 10 assemblies, select the SDK'snet10.0-windowsfolder. A .NET 10 application can also use compatiblenet8.0-windowsSDK assemblies. -
Update the application's package and framework references for the selected SDK.
-
Set Copy Local to
Falsefor Genetec SDK assemblies. -
Initialize the modern SDK resolver before using SDK types.
-
Include the required non-SDK packages in deployment.
-
From the application project folder, build the target:
dotnet build YOUR-PROJECT.csproj -c Debug -f net10.0-windows
Replace YOUR-PROJECT.csproj with your application's project file. For repository samples, select Debug_NET10 or Release_NET10 to use the configured target and dependency profile. For project changes and Media SDK restrictions, see Migrating a Platform SDK application to modern .NET. For the SDK 5.14 .NET 10 package references and serialization settings, see Starting an ASP.NET Core application.
The .NET SDK supplies the compiler and build tools. The Security Center SDK supplies the Genetec assemblies and installation components. Install both for samples that reference the .NET Security Center SDK. Genetec Web Player samples require the .NET SDK and a reachable Media Gateway and do not reference the .NET Security Center SDK.
| Dependency | Build machine | Machine running the sample |
|---|---|---|
| .NET Framework 4.8.1 | Targeting pack for net481 projects |
.NET Framework 4.8.1 runtime |
| .NET 8 | .NET 8 SDK or a later compatible SDK for .NET 8 projects | .NET 8 Windows Desktop Runtime for standalone Platform samples and the GWP desktop sample; ASP.NET Core 8 runtime for the GWP web samples |
| .NET 10 | .NET 10 SDK or a later compatible SDK for .NET 10 projects | .NET 10 Windows Desktop Runtime for standalone Platform applications using WPF framework references |
| Security Center SDK assemblies | Installed SDK, selected through GSC_SDK or GSC_SDK_CORE |
Installed SDK or compatible Security Center installation; hosted plugins and Workspace modules use their host's assemblies |
| NuGet packages | dotnet build restores the packages declared in each project |
Deploy required non-SDK dependencies with the application or module |
The standalone Platform samples reference Microsoft.WindowsDesktop.App.WPF for .NET 8 and .NET 10, including console projects. Installing only the base .NET runtime does not supply that framework. Check installed runtimes with dotnet --list-runtimes. A .NET 10 SDK can build a .NET 8 project, but running that project still requires the .NET 8 runtime and any shared frameworks it references.
Keep Copy Local set to False for Genetec SDK references. Standalone applications use the shared SDK resolver to load installed SDK assemblies. Deploy non-SDK dependencies with the application rather than relying on the developer's NuGet cache. Hosted plugins and Workspace modules load SDK assemblies supplied by Security Center and require their non-SDK dependencies beside their registered modules. See Shared sample helpers for resolver and dependency placement.
Security Center installs the runtimes required by its hosted processes. For the packages included with Security Center 5.14.1, see Security Center installation prerequisites on Genetec TechDocs.
The Plugin SDK samples in this repository target .NET Framework. For a modern .NET integration, choose the project and deployment instructions for the Security Center version where the role will run.
Build a modern .NET ServerModule for server-side logic and an optional .NET Framework ClientModule for custom UI in Config Tool or Security Desk. Register the ServerModule on the server hosting the role and the ClientModule on workstations that use its UI. Security Center 5.14.0 supports .NET 8 role plugins; .NET 10 role hosting requires 5.14.1 or later.
See Building plugins for Security Center 5.14 and later and Deploying plugins, including the deployment requirement for modules that declare custom privileges.
Include a .NET Framework Client discovery assembly alongside the modern .NET ServerModule on the server. Config Tool requests the plugin list from that server. Keep any ClientModule targeting .NET Framework for its client-side UI.
See Building plugins for Security Center 5.13 for the project structures and registration requirements.
See the Genetec Developer Portal for the Security Center SDK documentation. Create an account to access the documentation.
See LICENSE for permissions and limitations on using these SDK samples.
Contributions such as bug reports, feature requests, and code improvements are welcome. Follow the guidelines in CONTRIBUTING.
For issues or questions about the Security Center SDK or these samples, contact the Genetec support team through the Genetec Technical Assistance Portal.