Sì, puoi farlo. VS potrebbe riportare vari errori falsi, come le classi che non trova, ma una volta compilato tutto funzionerà bene. Generalmente non è consigliato per motivi già menzionati MA, penso che tu possa farlo in alcune situazioni.
Nel mio caso l'ho fatto per un codice base condiviso che è compilato come librerie per 6 diverse piattaforme basate su .net (.NET basic, Xamarin, Windows 8.1, Mac ecc., ciascuna API con le sue piccole differenze). La lib compilata viene quindi utilizzata dai progetti che prendono di mira ciascuna piattaforma. Per le piattaforme Windows Store 8.1 Apps e Windows Phone 8.1 il System.Collections aveva un sacco di classi mancanti: ArrayList, Hashtable, SortedList ecc., Tutti i tipi di comparatori, enumerabili ecc. Benché io sia consapevole del fatto che questi le classi non sono raccomandate e si dovrebbero usare alternative generiche (che sono disponibili per le piattaforme Win 8.1), è un compito ENORME nel nostro caso apportare tali modifiche sul codice condiviso, PLUS sul codice dei progetti consumer delle librerie risultanti . Le classi non generiche sono usate dappertutto, lo sviluppo è iniziato nel 2002. E parliamo di decine di migliaia di linee di codice ora ...
Quindi, in questo caso, penso che sia giusto iniettare alcune classi mancanti nel namespace System.