The project has been public since September 2007, and as such, you must expect some issues. ;)
Please use the forum if you have any question or feedback!
- The tests are done on PC with VS2005. Do expect some issues on X360 / PS3 / Wii or even any other C++ compiler. I unfortunately currently don't have the time to test any other compiler. I also don't have access to console devkits at home, so bear with me. Please report to the issue tracker any compile error that you have as I'm sure they'll be easy to fix.
- Although I spent quite some time on CrossNet, there are still many many cases where the C++ code is incorrectly generated, or places where the runtime is buggy (or even not implemented at all). Even if a lot of cases are covered already, I want to set your expectations low for the moment so you don't have bad surprises. ;)
- CrossNet is using Reflector. Even if this tool is of very high quality, there are still some known bugs that should be fixed soon. If your assembly can't be parsed correctly, try to compile it with optimization and check overflow turned off, sometime that helps.
- Some pieces are simply not finished (look at the To do! list). If you really need that particular piece ASAP (either correct parsing or correct runtime behavior), again report it on the issue tracker.
Here is what you should do if you encounter some issues:
- In some rare optimization cases, the C++ compiler might be too smart (or too dumb depending on how you see it ;). It might save an offseted address on the stack for some objects in order to access members more quickly later. Unfortunately this can actually make the GC miss the object when crawling the stack. I added some code to actually detect and solve this case (or at least the only I have seen so far on VS2005). If when you run your code in release only, you see that one of your local object has been collected after a GC, try to reduce your optimization settings and see if that fixes the issue. If you can, send a simple example reproducing the issue so we can see how we can generalize the solution.
- Try to create the simplest test case and add it to the issue tracker. It is very important! Often it takes more time to reproduce those issues than actually fixing them.
- If the generated C++ code doesn't compile with your compiler, provide an example of how the code should be generated for your compiler to accept it. This way, I will be able to fix the issue even if I don't have access to your compiler.
- Change / Simplify your code a bit to use more intermediate variables / statements.
- Change your compile options (like turn optimization / check overflow off). Remember that the code is optimized by the C++ compiler at the end, so turning optimization off in the .NET side won't actually change the performance of the generated code.