2014-04-08 12 views
8

Ho esaminato alcuni problemi con i plug-in di test delle prestazioni Web in Visual Studio 2013. Aggiungendo riferimenti alle DLL necessarie (ad esempio Microsoft.VisualStudio.QualityTools.WebTestFramework.dll) ho notato che ci sono più voci per la stessa DLL disponibile nella finestra "Aggiungi riferimenti". Sul mio sistema ho cinque scelte per WebTestFramework.Che differenza c'è tra gli assembly di riferimento e gli assembly pubblici in Visual Studio

Alcuni di questi che vedo provengono da versioni precedenti di Visual Studio che sono anche installati sulla mia macchina. Tuttavia, vedo che alcuni sono duplicati, per es .:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ReferenceAssemblies\WebTestFramework.dll

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PublicAssemblies\WebTestFramework.dll

Ho confrontato gli hash di questi due file e sono identici. Quindi, perché sono presenti due volte nella mia installazione VS 2013 (v12.0)? Perché è presente una cartella "ReferenceAssemblies" e una "PublicAssemblies"?

risposta

8

Bene, idealmente l'assembly di implementazione non viene visualizzato nell'elenco. Ma il controllo su ciò che appare nell'elenco non è abbastanza preciso, può essere configurato solo dalla directory, non da singoli gruppi. Un altro vincolo è che Microsoft è spesso costretta a scegliere meno posizioni di memoria desiderabili per un assieme per mantenere la compatibilità con le precedenti versioni VS in modo da non rompere i progetti esistenti. E le strutture di prova sono cambiate molto attraverso le versioni VS, ci sono voluti un po 'per ottenere tutte le stranezze appianate.

Sempre selezionare il gruppo di riferimento quando ne viene offerto uno. Sono pensati per isolarti da questi rapidi cambiamenti e spesso intenzionalmente non sono una copia dell'assembly di implementazione. Lo farai funzionare quando scegli l'assembly di implementazione ma rischi di interrompere il progetto di test nella prossima versione di VS. YMMV.

+0

Per errore sono stati aggiunti vari test unitari tramite modelli di progetto di libreria di classi C# e modelli di progetti di test unitari. Gli sviluppatori che hanno creato le librerie di classi hanno aggiunto riferimenti a 'Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll' da' ReferenceAssemblies' sebbene il modello di test unitario li aggiunga da 'PublicAssemblies'. I test vengono eseguiti per me in VS 2013, ma non per altri sviluppatori che eseguono VS 2012. Sai se la versione di VS è la ragione di questa discrepanza? – NickL

+0

Sto riscontrando un problema simile. Gli assembly di riferimento non possono essere trovati sulla mia macchina di compilazione anche se VS2013 e .Net framework 4.5.1 sono entrambi installati. Sto seguendo attivamente questo problema e aggiornerò se scoprirò qualcosa di utile. – DubiousPusher

Problemi correlati