After my last post I have been trying to get a hand on C++/CLI, again. It doesn't work for me....
Since I am interested in getting .NET right for me, I have been trying to do something in C++/CLI.. I can turn it in whichever direction I want, It's not a good feeling to write handles and gcnew. I ask myself again and again "Why, oh why is M$ doing something like this?" The only reason that is useful from my point of view, is that someone needs to do the ugly work to integrate old C++ and .NET. That's what it's for - nothing else.
Lately I was Coding with Visual Studio 2005. I must say I really like the UI. It's great. Unfortunately M$ has to put the functionality of two worlds into one Language Environment - at least for C++. When opening the properties window for a project the coder can either choose to go the standard way: Includes, link directories, dependent libraries and so on ... settings for the linker and whatnot. On the other hand he/she can choose to compile against the CLR, there can references be set to dependent projects, which is a M$-mechanism that has nothing to do with C++ coding at all.
So to make a point the C++ environment is - at least from my point of view - an unfortunate mixture of the .NET-programming world and the native programming world. There is no guidance on how or when to use which setting. Of course there is documentation on which feature acts how but it's not made clear at all how the programmer (I also think about people who start programming) can distinguish between .NET and native programming.
There is a mixture of both platforms in C++ (C++/CLI), in the tools for compiling and linking (they act depending on parameters differently and unless one knows these parameters they act unpredictable) and in the development environment itself. The separation of these two concerns seems to not have happened at all. I can only guess why.
On the other hand if I look at the C# environment (especially the project settings) I find a clean pure .NET environment which even points out the mess in the C++ environment and thus makes it even less attractive to the user. This is a pitty but it is the way M$ seems to work. I just await the day that M$ remove support for native C++ programming with the reason that it is too confusing and to error prone.
Couldn't you just be part of the pure clean fine .NET world?....