It really always was, the runtime system within .NET always had the capability to run C/C++ code but to get C++ code to talk to C#/VB code with GC-heap objects you had to use language extensions and I think that limited the appeal by a fair bit (Especially as iirc they actually made 2 different extensions), on top of this the C# language has also always had and continually gets new extensions to do non-heap tasks (Compared to Java that has focused on the a clean Java world where everything was on the heap).