How to get started

Apr 15, 2009 at 7:40 PM
Hello Olivier.

Your project is very interesting and I am sorry to see you have discontinued it.
I would like to give it a try but the information in your site is a little bit limited and some references seem do not match the actual download (for example, I am not sure to what are you referring to when you mention the CrossNet Console).
Can you give some short step-by-step tutorial on how to get started porting an assembly? For example, I have seen the explanation on the use of the parser with the Reflection command line but I am not sure how to convert the Mono BCL into c++ in the first place (is it enough to have Mono installed in the machine? What to do then?)
I am kind of confused and I would strongly appreciate your help to get jump started in playing with it.

Again, congratulations for your project and I am looking forward to listening from you soon.

Apr 16, 2009 at 4:48 AM
I guess it doesn't help when the wiki now incorrectly parses the text "C++" and underline every pages entirely. :)

Actually the "how to get started" page describes a workflow that is not enabled anymore. Sorry about that, I'll fix the page in the next few days.
In the meantime, you can read the steps in the download page (with the release) as they are accurate - although I did not test with the very latest reflector version (will do this week-end to make sure there is no new issue there).

The best to get started is to use the C# benchmark example. It has everything needed with the current release of CrossNetSystem.
And get you a simple framework to start with. As indicated in the steps, you will have to update some of the pathing for include paths and libraries to match your local configuration.

About Mono BCL, if you have the assemblies directly you should be able to pass them as is with CrossNet parser. (You may be able to download them directly from the mono website).
Now I would not put my hope too high. The reason is that they certainly depend on a ton of other assemblies or low level code / pinvoke.
CrossNetParser will parse it, and generate the whole cpp code. Potentially it will compile it correctly (depending of some edge cases not supported or referencing other assemblies) but I don't believe it will link.
A better choice is to take the C# sources of the Mono BCL and disables everythying that you don't need, recompile the C# code with DevStudio and generate the C++ from that new assembly.
This makes it much more manageable and you will integrate things one at a time with full control.
That's the process I did when I integrated the Mono unit-tests in my test framework, but the BCL was pointing to my local implementation (a variation of CrossNetSystem).

I hope it helps!
Apr 21, 2009 at 4:27 AM
I tested everything from scratch and documented every single steps in the "How to get started page".
Let me know if there is something not clear or missing.