2012-01-19 15 views
26

La soluzione VS2010 contiene un progetto di test. L'unità di prove di riferimento se stessi la seguente spazio:Progetto di test unità non compilato dal server di build

using Microsoft.VisualStudio.TestTools.UnitTesting; 

cui si accede tramite il seguente assemblea sul mio PC:

Assembly Microsoft.VisualStudio.QualityTools.UnitTestFramework 
    C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ 
    PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 

Quando costruisco la soluzione sul mio PC non ho problemi; i test verranno creati e funzionanti.

Abbiamo una pagina intranet che possiamo utilizzare per avviare le build su un server di build. Quando costruisco tramite questa pagina, la build non riesce con i seguenti errori:

Generator.cs(3,17): error CS0234: The type or namespace name 'VisualStudio' 
does not exist in the namespace 'Microsoft' (are you missing an assembly 
reference?) 

Il problema evidente è che il Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll di cui sopra non è presente sul server di build. Pensavo che questo sarebbe stato installato con VS2010, e dal momento che i progetti nella mia soluzione creano target .NET 4.0, mi aspetto che questo sia installato sul server di build.

Qual è il modo più semplice per risolvere questo problema? Il server di build è fuori dalla mia giurisdizione e non desidero particolarmente registrare un lavoro per avere nuove librerie installate su di esso.

risposta

23

Il file .UnitTestFramework.dll si trova nella cartella C: \ Programmi ... e si dispone di un riferimento.

  1. Creare la directory sotto il controllo sorgente es. Fonte/Binari
  2. Copia detto DLL in Fonte/Binari
  3. eliminare il riferimento alla .UnitTestFramework.dll dall'unità montaggio di prova
  4. aggiungere il riferimento al .UnitTestFramework.dll al montaggio di prova unità, ma questa volta selezionare la DLL che è ora sotto Fonte/binari

Dopo di che è possibile checkin le modifiche (assicurarsi che la cartella di origine/binari viene archiviato) e creare la soluzione. Quando il build server crea la soluzione, dovrebbe ottenere la DLL dal controllo del codice sorgente.

+0

Non ci sarebbero problemi di licenza con quelle DLL quando ad es. avere il tuo progetto come progetto open source su ad es. Github? –

+6

Solo per rispondere al mio commento: Sì, ci saranno problemi di licenza - questo non sarebbe permesso: http://social.msdn.microsoft.com/Forums/vstudio/en-US/32384366-b668-4f18-99eb- 9c67f7eef233/redistributing-microsoftvisualstudioqualitytoolsunittestframeworkdll –

+0

Ho fatto ciò che la risposta suggerisce. funziona per il mio PC di sviluppo (con VS) e il nostro server CI (senza VS). Preferisco avere la DLL tirato da NuGet, ma non riesco a farlo funzionare. –

10

La risposta specifica per me e una soluzione di Visual Studio 2010 è stato:

  1. Installa "Test Agent 2010" di Visual Studio Agents 2010
  2. Riavviare Windows
  3. Installare Visual Studio 2010 Service Pack 1
  4. Riavviare Windows
  5. Assicurare i riferimenti dei progetti vengono aggiornati per indicare "Microsoft.VisualStudio.QualityTools.UnitTestFramework" "10.1.0.0" e non "10.0.0.0".
+1

Nota che Visual Studio Agents 2015 installa il framework 4.6.1 se il tuo server non lo ha già – Hoppe

Problemi correlati