v11.0 \ WebApplications \ Microsoft.WebApplication.targets non è stato trovato quando il file effettivamente fa riferimento a v10

Prima un po ‘di storia. Alla fine del 2012 abbiamo migrato la nostra soluzione vs2008 a vs2010 ma continuiamo a utilizzare .NET 3.5. (Non conosco altro che l’ultimo e il migliore qui!)

Non abbiamo avuto problemi con questa configurazione fino a poche settimane fa quando le persone hanno iniziato a ricevere questi errori:

"foo.csproj" (Rebuild target) (16:5) -> C:\...\foo.csproj(142,3): error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk. 

La cosa interessante è che se si guarda il file di progetto fa riferimento a V10 che ha senso perché non utilizziamo Visual Studio 2012.

Questo errore ha colpito diversi di noi contemporaneamente e persino su rami di codice meno recenti che non sono stati modificati in mesi.

Sospetto che qualche aggiornamento sia stato spinto sulle nostre macchine che ha confuso le cose ma non so cosa fare al riguardo.

La soluzione a breve termine è stata quella di installare VS 2012 e non usarlo ma spero in qualcosa di più pulito di così.

Mi sono imbattuto nello stesso problema con Visual Studio 2013. Si scopre che stavo usando la vecchia versione di MSBuild – quella fornita con .NET Framework – dalla riga di comando. Microsoft sta ora rilasciando MSBuild come parte di Visual Studio stesso e anche come programma di installazione separato ( http://blogs.msdn.com/b/visualstudio/archive/2013/07/24/msbuild-is-now-part-of- visual-studio.aspx ).

La soluzione era utilizzare la nuova versione di MSBuild.exe che si trova in C:\Program Files (x86)\MSBuild\12.0\Bin . Una volta fatto ciò, tutti gli errori dei bersagli sono scomparsi.

MODIFICA 1

Come menzionato nei commenti, ogni nuova versione di MSBuild porta con sé una nuova directory. Per Visual Studio 2015, utilizzare C:\Program Files (x86)\MSBuild\14.0\Bin .

MODIFICA 2

Come menzionato nei commenti, per Visual Studio 2017, utilizzare C:\Program Files (x86)\Microsoft Visual Studio\2017\\MSBuild\15.0\Bin\MSBuild.exe .

Se si dispone di un build server su cui non è installato VS2012, è ansible risolvere il problema con

a) installazione del pacchetto MSBuild.Microsoft.VisualStudio.Web.targets sulla soluzione e

b) sostituzione di questa riga nel file .csproj:

  

Con questa linea che punta al pacchetto nuget

  

MODIFICARE

Come @joedragons indica che la versione nella riga aggiornata dovrebbe corrispondere alla versione del pacchetto nuget, ovvero sostituire gli targets.11.0.2.1 con targets.xxxx per la versione corrente.

Una soluzione semplice a questo problema:

Vai al seguente percorso:

C: \ Programmi (x86) \ MSBuild \ Microsoft \ VisualStudio

Verrà visualizzata l’ultima versione V10.0, v11.0, v12.0 in base all’installazione di Visual Studio 2010, 2012 o 2013.

Copiare la cartella WebApplications da una delle ultime versioni di directory e incollarla su altro.

I tuoi problemi dovrebbero essere risolti.

Ho scoperto che l’installazione gratuita di Visual Studio 2012 Shell (isolata) installa i file v11 MSBuild di WebApplications. Più leggero di un’installazione completa di Visual Studio 2012 e nessun problema di licenza.

Wow. Abbiamo appena visto accadere la stessa cosa sulla nostra macchina di costruzione. Usiamo VS2010 e target .NET 4.0. I nostri file di progetto importano esplicitamente la versione v10.0 di questi obiettivi. Senza modifiche al codice, ieri la build andava bene e oggi non funziona con un reclamo su una versione v11.0 mancante. .NET Framework 4.5.1 è stato installato / aggiornato ieri sera su questo computer di costruzione come aggiornamento automatico. Forzeremo la v10.0 con il parametro (o la variabile ENV), ma questo ci ha sicuramente colto di sorpresa …

