CrossNet is a cross platform .NET runtime.
It parses .NET assemblies and generates unmanaged C++ code that can be compiled on any standard C++ compiler.
This is the first official release of CrossNet.
With this release, you should be able to understand how CrossNet works and use it for your .NET projects.
Note that you will be mostly limited by your BCL's implementation. The parser is stable so that part should not cause major issues.
Also note that predefined types in CrossNetRuntime do not
have complete method declarations / definitions.
They are very easy to add as needed though, the more critical things are parser bugs as it is more difficult to fix.
Contributions are needed for CrossNetSystem
. This is a BCL's implementation working with CrossNet.Before you get started:
- You need to download Reflector to be able to use CrossNet.
To compile the parser, you will have to update the reference accordingly (rename .exe to .dll, could even add it on the GAC).
CrossNet 0.8.0.0 has been tested against Reflector 126.96.36.199.
- When running Reflector the first time, you need to set the option View > Options > Disassembler > Optimization to .NET 2.0.
Support for .NET 3.5 is in progress in CrossNet, you will have incorrect behavior if you don't switch to .NET 2.0.
Also make sure to add Reflector.CrossNet.dll in the list of add-ins.
- CrossNet can only be run from a command line in Reflector (no support in the UI yet).
Here is an example for the command line:
Reflector.exe /Run:Reflector.CrossNet /crossnet:example.xml
example.xml is under Reflector.CrossNet, you will have to modify it to reference your own assemblies.
During the parsing, Reflector's UI will be displayed but you won't be able to interact. This is expected behavior.
- Most of .NET 2.0 features are supported with CrossNet 0.8.0.0, but again the most limiting factor will be BCL's implementation.
The expectation for release 188.8.131.52 is that all incompatibilities with .NET 2.0 will be minimum and clearly documented,
All known parsing bugs will have been resolved, it will compile on major C++ compilers, predefined types will be completely implemented.
- Finally if you have any question, comment, don't hesitate to use the forum. Please report any bugs to the issue tracker.