C# (NuGet)
The C# target is experimental.
The C# target publishes to NuGet. The package id is the target's packageName reduced to a PascalCase .NET identifier: acme-api and Acme.Api both publish as AcmeApi. See the C# configuration for options.
Authenticate the release with OIDC trusted publishing (recommended) or a NuGet API key.
Enable publishing
{
"targets": {
"csharp": {
"packageName": "AcmeApi",
"publish": { "nuget": true }
}
}
}
Trusted publishing (OIDC)
Recommended. The release workflow uses the NuGet/login action to exchange the workflow's identity token for a short-lived API key, so no long-lived key is stored. NuGet's OIDC login still needs your profile name as one secret.
Add a trusted publishing policy on NuGet
On nuget.org, open your username → Trusted Publishing and add a policy for:
- Package owner: you, or an organization you are an active member of
- Repository owner and name: your linked repository
- Workflow file:
release-please.yml - Environment:
publish.nuget.releaseEnvironment, or blank when none is set
The policy's scopes and package glob decide whether it may publish a package that does not exist yet: select the scope that allows publishing new packages, and a glob the package id matches, or the first release is rejected.
The automated publish runs as the publish job inside release-please.yml, so that is the workflow NuGet sees. If you also dispatch sdk-release.yml to re-publish a tag by hand, add it as a second policy.
A new policy is sometimes only provisionally active for 7 days (nuget.org says this usually happens for a private repository); the first successful publish inside that window makes it permanent. You can restart the window at any time, including after it lapses.
Add your NuGet username as a secret
Add a repository secret named NUGET_USER set to your nuget.org profile name (not your email). See Adding repository secrets. This is the only secret OIDC needs; the API key itself is issued at publish time.
Keep the default config
{ "targets": { "csharp": { "publish": { "nuget": true } } } }
Publishing with a NuGet API key
Create a NuGet API key
On nuget.org, go to API Keys → Create, give it the scope to push new packages and package versions with a glob that matches your package id, and copy the key.
Add it to the repository
Add the key as a repository secret named NUGET_API_KEY. See Adding repository secrets. When publish.nuget.releaseEnvironment is set, an environment secret of the same name overrides the repository one.
Switch the target to token auth
{
"targets": {
"csharp": {
"publish": { "nuget": { "authMethod": "access-token" } }
}
}
}
Notes
- The workflow pushes with
--skip-duplicate, so re-publishing an existing version is a no-op.