Publish your public-facing Fern C#/.NET SDK to the NuGet registry. After following the steps on this page, you’ll have a versioned package published on NuGet.

This page assumes that you have:
fern folder, a GitHub repository for your C#/.NET SDK, and a C#/.NET generator group in generators.yml. See Generating an SDK (C#/.NET).You’ll need to update your generators.yml file to configure the package name, output location, and client name for NuGet publishing. Your generators.yml should live in your source repository (or on your local machine), not the repository that contains your C#/.NET SDK code.
Configure output location
In the group for your C#/.NET SDK, change the output location from local-file-system (the default) to nuget to indicate that Fern should publish your package directly to the npm registry:
Click on your profile picture.
Select API Keys, then Create.
Name your key.
Select Push > Push new packages and package versions as the Select Scopes type.
Enter * under Select Packages > Glob Patten.
If you are overriding an existing package, you can select the relevant
package instead of entering *.
Click Create.

Add the path to the GitHub repository containing your C#/.NET SDK:
Add api-key: ${NUGET_API_KEY} to generators.yml to tell Fern to use the NUGET_API_KEY environment variable for authentication when publishing to the NuGet registry.
Optionally set the mode to control how Fern handles SDK publishing:
mode: release (default): Fern generates code, commits to the default branch (or the branch you specify), and tags a release automaticallymode: pull-request (recommended): Fern generates code and creates a PR for you to review before releasemode: push: Fern generates code and pushes to a branch you specify for you to review before releaseYou can also configure other settings, like the reviewers or license. Refer to the full github (generators.yml) reference for more information.
Decide how you want to publish your SDK to NuGet. You can use GitHub workflows for automated releases or publish directly via the CLI.
Set up a release workflow via GitHub Actions so you can trigger new SDK releases directly from your source repository.
Open your source repository in GitHub. Click on the Settings tab. Then, under the Security section, open Secrets and variables > Actions.
You can also use the url https://github.com/<your-repo>/settings/secrets/actions.
NUGET_API_KEY.
FERN_TOKEN.fern token. By default, the fern_token is generated for the
organization listed in fern.config.json.Set up a CI workflow that you can manually trigger from the GitHub UI. In your repository, navigate to Actions. Select New workflow, then Set up workflow yourself. Add a workflow that’s similar to this:
You can alternatively configure your workflow to execute on: [push]. See Vapi’s npm publishing GitHub Action for an example.
Navigate to the Actions tab, select the workflow you just created, specify a version number, and click Run workflow. This regenerates your SDK.

The rest of the release process depends on your chosen mode:
Release mode (default): If you didn’t specify a mode or set mode: release, no further action is required. Fern automatically tags the new release with your specified version number and initiates the publishing workflow in your SDK repository.
Pull request or push mode: If you set mode: pull-request or mode: push, Fern creates a pull request or pushes to a branch respectively. Review and merge the PR (pull-request) or branch (push), then tag a new release to initiate the publishing workflow in your SDK repository.
Once the workflow completes, you can view your new release by logging into NuGet and navigating to Manage Packages.
Regenerate your SDK, specifying the version:
The rest of the release process depends on your chosen mode:
Release mode (default): If you didn’t specify a mode or set mode: release, no further action is required. Fern automatically tags the new release with your specified version number and initiates the publishing workflow in your SDK repository.
Pull request or push mode: If you set mode: pull-request or mode: push, Fern creates a pull request or pushes to a branch respectively. Review and merge the PR (pull-request) or branch (push), then tag a new release to initiate the publishing workflow in your SDK repository.
Once the workflow completes, you can view your new release by logging into NuGet and navigating to Manage Packages.