Microsoft did (kind of timeline):
1- Use native C++ with version 2, 4, 5, 6
2- Develop an interopability standard: COM
3- Created a Managed frameWork: .Net
4- Created new languages based on .Net: C#, VB, etc.
5- Created an extension to C++: C++/CX
1- C++ syntax is awfull, complex and error prone
2- COM is complex, error prone and using C++/ATL is son complex that no one really want to adhere to that. It was an easy mistake.
3- .Net is slow. Can't create object on the stack. Has a garbage collection which make programmer life easy but make program performance non-deterministic. Memory behavior is hard to understand for users.
4- C# and VB.Net have both really nice syntax and languages are features rich. But they depends on .Net. Does not operate well with native OS API.
5- Then you create c++/cx. Have you ever read the wikipedia definition of this language. The syntax is just more horrible that original C++. You added more artifacts. This language and its awfull syntax could just not survive over time. I bet you anything!
Why Microsoft always create something that we know it will not survive over time?
Why Microsoft don't create one language, one good language, the final one?
A language with similar syntax as C# or VB.net.
A language with features like C# or VB.net.
A language that has performance and is deterministic in time (no GC).
A language that has a rich framework similar to .Net but complete. A framework where we could access/discover DirectX directly, has something similar to WPF, WCF, etc. Where we can use/manipulate image, video, SVG, etc.
I think Apple understand that in a certain way with Swift.
Suggestion: Do the same as Apple. In fact do it better and faster!!!
Uğur Pelister commented
syntactically C# is probably the best language around. But because of its ties with the .Net Framework it can't be a high-performance language for gaming and systems programming.
What I would propose is that Microsoft create a C# extension, just like the way they have extended C++. The syntax would stay almost intact, but would compile directly into machine language.
Such a scenario inevitably brings the garbage problem: in the absence of GC, would it be beneficial to prefer C/C++-like "manual" cleaning, or ObjC-like automatic reference counting? If Microsoft ever decides to make such a new product, they should make the decision together with the community.