# C# SDK

> This guide provides step-by-step instructions for installing and setting up the Pixyz C# SDK, including prerequisites, NuGet package installation, licensing, and running your first script.

## Prerequisites

* Compatible [system](./system)
* [Visual Studio](https://visualstudio.microsoft.com/)
* [.NET SDK](https://dotnet.microsoft.com/en-us/download)
* A valid Pixyz SDK license on your Pixyz [license portal](https://www.pixyz-software.com/my-account/license-management)

## Setup

### About the packaging

The pixyz engine is delivered as a set of NuGet packages. The packages are available on the Pixyz NuGet server in this format: `version-<OS>`. For example:

* windows: 2024.2.2.3-win64
* linux: 2024.2.2.3-linux

We apologize but some nuget limitation avoid a single package for all platforms.

### Standard install (recommended)

1. Open a .NET project
2. Go to `Tools/NuGet Package Manager/Package Manager Settings/Package Sources`
3. Add a new source
4. Set source URL to: `https://unity3ddist.jfrog.io/artifactory/api/nuget/v3/pixyz-nuget-prod-local/index.json`
5. Open `NuGet Package Manager` window and look for Pixyz NuGet packages:
   * be sure to set Package source to `All`
   * select "Include prerelease" if you want to see all available packages (`-win64`, `-linux64`)
6. [Setup your license](./license/licensingintro)
7. [Run your first script](#run-your-first-script)

### Local install

1. Download desired package from [archive](https://unity3ddist.jfrog.io/ui/repos/tree/General/pixyz-nuget-prod-local)
2. Open a .NET project
3. Setup a local NuGet package for Pixyz SDK `Tools/Options`:
4. Install the local package: `Tools/NuGet Package Manager/Manage NuGet Packages for Solutions`
   * Click on `Browse`
   * Change package source to `Local`
   * Install to your C# project
5. [Setup your license](./license/licensingintro)
6. [Run your first script](#run-your-first-script)

### .NET 8

Some .NET version discrepencies may occur. `.NET 8` included a change in how platform-specific packages are loaded. To safely use .NET 8 and depending on your Pixyz release version, you might need a custom configuration to use the Windows package:

1. Open your project file (.csproj) (right click on project → Edit Project File)
2. Add the following [configuration](https://learn.microsoft.com/en-us/dotnet/core/tools/sdk-errors/netsdk1206) under your ItemGroup XML tag: `<RuntimeHostConfigurationOption Include="System.Runtime.Loader.UseRidGraph" Value="true"/>`

![image](/api/media?file=/asset-transformer-sdk/media/images/101/net8.png)

## Run your first script

```csharp title="Csharp"
using UnityEngine.Pixyz.API;

// init Pixyz
PiXYZAPI api = PiXYZAPI.Initialize();

// print Pixyz version
Console.WriteLine(api.Core.GetVersion());

// if no license is found, try to configure a license server
if (!api.Core.CheckLicense())
{
    api.Core.ConfigureLicenseServer("company-server-hostname", 27000, true);
}

// use api.IO.ImportScene to import a file and enjoy :)
```
