BuildActivity ignora ToolsVersion

Ho una configurazione di integrazione continua in esecuzione su un BuildAgent che non riesco a ottenere correttamente. Recentemente ho cambiato il codice base in C # 6.0 e ho cambiato i progetti in ToolsVersion 14.

Ho installato Visual Studio 2015 sul Build Server (TFS 2012). Se ora eseguo il check in del codice C # 6.0, la compilazione fallisce sul primo progetto (“$” è inaspettato o qualcosa “)

BuildTemplate è “DefaultTemplate.11.1” Se controllo i file di log, la build chiama csc.exe errato (C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Csc.exe)

se faccio partire l’eseguibile MSBuild / 14.0 / Bin / MSBuild con il progetto senza alcun interruttore, la Build ha successo. Perché TFS BuildAgent non utilizza ToolsVersion e come posso ottenere TFS 2012 per creare la mia soluzione Visual Studio 2015

Se aggiungo MSBuildArgument /tv:14.0, continua a fallire. Come chiama la versione 12 di MSBuild che fa parte di .NET 4.6 RC Framework che viene fornito con Visual Studio 2015.

    Cambiando il ToolsPath di MSBuild Activity, la Build funziona ma sputa i proiettili se provo a eseguire il mio UnitTest. Ottengo un’eccezione di Missing “Microsoft.VisualStudio.TestPlatform.Utilities.dll”. (VS2012 è installato anche sul Build Server).

    AGGIORNAMENTO: ora ricevo un errore diverso con i miei test unitari:

    TF900548: An error occurred publishing the Visual Studio test results. Details: 'Method not found: 'System.Collections.Generic.IEnumerable<System.String> Microsoft.VisualStudio.TestPlatform.Utilities.InferSettingsHelper.MergeRunSettingsAndFindCompatibleSources(Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture ByRef, Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion ByRef, System.String, System.String, System.Collections.Generic.IDictionary`2<System.String,System.Collections.Generic.KeyValuePair`2>, System.Xml.XPath.IXPathNavigable, System.String ByRef)'.' 

    Per quelli di noi che non vivono all’interno di modelli di costruzione ogni giorno ecco i passaggi che ha funzionato per me:

    Prima trova il modello associato alla tua build (se sai già dove trovarlo, salta un paio di passaggi).

    • Basta fare clic con il pulsante destro del mouse sulla definizione di build e selezionare Edit build definition

    • Seleziona la scheda Process e vedrai il nome del modello (abbastanza probabilmente DefaultTemplate se non lo hai personalizzato). Fai clic con il tasto destro su Show details per vedere il percorso del modello.

    inserisci la descrizione dell'immagine qui

    • Vai alla scheda Home in Team explorer e fai clic su Source control explorer

    inserisci la descrizione dell'immagine qui

    • Trova il file modello e fai doppio clic per modificarlo. Dovrebbe apparire in una vista grafica come questa. Scorri fino a trovare Run MSBuild for Project

    inserisci la descrizione dell'immagine qui

    • Fare clic su questo elemento che mostrerà immediatamente le proprietà

    inserisci la descrizione dell'immagine qui

    • Fai clic sulla piccola icona a destra – non provare e digitarla perché probabilmente esploderà e si bloccherà Visual Studio.

    • Inserisci IN QUOTES il seguente "C:\Program Files (x86)\MSBuild\14.0\bin"

    inserisci la descrizione dell'immagine qui

    ORA PER LA PARTE PIÙ IMPORTANTE

    Per me il Run MSBuild for Project era in DUE posti.

    Quindi ho appena ripetuto i passaggi precedenti in entrambi i punti, e poi dopo aver controllato il file .xaml , la mia build ha funzionato FINALMENTE.

    Potrebbe essere necessario riciclare l’agente / controller dallo strumento TFS.

    inserisci la descrizione dell'immagine qui

    Modifica modifica modello attività msbuild ToolPath su “MSBuild / 14.0 / Bin / MSBuild”

    Vedi risposta di Marson .

    L’utilizzo del modello di processo di build TfvcTemplate.12.xaml con l’argomento di build /tv:14.0 ha funzionato per me.

    usa msbuild aruguments /p:VisualStudioVersion=14.0