AGGIORNAMENTO: Ciò che è ancora più strano, è che sembra essere il caso che la versione odierna di msbuild sembra utilizzare la prima riga del file sln per determinare quale VisualStudioVersion utilizzare per impostazione predefinita, mentre la versione di ieri non ha:

 Format Version 12.00 

Abbiamo provato a cambiare manualmente questo alle 11.00 e la build ha iniziato a funzionare di nuovo.

Nel nostro caso, anche se stiamo prendendo di mira e costruendo tutto per il 2010 / 4.0, alcuni sviluppatori si sono preparati per VS2012 (poiché MS ha affermato che i file di progetto sono compatibili) e questa particolare soluzione è stata salvata l’ultima volta (mesi fa) in VS2012. Prima di oggi, questo non stava causando un problema.

Ho avuto lo stesso problema. Risolto passando attraverso le soluzioni sopra elencate. Il problema è causato dal fatto che la versione appropriata di Visual Studio Tools (BuildTools) non è disponibile sul server Build. Come giustamente sottolineato sopra, questo può essere risolto installando BuildTools ma non è l’opzione nel mio caso.

Ecco un’altra alternativa: usa Nuget

 Install-Package MSBuild.Microsoft.VisualStudio.Web.targets -Version 14.0.0.3 

Identifica il progetto di avvio e installa i web.targets in base alla versione di Visual Studio utilizzata. Verranno modificati i seguenti file che includono le modifiche richieste

In packages.config:

  

In .csproj:

  

Spero che questo ti aiuti!!! In bocca al lupo,

Saluti,

Pavan

Hack, ma risolto copiando: c: \ Programmi (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications *. * In c: \ Programmi (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ applicazioni web *. *

Ho ricevuto questo errore alla fine di novembre senza apportare alcuna modifica alla configurazione dell’installazione di TeamCity o dell’installazione di MSBuild o del codice sorgente. Sul mio server di compilazione, Visual Studio non è nemmeno installato e la modifica da VS2010 a VS2012 è stata apportata alla fine di agosto senza problemi al momento.

La mia versione MSBuild è 4.0.30319.18408, il mio build server è un Windows Server 2008 R2 SP1 con TeamCity v6.5.3.

Ho risolto il problema semplicemente copiando la cartella v11 da un altro server di build che non era interessato.

La mia ipotesi è che questo potrebbe essere successo in due modi:

  1. È stato aggiornato qualcosa che ha triggersto la cancellazione della cartella v11. Potrebbe essere un aggiornamento di Windows a .NET o qualcosa del genere?

  2. È stato aggiornato qualcosa che ha cambiato la configurazione di TeamCity / MSBuild dall’uso di v10 a v11 e le build smettono di funzionare poiché la v11 non è mai esistita.

Ho un aggiornamento a .NET Framework 4.5.1 il 3 dicembre, potrebbe essere questo il motivo?

Con rispetto

Jonas

Di recente sono rimasto bloccato con lo stesso problema. E la mia conclusione è che ogni versione di VS (v10, v11, v12) cambia il percorso della variabile build, come MSBuildBinPath .

Quindi specificare la versione esatta di VS non è un trucco, perché potresti non avere nemmeno la versione appropriata dei file installati. Quindi, è meglio specificare un parametro e utilizzare gli obiettivi esistenti sulla macchina.

In alcuni rari casi potrebbe essere necessario installare una versione specifica del pacchetto VS e Web Deploy. Nel mio caso bastava la versione per risolvere il problema.

È ansible aggiungere la proprietà VisualStudioVersion in questo modo:

   Configuration=$(BuildConfiguration);WarningLevel=0;VisualStudioVersion=12.0    

Mentre stavo cercando come risolvere questo, quasi tutti consigliano di copiare la cartella MSBUILD mancante o installare alcuni SDK di alcune versioni.

Fortunatamente, ho trovato questo post incredibilmente utile di Donovan Brown: http://donovanbrown.com/post/So-sick-of-MicrosoftWebApplicationtargets-was- no-found-build- errors!

In poche parole, l’idea è di configurare la versione di VisualStudio che la tua build dovrebbe usare nella tua definizione di build:

Tasto destro -> “Modifica definizione build …”

Vai a “Procss” -> “3. Avanzate”

e impostare “Argomenti MSBuild” con

 /p:VisualStudioVersion=12.0