SODSharp 0.1.0
dotnet add package SODSharp --version 0.1.0
NuGet\Install-Package SODSharp -Version 0.1.0
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="SODSharp" Version="0.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SODSharp" Version="0.1.0" />
<PackageReference Include="SODSharp" />
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 SODSharp --version 0.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SODSharp, 0.1.0"
#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 SODSharp@0.1.0
#: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=SODSharp&version=0.1.0
#tool nuget:?package=SODSharp&version=0.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
SODSharp
An SDK for Shadows of Doubt modding. Provides common helpers and a plugin entry point for BepInEx IL2CPP.
- NuGet: pack and publish to consume in code
- Thunderstore: ship as a dependency mod that others can reference
Installation (as Thunderstore dependency)
- Upload the contents of
ModFolderContent
(plus the built DLL frombin/Release/net6.0/
) as your Thunderstore package. - Other mods add a dependency:
"shane-SODSharp-<version>"
in theirmanifest.json
.
Installation (as NuGet)
- Add the NuGet package
SODSharp
to your mod project. - If you also use
SOD.Common
, you can set MSBuild propertySODCommonDll
to point to your local SOD.Common.dll:
<PropertyGroup>
<SODCommonDll>..\path\to\SOD.Common.dll</SODCommonDll>
</PropertyGroup>
Requirements
- BepInEx 6 (Unity IL2CPP)
- UniverseLib (IL2CPP)
Usage
- Implement your patches and initialization within your mod.
SODSharp.Plugin
initializes UniverseLib and applies Harmony patches.- Use the general message helper
SODSharp.UI.ScreenMessages
to show messages without taking a hard dependency on game assemblies:
// Simple broadcast using defaults (notification + building icon + white)
SODSharp.UI.ScreenMessages.Broadcast("Hello, Detective!");
// Specify message type and icon by enum name (from the game):
// messageType: values from InterfaceController.GameMessageType
// icon: values from InterfaceControls.Icon
SODSharp.UI.ScreenMessages.Broadcast(
text: "New lead discovered",
messageType: "notification",
icon: "magnifyingGlass",
r: 0.9f, g: 0.9f, b: 1f, a: 1f
);
This helper uses reflection at runtime to resolve types from the game and SOD.Common, so it compiles even without direct references to Assembly-CSharp.dll
.
Build
# Build + (auto)pack
dotnet build -c Release
# or explicitly
dotnet pack -c Release
Artifacts:
- DLL:
bin/Release/net6.0/SODSharp.dll
- NuGet:
bin/Release/SODSharp.0.1.0.nupkg
Optional: Local game references for IntelliSense
If you want compile-time access to game types (e.g., InterfaceController
enums) locally, set GameManagedDir
in your consuming project to the game's Managed folder. This is optional and not required for runtime:
<PropertyGroup>
<GameManagedDir>C:\\Program Files (x86)\\Steam\\steamapps\\common\\Shadows of Doubt\\Shadows of Doubt_Data\\Managed</GameManagedDir>
</PropertyGroup>
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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.
-
net6.0
- BepInEx.Unity.IL2CPP (>= 6.0.0-be.738)
- Lib.Harmony (>= 2.3.6)
- SOD.Common (>= 2.1.0)
- UniverseLib.IL2CPP (>= 1.4.2)
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 |
---|---|---|
0.1.0 | 111 | 8/10/2025 |