diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index de134dc..a8cbf0e 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -44,15 +44,15 @@ jobs:
- name: Pack
run: |
dotnet pack -c release /p:ContinuousIntegrationBuild=true
- cp -r ForceOps/nupkg ForceOps/nupkg_pack
- cp -r ForceOps.Lib/nupkg ForceOps.Lib/nupkg_pack
- dotnet clean
+ dotnet pack ForceOps -c release -r win-x64 /p:ContinuousIntegrationBuild=true
+ dotnet pack ForceOps -c release -r any -p:PublishAot=false /p:ContinuousIntegrationBuild=true
- - name: Build (AOT)
+ # The .sha256 sidecar is used by the scoop bucket's autoupdate
+ # (https://github.com/domsleee/scoop-bucket).
+ - name: Create sha256 for release exe
run: |
- dotnet publish -c release /p:UseAot=1 /p:ContinuousIntegrationBuild=true
- cp -r ForceOps/bin ForceOps/bin_aot
- dotnet clean
+ $exe = "ForceOps/bin/release/net10.0/win-x64/publish/ForceOps.exe"
+ (Get-FileHash $exe -Algorithm SHA256).Hash.ToLower() | Set-Content -NoNewline "$exe.sha256"
- name: Create release
if: ${{ github.ref == 'refs/heads/main' && startsWith(github.event.head_commit.message, 'chore(release)') }}
@@ -60,10 +60,15 @@ jobs:
with:
draft: true
name: "${{ steps.get_version.outputs.version }}"
- files: ForceOps/bin_aot/Release/net10.0/win-x64/publish/ForceOps.exe
+ files: |
+ ForceOps/bin/release/net10.0/win-x64/publish/ForceOps.exe
+ ForceOps/bin/release/net10.0/win-x64/publish/ForceOps.exe.sha256
tag_name: "${{ steps.get_version.outputs.version }}"
+ # RID-specific packages must be on the feed before the top-level pointer
+ # package, so the pointer package is pushed in a second step.
- name: Publish NuGet
if: ${{ github.ref == 'refs/heads/main' && startsWith(github.event.head_commit.message, 'chore(release)') }}
run: |
- dotnet nuget push -k ${{ secrets.NUGET_AUTH_TOKEN }} -s https://api.nuget.org/v3/index.json ForceOps/nupkg_pack/ForceOps.${{ steps.get_version.outputs.version }}.nupkg ForceOps.Lib/nupkg_pack/ForceOps.Lib.${{ steps.get_version.outputs.version }}.nupkg ForceOps.Lib/nupkg_pack/ForceOps.Lib.${{ steps.get_version.outputs.version }}.snupkg --skip-duplicate
+ dotnet nuget push -k ${{ secrets.NUGET_AUTH_TOKEN }} -s https://api.nuget.org/v3/index.json ForceOps/nupkg/ForceOps.win-x64.${{ steps.get_version.outputs.version }}.nupkg ForceOps/nupkg/ForceOps.any.${{ steps.get_version.outputs.version }}.nupkg ForceOps.Lib/nupkg/ForceOps.Lib.${{ steps.get_version.outputs.version }}.nupkg ForceOps.Lib/nupkg/ForceOps.Lib.${{ steps.get_version.outputs.version }}.snupkg --skip-duplicate
+ dotnet nuget push -k ${{ secrets.NUGET_AUTH_TOKEN }} -s https://api.nuget.org/v3/index.json ForceOps/nupkg/ForceOps.${{ steps.get_version.outputs.version }}.nupkg --skip-duplicate
diff --git a/ForceOps.Benchmarks/src/FileAndDirectoryDeleterBenchmark.cs b/ForceOps.Benchmarks/src/FileAndDirectoryDeleterBenchmark.cs
index 32c8538..33d2462 100644
--- a/ForceOps.Benchmarks/src/FileAndDirectoryDeleterBenchmark.cs
+++ b/ForceOps.Benchmarks/src/FileAndDirectoryDeleterBenchmark.cs
@@ -3,7 +3,7 @@
namespace ForceOps.Benchmarks;
-// [SimpleJob(RuntimeMoniker.NativeAot80)]
+// [SimpleJob(RuntimeMoniker.NativeAot10_0)]
[SimpleJob]
public class FileAndDirectoryDeleterBenchmark
{
diff --git a/ForceOps/ForceOps.csproj b/ForceOps/ForceOps.csproj
index 7eced39..e54f313 100644
--- a/ForceOps/ForceOps.csproj
+++ b/ForceOps/ForceOps.csproj
@@ -9,14 +9,13 @@
./nupkg
-
+
true
forceops
-
-
+
true
- win-x64
+ win-x64;any
diff --git a/README.md b/README.md
index e8c8cb9..3a62ae3 100644
--- a/README.md
+++ b/README.md
@@ -12,15 +12,16 @@ Uses [LockChecker](https://github.com/domsleee/LockCheck) to find processes lock
## Installation
### Install with [`scoop`](http://scoop.sh/) (recommended)
-It has a faster startup because it uses [Native AOT](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/):
+Installs the [Native AOT](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/) build and doesn't require the .NET SDK:
```shell
-scoop install https://gist.github.com/domsleee/f765105f512ec607ee0a6e3ee5debd6d/raw/forceops.json
+scoop bucket add domsleee https://github.com/domsleee/scoop-bucket
+scoop install forceops
```
To update:
```shell
-scoop update forceops --force
+scoop update forceops
```
### Alternative - install with [`dotnet`](https://dotnet.microsoft.com/en-us/download)
@@ -29,6 +30,8 @@ scoop update forceops --force
dotnet tool install -g forceops
```
+On x64 Windows this installs the same Native AOT build as the scoop install. Other architectures get a framework-dependent build. Requires the .NET 10 SDK or later to install.
+
To update:
```shell
dotnet tool update -g forceops