Skip to content

A platform agnostic tool to export .NET functions at build time.

License

Notifications You must be signed in to change notification settings

sandboxorg/NXPorts

 
 

Repository files navigation

NXPorts

CI NuGet Gallery Release

A MSBuild-integrated library/tool to expose entrypoints in .NET assemblies to the platform invocation system or short PInvoke. It allows you to build .NET libraries that can be called from any development platform that supports PInvoke, including C++, C, Rust, Delphi, Python and so on...

Getting Started

To get started you only have to add the NXPorts package to your project. That's it. NXPorts will automatically generate exports as part of your build now. Some samples are available here.

Prerequisites

This software itself will run on any system that supports developing .NET software - it does not have any dependencies on ildasm.exe, ilasm.exe or any other windows-only libraries.

Keep in mind that Reverse PInvoke - calling PInvoke entrypoints in .NET assemblies - is only officially supported in the .NET Framework. It may work in other runtimes as well, but your mileage may vary.

See Compatibility Docs for more info.

Sample

The following code will result in an exported function named SampleExportFunc.

public static class Exports {
  [DllExport(alias:"SampleExportFunc")]
  public static double Add(double a, double b)
  {
      return a + b;
  }
}

Building from Source

To build packages by yourself all you have to do is the dotnet cli like this:

  dotnet pack

This will restore, build and pack all available projects. Testing this project is just as simple:

  dotnet test

More information about the release process can be found here.

Contributing

I am more than happy to take in PRs. Documentation regarding Marshalling, PE32 or PInvoke (especially on non-NETFX runtimes) counts just as much as a valuable contribution as any other code PR.

To me writing issues is also just as valuable. I may not list every issue reporter in the release notes, but especially during the initial development timeline knowing the shortcomings of the software is absolutely invaluable.

Guidelines

  • Please consider writing an issue first
  • Please target PRs towards the master branch

About

A platform agnostic tool to export .NET functions at build time.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 100.0%