>for non-memory resources (finalizers are an abomination).
Why is there any debate? Ref counting is universal (release when done works with any resource type), GC is only for memory (release when memory pressure). Therefore GC can not be a drop in replacement for ref counting, case closed. There is no amount of performance or any other straw man that can change that.
Yet that's precisely what was done from vb6 to vb.net
Since you are on the inside, can you find out why Microsoft's .NET people appear to not understand this? Do they really believe that another abomination, the dispose pattern (which is nothing more than manual malloc, free) is really a "solution?" Are there plans to change that?