2014-12-19 12 views
6

Possiedo un'applicazione console VS 2013 che carica qualsiasi file di soluzione (.sln) - compila tutti i progetti al suo interno utilizzando Roslyn ed estrae le informazioni sull'utilizzo dell'API dal modello di compilazione.MSBuildWorkspace.OpenSolutionAsync alla ricerca di destinazioni in Visual Studio/v14.0

Ora mi trovo di fronte a questo problema particolare: quando eseguo l'applicazione da Visual Studio 2013 (utilizzando Ctrl-F5 o F5), tutto funziona correttamente. Sono in grado di compilare materiale ed estrarre tutte le informazioni. Tuttavia quando apro una riga di comando (cmd) e cercare di eseguire questa applicazione Console dal ottengo il seguente errore:

Unhandled Exception: System.AggregateException: One or more errors occurred. ---> Microsoft.Build.Exceptions.InvalidProjectFileException: The imported project " 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Impor 
When I run 

Annotare il v14.0 lì. Perché MSBuildWorkspace tenta di esaminare la directory v14.0 per i file di destinazione richiesti? È perché ho installato gli strumenti MSBuild per CTP e il percorso predefinito mentre eseguo roba da una semplice riga di comando è cambiato?

--Edit-- Ecco l'importazione

<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> 

Tuttavia dubito che a che fare con l'istruzione import in quanto tale. Se eseguo l'app della console .exe dal "Prompt dei comandi dello sviluppatore per Visual Studio 2013", tutto funziona di nuovo bene.

+0

Mostraci il '' s nel tuo file di progetto. – SLaks

+0

Sto colpendo lo stesso problema. Sei mai riuscito a risolvere questo? – ChaseMedallion

+0

Non è una soluzione reale ma, come dici tu, funziona dal prompt dei comandi VS. Come soluzione alternativa, ho creato un file batch che prima chiama "C: \ Programmi (x86) \ Microsoft Visual Studio 12.0 \ VC \ vcvarsall.bat" e quindi l'app funziona correttamente. –

risposta

2

Ho avuto questo problema sul mio server di build. Quando ho preso di mira /tv:14.0 (Tool versione 14.0 che è il motore di Roslyn Build)

Ho risolto uscendo in C: \ Programmi (x86) \ MSBuild \ Microsoft \ VisualStudio quindi creando cartelle come v14.0 \ WebApplications

Sono quindi andato al mio sistema con Microsoft.WebApplication.targets (perché questo è messo da lì fuori da Visual Studio 2015) e copiato quel file nella nuova cartella dei build server.

+0

/p:VisualStudioVersion=11.0 ha funzionato, /p:VisualStudioVersion=12.0 non è riuscito, quindi ho creato una directory v12.0 \ WebApplications copiando il suo contenuto da v11.0 \ WebApplications e la build ha funzionato (non sono sicuro di cosa stia effettivamente facendo lavorato) – Aligma

+0

Visual Studio 2012 è installato sul server di generazione? La versione 12 è in realtà Visual Studio 2013. – DoomVroom

6

È possibile rendere autonomi i propri progetti di applicazione Web e non richiedere la compilazione di Visual Studio 2015 aggiungendo il riferimento NuGet a MSBuild.Microsoft.VisualStudio.Web.targets.

+0

La copia/incolla da una macchina di sviluppo non è una buona soluzione, QUESTA è un'ottima soluzione. – silencedmessage

+0

Ho aggiunto questo riferimento ma ora alcune altre DLL di terze parti sono elencate come "non trovate" o "mancanti". La build in VS2015 funziona bene ma Build server si lamenta di questi riferimenti di terze parti mancanti. Perplexed

Problemi correlati