A Go wrapper for the .NET Core Runtime that enables calling .NET assemblies from Go programs.
go-dotnet is a Go wrapper for the .NET Core Runtime that enables Go programs to load and execute .NET assemblies. It provides two primary use cases: running .NET executables and calling methods from .NET DLLs via delegates. This allows developers to leverage existing .NET libraries and functionality within Go applications.
Go developers who need to integrate with .NET libraries or execute .NET code within their Go applications, particularly those working in mixed-language environments or migrating from .NET to Go.
It offers a straightforward way to bridge Go and .NET, enabling code reuse and interoperability without requiring complex inter-process communication. Its support for delegate-based invocation and automatic SDK discovery simplifies integration compared to manual hosting solutions.
Go wrapper for the .NET Core Runtime.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Attempts to find .NET SDK paths automatically if not specified, simplifying initial setup and reducing manual configuration effort.
Allows loading .NET DLLs and calling methods via delegates directly from Go, enabling seamless integration without complex IPC.
Tested on OSX, Linux, and Windows with various Go and .NET Core versions, ensuring broad usability across different environments.
Supports customization of properties like TRUSTED_PLATFORM_ASSEMBLIES, offering control over the .NET execution context.
Marked as a PoC with no tests listed in the README, indicating it may be unstable or lack production readiness.
The README notes that supporting blittable types is an idea but not implemented, restricting complex data exchange between Go and .NET.
Relies on cgo, which can complicate builds, introduce portability issues, and add performance overhead compared to pure Go solutions.
Setup instructions are 'coming soon,' and examples are basic, leaving users to figure out advanced use cases or troubleshooting on their own.