ThunderPipe.Sdk 1.0.4

<Sdk Name="ThunderPipe.Sdk" Version="1.0.4" />
                    
For projects that support Sdk, copy this XML node into the project file to reference the package.
#:sdk ThunderPipe.Sdk@1.0.4
                    
#:sdk 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.

<p align="center"> <img src="https://raw.githubusercontent.com/WarperSan/ThunderPipe/refs/heads/master/icon.png" alt="Logo" height="128"/> </p>

ThunderPipe.Sdk

NuGet Badge NuGet Downloads License

Overview

ThunderPipe.Sdk is the MSBuild integration of ThunderPipe.Core.

Installation

Go to NuGet, and copy the Sdk XML node for the latest version into your project:

<Sdk Name="ThunderPipe.Sdk" Version="version.number.here" />

Tasks

ThunderPipePack

Packs your files into a valid Thunderstore .zip package.

Use pre-existing ThunderPipePack Target that executes after Build:

<PropertyGroup>
  <RunThunderPipePackAfterBuild>true</RunThunderPipePackAfterBuild>
</PropertyGroup>

Or use the ThunderPipePack Task in your own Target:

<ThunderPipePack
  Token="$(ThunderstoreToken)"
  Team="$(ThunderstoreTeam)"
  Name="$(ThunderstoreName)"
  Version="$(ThunderstoreVersion)"
  Description="$(ThunderstoreDescription)"
  Website="$(ThunderstoreWebsite)"
  Dependencies="@(ThunderstoreDependency)"
  PackageFiles="@(ThunderstorePackageFile)"
  Files="@(ThunderstoreFile)"
  Host="$(ThunderstoreHost)"
  OutputDir="$(ThunderPipeOutputDir)"
  OutputFile="$(ThunderPipeOutputFile)"
>
  <Output TaskParameter="OutputDir" PropertyName="ThunderPipeOutputDir" />
  <Output TaskParameter="OutputFile" PropertyName="ThunderPipeOutputFile" />
</ThunderPipePack>
Argument Description
Token API token of the service account to use
Team Name of the team that owns the service account
Name Name of the package
Version Version of the package
Description Description of the package
Website The website for the package project
Dependencies A list of Thunderstore dependencies
PackageFiles Metadata files for the package
Files Files to include in the package
Host Thunderstore repository URL (optional) for package validation if Token is set
OutputDir Where the package will be built
OutputFile The full path for the package (overrides OutputDir if set)

ThunderPipePublish

Uploads your .zip file directly to Thunderstore.

Use pre-existing ThunderPipePublish Target that executes after Build:

<PropertyGroup>
  <RunThunderPipePublishAfterBuild>true</RunThunderPipePublishAfterBuild>
</PropertyGroup>

Or use the ThunderPipePublish Task in your own Target:

<ThunderPipePublish
  Token="$(ThunderstoreToken)"
  File="$(ThunderPipeOutputFile)"
  Team="$(ThunderstoreTeam)"
  Communities="$(ThunderstoreCommunities)"
  Categories="$(ThunderstoreCategories)"
  CommunityCategories="$(ThunderstoreCommunityCategories)"
  Host="$(ThunderstoreHost)"
  HasNSFW="$(ThunderstoreNSFW)"
>
  <Output TaskParameter="Output" PropertyName="ThunderPipePublishDownloadUrl" />
</ThunderPipePublish>
Argument Description
Token API token of the service account to use
File Path to your .zip package
Team Name of the team that owns the service account
Communities A list of community slugs to upload to
Categories A list of categories that apply to all communities to upload to
CommunityCategories A list of communities and their individual categories
Host Thunderstore repository URL to upload the package to (optional)
HasNSFW Whether or not the package should be marked as NSFW

Default Values

The SDK generates several Thunderstore properties that can be use in tasks.

Here is a list of each property, with their defaults in order:

  • $(ThunderstoreName)
    • $(Product)
    • $(AssemblyName)
    • $(RootNamespace)
  • $(ThunderstoreVersion)
    • $(Version)
  • $(ThunderstoreDescription)
    • $(Description)
  • $(ThunderstoreTeam)
    • $(Authors)
  • $(ThunderstoreWebsite)
    • $(RepositoryUrl)
    • $(PackageProjectUrl)
  • $(ThunderstoreNSFW)
    • false
  • $(ThunderstoreHost)
    • https://thunderstore.io/
  • $(ThunderPipeOutputDir)
    • if $(ArtifactsPath) exists: $(ArtifactsPath)/thunderstore/$(ArtifactsPivots)
    • $(TargetDir)thunderstore/

You can see more here.

Examples


<PropertyGroup>
  <ThunderstoreTeam>TS_Team</ThunderstoreTeam>
  <ThunderstoreName>Some_Plugin</ThunderstoreName>
  <Version>0.1.0</Version>
  <Description>Short description.</Description>
  <RepositoryUrl>https://example.com/</RepositoryUrl>

  
  <ThunderstoreCommunities>lethal-company;repo;peak</ThunderstoreCommunities>

  
  <ThunderstoreCategories>mods;libraries</ThunderstoreCategories>

  
  <ThunderstoreCommunityCategories>
    repo=client-side/server-side;
    lethal-company=bepinex;
    yapyap=all-clients
  </ThunderstoreCommunityCategories>

  
  <RunThunderPipePackAfterBuild>true</RunThunderPipePackAfterBuild>

  
  <RunThunderPipePublishAfterBuild
    Condition="'$(PublishTS)' == 'true'"
  >true</RunThunderPipePublishAfterBuild
  >

  
</PropertyGroup>


<ItemGroup>
  
  <ThunderstoreFile Include="$(TargetPath)" Destination="plugins/" />
  <ThunderstorePackageFile Include="./README.md" />
  <ThunderstorePackageFile Include="./CHANGELOG.md" />
  <ThunderstorePackageFile Include="./icon.png" />
  <ThunderstorePackageFile Include="./LICENSE" />
</ItemGroup>


<ItemGroup>
  <ThunderstoreDependency Include="BepInEx-BepInExPack" Version="5.4.2305" />
</ItemGroup>
Product Compatible and additional computed target framework versions.
.NET 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.

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.0.4 49 6/8/2026
0.1.3 267 4/15/2026
0.1.2 102 4/13/2026
0.1.1 113 4/2/2026
0.1.0 107 4/2/2026