Con l'assistenza di un collega ho risolto questo problema utilizzando due progetti che facevano riferimento alle stesse classi ma che utilizzavano riferimenti diversi.
In primo luogo, ho rimosso il progetto dalla soluzione. Ho quindi copiato il file csproj e rinominato ciascuno con i numeri di versione:
- mioProject 2015.csproj
- mioProject 2016.csproj
Successivamente ho aggiunto ciascun progetto alla soluzione in VS. Mi piace mantenere una cartella con DLL di riferimento con il progetto in modo che siano archiviati in TFS e un altro sviluppatore abbia le versioni corrette a cui fa riferimento quando si estrae il progetto. Così ho creato una cartella v2015 e v2016 per i rispettivi progetti ponendo le DLL appropriate in ciascuna. Ho quindi rimosso i riferimenti esistenti nei progetti e li ho aggiunti nuovamente, indicando i file nelle cartelle di versione-ed. Albero del progetto risultante .
Ora ho ancora due configurazioni di build aggiuntive, una per ogni versione. Mi sono assicurato che ognuno di essi fosse mappato alle cartelle bin di versione (bin \ 2015 & bin \ 2016). Ho anche aggiunto un tag AssemblyName nei file csproj in modo che la mia DLL per ogni build abbia un nome che include il numero di versione. Infine, nel Build Configuration Manager, ho selezionato solo il progetto 2015 per la build 2015 e allo stesso modo per la build 2016. Ecco la sezione di configurazione dei file csproj .
Ora, quando apro una classe nel progetto 2015 e poi provo ad aprire la stessa classe nel progetto 2016, apre lo stesso file di classe nell'IDE.