The very idea of .Net is that you can use whatever language you are already comfortable with and use the DotNet platform without having to learn a new language all over again. One way of looking at it is as an inversion of the Java pyramid. Java can be explained as "single language-single executable(IL)-many OS". dot net is "many languages-one executable-one OS"(of course the one-OS bit is incorrect since we have Mono but I don't think that was what Microsoft had in mind :-P).
Yes C# was meant to be THE language for DotNet, but not "THE ONLY". Microsoft had probably hoped to get C++ programers to migrate to C# in the long run, if not immediately. But that doesnt seem to be happening. C++ is still the third most popular language. Faimiliarity with a language and the effort needed to port an aplication from C++ to C# has made most developers reluctant. After all , why fix something that is not broken? That is why Microsoft came up with C++/CLI. It is a wonderful way to get C++ programers on the the DotNet wagon without having to learn a new language. It took me very little time to get used to C++/CLI. The only drawback I saw was the new pointer notation for managed classes can confuse those who have a weak understanding of pointers in C++. Didn't affect me though.