For anything that can be said that's bad about microsoft; they certainly encourage amateur developers at times, and that's good for the industry; encouraging more people to learn and use a general and reasonably powerful programming language rather than the modkit for their current favorite FPS/RPG isn't a bad thing. Ok, you wouldn't want to write Halo 4 in C# + XNA, but a professional dev team should know that anyway.
XNA isn't really a 'full' game framework. It does graphics, input and sound, it does some work towards importing graphics data; not much else. That aside, you can write games in C#+XNA, you can write games in Java, you can write games in Visual/QBasic. You could probably write games in COW ( http://www.bigzaphod.org/cow/ ) if you had a way to call graphics libraries or talk to a runtime.
Again though, my stance is that engines and high-load libraries *should be* written in C++ or a lower level language that compiles to machine code, where *should be* can be replaced with *nearly always are* if an irrefutable fact is desired. However, any language that compiles to equivalent machine code and exposes a neat C[++] call interface is equal in any metric that matters.
Personally, I wouldn't mind writing lower-load aspects of some of my projects in a more domain-specific language.. but.. I've yet to encounter one that really appeals to me.