diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml
new file mode 100644
index 0000000..e6e6bb1
--- /dev/null
+++ b/.github/workflows/publish.yaml
@@ -0,0 +1,56 @@
+name: Publish NuGet Package
+
+on:
+ release:
+ types: [published]
+
+jobs:
+ github:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: '8.0.x'
+
+ - name: Restore dependencies
+ run: dotnet restore
+
+ - name: Build
+ run: dotnet build --configuration Release --no-restore
+
+ - name: Pack
+ run: dotnet pack --configuration Release --no-build --output nupkgs
+
+ - name: Push to GitHub Packages
+ run: |
+ for f in ./nupkgs/*.nupkg
+ do
+ dotnet nuget push $f --source https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json --api-key ${{ secrets.GITHUB_TOKEN }}
+ done
+
+ nuget-org:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: '8.0.x'
+
+ - name: Restore dependencies
+ run: dotnet restore
+
+ - name: Build
+ run: dotnet build --configuration Release --no-restore
+
+ - name: Pack
+ run: dotnet pack --configuration Release --no-build --output nupkgs
+
+ - name: Push to NuGet.org
+ run: dotnet nuget push ./nupkgs/*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_ORG_API_KEY }} --skip-duplicate
diff --git a/src/AEMO.MDFF/AEMO.MDFF.csproj b/src/AEMO.MDFF/AEMO.MDFF.csproj
index 901be0d..bd35f5d 100644
--- a/src/AEMO.MDFF/AEMO.MDFF.csproj
+++ b/src/AEMO.MDFF/AEMO.MDFF.csproj
@@ -4,6 +4,20 @@