![]() |
VOOZH | about |
dotnet add package MaxRev.Gdal.MacosRuntime.Minimal.x64 --version 3.13.1.534
NuGet\Install-Package MaxRev.Gdal.MacosRuntime.Minimal.x64 -Version 3.13.1.534
<PackageReference Include="MaxRev.Gdal.MacosRuntime.Minimal.x64" Version="3.13.1.534" />
<PackageVersion Include="MaxRev.Gdal.MacosRuntime.Minimal.x64" Version="3.13.1.534" />Directory.Packages.props
<PackageReference Include="MaxRev.Gdal.MacosRuntime.Minimal.x64" />Project file
paket add MaxRev.Gdal.MacosRuntime.Minimal.x64 --version 3.13.1.534
#r "nuget: MaxRev.Gdal.MacosRuntime.Minimal.x64, 3.13.1.534"
#:package MaxRev.Gdal.MacosRuntime.Minimal.x64@3.13.1.534
#addin nuget:?package=MaxRev.Gdal.MacosRuntime.Minimal.x64&version=3.13.1.534Install as a Cake Addin
#tool nuget:?package=MaxRev.Gdal.MacosRuntime.Minimal.x64&version=3.13.1.534Install as a Cake Tool
A simple (as is) build engine of GDAL library for .NET.
Provides a minimal setup without requirements to install heavy GDAL binaries into your system.
MaxRev.Gdal.Universal
👁 NuGet Version
👁 NuGet Downloads
<br>
MaxRev.Gdal.Core
👁 NuGet Version
👁 NuGet Downloads
<br>
MaxRev.Gdal.WindowsRuntime.Minimal
👁 NuGet Version
👁 NuGet Downloads
<br>
MaxRev.Gdal.LinuxRuntime.Minimal
👁 NuGet Version
👁 NuGet Downloads
<br>
MaxRev.Gdal.MacosRuntime.Minimal
👁 NuGet Version
👁 NuGet Downloads
<br>
CLI Tools - GDAL command-line utilities (gdalinfo, ogr2ogr, gdal_translate, etc.)
MaxRev.Gdal.CLI.win-x64
👁 NuGet Version
👁 NuGet Downloads
<br>
MaxRev.Gdal.CLI.linux-x64
👁 NuGet Version
👁 NuGet Downloads
<br>
MaxRev.Gdal.CLI.linux-arm64
👁 NuGet Version
👁 NuGet Downloads
<br>
MaxRev.Gdal.CLI.osx-x64
👁 NuGet Version
👁 NuGet Downloads
<br>
MaxRev.Gdal.CLI.osx-arm64
👁 NuGet Version
👁 NuGet Downloads
<details> <summary>Show</summary> <p>
<small><i><a href='http://ecotrust-canada.github.io/markdown-toc/'>Table of contents generated with markdown-toc</a></i></small>
</p> </details>
proj.db database you may require proj-data grid shifts.dotnet add package MaxRev.Gdal.Universal
dotnet add package MaxRev.Gdal.Core
# windows supported only for x64
dotnet add package MaxRev.Gdal.WindowsRuntime.Minimal
# install linux bundle which references both arm64 and x64 binaries
dotnet add package MaxRev.Gdal.LinuxRuntime.Minimal
# or install a specific runtime
dotnet add package MaxRev.Gdal.LinuxRuntime.Minimal.arm64
dotnet add package MaxRev.Gdal.LinuxRuntime.Minimal.x64
# install macos bundle which references both arm64 and x64 binaries
dotnet add package MaxRev.Gdal.MacosRuntime.Minimal
# or install a specific runtime
dotnet add package MaxRev.Gdal.MacosRuntime.Minimal.arm64
dotnet add package MaxRev.Gdal.MacosRuntime.Minimal.x64
using MaxRev.Gdal.Core;
// call it once, before using GDAL
// this will initialize all GDAL drivers and set PROJ6 shared library paths
GdalBase.ConfigureAll();
The CLI packages provide GDAL command-line utilities (gdalinfo, ogr2ogr, gdal_translate, etc.) that can be invoked from your .NET application. Each CLI package automatically references the corresponding runtime package. You don't have to install the runtime package separately if you are using the CLI package - it includes a package reference to the runtime nugets.
# Windows
dotnet add package MaxRev.Gdal.CLI.win-x64
# Linux
dotnet add package MaxRev.Gdal.CLI.linux-x64
dotnet add package MaxRev.Gdal.CLI.linux-arm64
# macOS
dotnet add package MaxRev.Gdal.CLI.osx-x64
dotnet add package MaxRev.Gdal.CLI.osx-arm64
GdalCli helper class (automatically included via the package):using MaxRev.Gdal.CLI;
// GdalCli.Run calls EnsureEnvironment() automatically on module load.
// OPTIONAL - You can also call it explicitly if needed:
// GdalCli.EnsureEnvironment();
// Run a GDAL tool and capture output
var exitCode = GdalCli.Run("gdalinfo", new[] { "--version" },
stdout: Console.Write,
stderr: Console.Error.Write);
// Run with file arguments
var result = GdalCli.Run("ogr2ogr",
new[] { "-f", "GeoJSON", "output.geojson", "input.shp" });
// Get the path to a GDAL tool
var toolPath = GdalCli.GetToolPath("gdalinfo");
See for more examples.
The CLI package includes two source files (GdalCli helper and PathInitializer) that are compiled directly into your project via buildTransitive targets. There is no extra assembly dependency - these become part of your application.
On startup, a [ModuleInitializer] automatically configures the process environment so the native GDAL tools can locate their shared libraries:
PATHLD_LIBRARY_PATHDYLD_LIBRARY_PATHGDAL_DATA and PROJ_LIB to the bundled data directoriesWhen you call GdalCli.Run(...), it spawns the tool as a child process which inherits these environment variables. The initialization is idempotent - GdalCli.EnsureEnvironment() can be called explicitly but will only run once.
You can disable the automatic source inclusion by setting MaxRevGdalCliEnablePathInitializer to false in your project file if you want to manage environment setup yourself.
This means you can build .NET Framework applications on Linux/MacOS using Mono. Also, any project based on NET Standard 2.0 or higher can utilize this library.
If you're struggling using GDAL functions. Here's a good place to start:
Enter directory to find out how.
Detailed guide is here - .
Detailed guide is here - .
The package configuration is marked as minimal. That means you don't have to install GDAL binaries. Also, some uncommon drivers are not available (were not built).
Drivers included PROJ, GEOS, and more than 200 other drivers.
The native dependency definition is shared across platforms through the manifest bundle in shared/:
shared/vcpkg.jsonshared/vcpkg-configuration.jsonshared/vcpkg-lock.jsonUnix, macOS, and Windows build wrappers all consume that same manifest authority instead of keeping separate package lists per platform. That keeps driver selection and dependency versions aligned between local builds and CI.
To view the complete list of drivers, see: .
NOTE: Runtime drivers availability may differ. Ask me about a specific driver for runtime. Please issue if I need to mention any packages.
Starting version 3.9.0 the packages can be compiled and run on .NET Framework 4.6.1+. The libraries and gdal-data will be automatically copied to the output directory. See for more info.
Each runtime has to be build separately, but this can be done concurrently as they are using different contexts (build folders). Primary operating bindings (in gdal.core package) are build from windows. Still, the resulting core bindings are the same on each runtime package (OS).
To make everything work smoothly, each configuration targets the same drivers and their versions, respectively.
CI now layers cache reuse on top of those per-platform build contexts:
To start building for a specific runtime, see the README.md in a respective directory.
A: These are old distros and are out of support (EOL). Use docker (see how to package your app) or a newer distro (GLIBC 2.31+). Packages for older systems are difficult to maintain. From 3.6.x version the Debian 11 distro is used. See this for more info.
A: Yes, you can (see folder for readme). All you have to do, is to choose one of the latest distros like Ubuntu 22.04 or Debian 11 (recommended). From the 3.6.x version the Debian 11 distro is used by default. It was changed because of EOL of the previous distro (see answer above). Prior to 3.6.x version packages were built on CentOS - glibc of version 2.17. It's the lowest version (in my opinion) that suits all common systems (Ubuntu, Debian, Fedora).
A: This package only contains the proj.db database. Make sure you have installed proj-data package. It contains aditional grid shifts and other data required for projections. Add path to your data folder with MaxRev.Gdal.Core.Proj.Configure(). See this for more info.
A: This is related to the previous package versions (prior to 3.7.0). From 3.7.0 version, GDAL_DATA folder is also shipped with core package.
A: Feel free to contribute and I will help you you to add them. Here's the my additional answer.
A: Try to search an issue on github. In 98% of cases, they are working fine.
A: Yes, currently there are some redundant types in OGR namespace. This will be fixed in the next builds.
A: Apparently, it's not a fault of the build engine. I did not face this issue and I use this packages in several production environments.
A: That's a problem with swig bindings. Please, use SpatialReference type from OSR namespace. More info here and here.
A: The current version of packages was compiled on MacOS Ventura and 11.3 SDK respectively. Consider updating your system to at least MacOS 13. The systems that reached EOL (end-of-life) won't be supported.
A: It's a known issue related to the linking of the shared libraries. If you find any solution/workaround, please let me know.
Currently, linker tries to find all shared libraries in the @loader_path/. It should point to the executable directory.
A: Ensure that you are using the same architecture for your project and the runtime package. If you are using AnyCPU, you should use only the x64 runtime package. See the sample project for details in .
A: The packages were not signed during build in CI. Why? Because it requires to have a paid developer account which does not fall under this repo maintenance. For the workarounds see .
A: There are several ways to publish. One important thing to keep in mind, that you have to ensure the output folder contains either runtimes/<os>-<arch>/native path, gdal-data folder and maxrev.gdal.core.libshared/proj.db. In most cases this should be handled automatically by dotnet. Usually, we release a runtime-dependent binary. The end user will have to install the .NET runtime, but the size of the app will be small and the build time is faster. Otherwise, you can publish a self-contained app which will include all required .NET runtime libraries. More details on publishing can be found here. Also, see the sample dockerized project for details in .
This work is based on GDAL and GDAL bindings by jgoday.
Contact me in Telegram - MaxRev.
Enjoy!
As the maintainer of this repository, I would like to express my heartfelt thanks to everyone who has supported the development, especially:
<img height="50" alt="Verge Agriculture Inc." src="https://github.com/user-attachments/assets/c5fe571e-b920-48c5-af31-840b9cc48c4a" /> <img height="50" alt="StatMap Ltd" src="https://github.com/user-attachments/assets/85701812-9f7b-46f7-849b-11d1edcc2bf8" />
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 is compatible. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 is compatible. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 netcoreapp2.0 was computed. netcoreapp2.1 netcoreapp2.1 was computed. netcoreapp2.2 netcoreapp2.2 was computed. netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 netstandard2.0 is compatible. netstandard2.1 netstandard2.1 is compatible. |
| .NET Framework | net461 net461 is compatible. net462 net462 was computed. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 net481 was computed. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen40 tizen40 was computed. tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
Showing the top 3 NuGet packages that depend on MaxRev.Gdal.MacosRuntime.Minimal.x64:
| Package | Downloads |
|---|---|
|
MaxRev.Gdal.Universal
GDAL (3.13.1) minimal libraries package. Drivers included PROJ (9.8.0), GEOS, SQLITE3, CURL, JPEG, PNG, HDF4, HDF5, and others. Targets linux-arm64 runtime. Target Frameworks: netstandard[2.1|2.0], netframework 4.6.1+, net6.0, net7.0, net8.0, net9.0, net10.0. |
|
|
MaxRev.Gdal.MacosRuntime.Minimal
GDAL (3.13.1) minimal libraries package. Drivers included PROJ (9.8.0), GEOS (3.14.1), SQLITE3, CURL, JPEG, PNG, HDF4, HDF5, and others. Targets osx-arm64 and osx-x64 runtimes. Target Frameworks: netstandard[2.1|2.0], netframework 4.6.1+, net6.0, net7.0, net8.0, net9.0, net10.0 |
|
|
MaxRev.Gdal.CLI.osx-x64
GDAL (3.13.1) CLI tools for osx-x64. Includes GDAL utilities (gdalinfo, ogr2ogr, gdal_translate, etc). |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.13.1.534 | 478 | 6/11/2026 |
| 3.13.0.527 | 8,323 | 5/11/2026 |
| 3.12.4.520 | 673 | 5/6/2026 |
| 3.12.3.499 | 9,159 | 4/11/2026 |
| 3.12.3.496 | 1,306 | 4/1/2026 |
| 3.12.2.494 | 349 | 4/1/2026 |
| 3.12.2.472 | 13,960 | 2/11/2026 |
| 3.12.1.470 | 324 | 2/10/2026 |
| 3.12.1.440 | 11,858 | 1/9/2026 |
| 3.12.0.427 | 16,939 | 11/29/2025 |
| 3.12.0.423 | 1,969 | 11/20/2025 |
| 3.12.0.418 | 542 | 11/19/2025 |
| 3.12.0.400 | 501 | 11/18/2025 |
| 3.12.0.397 | 3,007 | 11/11/2025 |
| 3.11.5.395 | 520 | 11/11/2025 |
| 3.11.5.393 | 643 | 11/11/2025 |
| 3.11.5.390 | 637 | 11/8/2025 |
| 3.11.4.387 | 1,190 | 11/1/2025 |
| 3.11.4.376 | 2,441 | 10/13/2025 |
| 3.11.3.339 | 14,707 | 7/24/2025 |
- GDAL 3.13.1
- PROJ 9.8.0
- GEOS 3.14.1