LibreMetaverse allows your code to read and work with data send across a SecondLife, Halcyon, OpenSimulator, or related connection.
$ dotnet add package LibreMetaverse▗▖ ▄ ▗▖ ▄▄▄ ▗▞▀▚▖▗▖ ▗▖▗▞▀▚▖ ■ ▗▞▀▜▌▄ ▄ ▗▞▀▚▖ ▄▄▄ ▄▄▄ ▗▞▀▚▖
▐▌ ▄ ▐▌ █ ▐▛▀▀▘▐▛▚▞▜▌▐▛▀▀▘▗▄▟▙▄▖▝▚▄▟▌█ █ ▐▛▀▀▘█ ▀▄▄ ▐▛▀▀▘
▐▌ █ ▐▛▀▚▖█ ▝▚▄▄▖▐▌ ▐▌▝▚▄▄▖ ▐▌ ▀▄▀ ▝▚▄▄▖█ ▄▄▄▀ ▝▚▄▄▖
▐▙▄▄▖█ ▐▙▄▞▘ ▐▌ ▐▌ ▐▌
▐▌
LibreMetaverse is a fork of libOpenMetaverse which in turn was a fork of libSecondLife, a library for developing Second Life-compatible virtual world clients. LibreMetaverse returns the focus to up-to-date Second Life and OpenSim compatibility with an eye to performance, multi-threading, and memory management.
The canonical source for LibreMetaverse can be found at: https://github.com/cinderblocks/libremetaverse
Check out our example applications to learn the library:
See all examples in Programs/examples/ | Examples README
See all tools in Programs/tools/ | Tools README
dotnet CLI available on PATH. Verify with:dotnet --info
From repository root:
# Restore packages for the solution
# Example: dotnet restore LibreMetaverse.sln
# Or restore and build directly from the root directory:
dotnet restore
# Build the entire repo (builds discovered projects)
# Recommended: use 'dotnet build' which runs source generators automatically
dotnet build -c Release
This builds projects for their configured target frameworks (net8.0/net9.0/netstandard2.0, etc.).
If you need to force a single framework for a specific project use -f on the dotnet build command for that project.
Notes:
SourceGenerators folder. When using MSBuild (or dotnet msbuild) you may need to build/run those
generator projects manually before building the consumer projects. Using dotnet build is recommended
because it will execute source generators as part of the normal build flow when configured correctly.If you still want to run MSBuild directly:
# Build generator projects first (example):
# dotnet build SourceGenerators/PacketSourceGenerator/PacketSourceGenerator.csproj -c Release
# dotnet build SourceGenerators/VisualParamGenerator/VisualParamGenerator.csproj -c Release
# Then run msbuild on the solution (adjust solution filename as needed):
# dotnet msbuild LibreMetaverse.sln -t:Build -p:Configuration=Release
To build an individual project (example TestClient):
dotnet build Programs/examples/TestClient/TestClient.csproj -c Release
Outputs for each project are under that project's bin/<Configuration>/<TargetFramework>/ directory
(for example LibreMetaverse/bin/Release/net8.0/).
Change into the example project's output folder and run with dotnet (or execute the produced
executable on platforms that produce a native runnable file):
cd Programs/examples/TestClient/bin/Release/net8.0/
dotnet TestClient.dll # on platforms that require 'dotnet' to run
# or
./TestClient # if the project produced a runnable executable on your platform
LibreMetaverse.sln) in Visual Studio.Windows
net48 test/tools) require Windows and Visual Studio/MSBuild.
Use Visual Studio or dotnet msbuild from a Developer Command Prompt../Program.exe) or via dotnet for framework-dependent builds.Linux
dotnet build and dotnet run are the recommended workflow.macOS
dotnet build / dotnet run are supported similarly to Linux.CI and cross-platform builds
dotnet build and run a matrix across ubuntu-latest, macos-latest, and windows-latest if you
need to validate cross-platform compatibility.Native dependencies & source generators
dotnet msbuild directly instead of dotnet build, you may need to build or run
the SourceGenerators projects first so generated sources are available to consumer projects.Some tests target Windows-only frameworks; run the cross-platform tests using the CLI where applicable. Example (where supported):
dotnet test LibreMetaverse.Tests/LibreMetaverse.Tests.csproj -c Release
dotnet --info matches the frameworks you want to build (8.0/9.0).~/.nuget/packages cache or run dotnet restore with verbosity to inspect failures.Want to contribute? Check out our Contributing Guide!
We welcome:
See the repository for contribution guidelines. Keep changes small and test builds on your target runtime.
For more project-specific details check the Programs/examples/ folders or the individual project README files.