RaphaelSharp 1.0.8

dotnet add package RaphaelSharp --version 1.0.8
                    
NuGet\Install-Package RaphaelSharp -Version 1.0.8
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RaphaelSharp" Version="1.0.8" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RaphaelSharp" Version="1.0.8" />
                    
Directory.Packages.props
<PackageReference Include="RaphaelSharp" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RaphaelSharp --version 1.0.8
                    
#r "nuget: RaphaelSharp, 1.0.8"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package RaphaelSharp@1.0.8
                    
#:package 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.
#addin nuget:?package=RaphaelSharp&version=1.0.8
                    
Install as a Cake Addin
#tool nuget:?package=RaphaelSharp&version=1.0.8
                    
Install as a Cake Tool

RaphaelSharp

C# bindings for the Raphael FFXIV crafting solver and its recipe data, used by RebornBuddy.

This is a fork of WorkingRobot/Raphael.Net (remote upstream). Upstream exports only the solver, so its caller must supply recipe data and simulate the result itself. RaphaelSharp also links raphael-data and exposes everything raphael-cli offered, in-process.

Path Output Contents
native/ raphaelsharp_native.dll Rust crate: raphael-rs behind a C ABI (rb_* exports)
RaphaelSharp/ RaphaelSharp.dll C# library: loads the native DLL and mirrors its ABI

Install

dotnet add package RaphaelSharp

The package targets net10.0 on Windows x64 and carries raphaelsharp_native.dll as a runtimes/win-x64/native asset, so RaphaelLibrary.Load() finds it without further setup.

API

var raphael = RaphaelLibrary.Load();     // runtime native probing; Load(path) for an explicit location

Recipe[] recipes = raphael.FindRecipesByItem(itemId);   // replaces raphael-cli search --item-id
Ingredient[]? mats = raphael.GetIngredients(recipeId);  // replaces raphael-cli ingredients -r; null if unknown

var input = new SolveArgs
{
    RecipeId = recipeId,
    Craftsmanship = 4500, Control = 4200, Cp = 620, Level = 100,
    TargetQualityPercent = 100,
    Manipulation = true,
};
input.HqIngredients[0] = 2;                               // indexed like GetIngredients

using var timeout = new CancellationTokenSource(TimeSpan.FromSeconds(30));
Solution solution = await raphael.SolveAsync(input, timeout.Token); // replaces raphael-cli solve

Solution carries the SolveStatus, the macro as CraftingAction[], and the simulated final state (progress, quality including HQ ingredients, durability, CP, duration). Cancellation ends a solve with SolveStatus.Interrupted rather than throwing. A solve uses one worker thread per logical CPU while it runs.

native/src/lib.rs is the ABI contract; RaphaelSharp/Types.cs and RaphaelSharp/RaphaelLibrary.cs mirror it. Any change to a signature, #[repr(C)] layout, status or action code must be made on both sides together with a bump of ABI_VERSION / RaphaelLibrary.AbiVersion. RaphaelLibrary.Load rejects a native DLL reporting another version.

Build

Requires the stable x86_64-pc-windows-msvc Rust toolchain, the MSVC build tools and the .NET 10 SDK.

cargo test --release --locked            # in native/
dotnet build RaphaelSharp.slnx -c Release

The C# build runs cargo build --release --locked first, so RaphaelSharp/bin/Release/net10.0/ always holds a matching RaphaelSharp.dll, RaphaelSharp.xml and raphaelsharp_native.dll. Pass -p:CargoPath=<path to cargo.exe> when cargo is not on PATH. A Release build also writes RaphaelSharp.<version>.nupkg and .snupkg to artifacts/.

Publishing

Every TeamCity build of main packs version 1.0.<build number> and pushes it to nuget.org with --skip-duplicate. Bump the 1.0 in RaphaelSharp/RaphaelSharp.csproj for breaking API or ABI changes. Builds outside TeamCity are versioned 1.0.0-dev.

Deploying to RebornBuddy

  • RaphaelSharp.dll and RaphaelSharp.xml go to depends/. The host references the DLL, and .NET Reactor packs it into RebornBuddy.exe for releases.
  • raphaelsharp_native.dll goes to ff14bot64/Crafting/, and the release ZIP ships the whole Crafting/ folder.

Updating game data

Recipe, item and level tables come from raphael-data, compiled into the native DLL. After an FFXIV patch, once raphael-rs publishes the new data, point all three raphael-* dependencies in native/Cargo.toml at the same new revision, run cargo update -p raphael-data -p raphael-sim -p raphael-solver in native/, rebuild, test, and redeploy both DLLs.

License

MIT (see LICENSE). The native DLL statically links raphael-rs, licensed under Apache-2.0; the package ships its license as THIRD-PARTY-NOTICES.txt (RebornBuddy ships it as Crafting/raphael-rs LICENSE.txt).

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.
  • net10.0

    • No dependencies.

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.8 86 9/27/2026