MS-Build 2017 "Microsoft.WebApplication.targets" manca


86

Sto cercando di aggiornare il nostro buildserver (jenkins) da Visual Studio 2015 al 2017. Stiamo costruendo tramite MS-Build. Ho scaricato e installato gli strumenti MS-Buld come descritto in questa risposta . Se compilo i miei progetti ottengo un errore che Microsoft.WebApplication.targetsnon è stato trovato.

Errore dettagliato:

 error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets"

Ho eseguito una ricerca nella directory MS-Build:

PS C:\Program Files (x86)\MSBuild> dir -Recurse -Filter "Microsoft.WebApplication.targets"


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       11.01.2012     00:23          19654 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       22.07.2013     01:25          19995 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       06.07.2015     21:55          20118 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       22.07.2013     01:25          19995 Microsoft.WebApplication.targets

Come si può vedere il file esiste per le vecchie versioni del compilatore, ma per la v15.0 manca.

Ho anche installato Visual Studio 2017 sul build-server. Il progetto riesce a costruire se compilo con Visual Studio 2017.

Qualche suggerimento su come risolvere questo problema? Una possibile soluzione è generare un collegamento simbolico dal C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationspunto ai vecchi file v14.0 (che si trovano sotto C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications).

Grazie



1
Ho avuto questo problema con un progetto che utilizzava VS 2019. Come l'ho risolto aprendo il file csproj, identificando la riga <Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets "/> e sostituendo con <Import Project =" $ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v $ (VisualStudioVersion) \ WebApplications \ Microsoft.WebApplication.targets "/>
tmutton

Risposte:


130

Sembra che si sta perdendo il carico di lavoro per "strumenti di sviluppo costruire Web": Microsoft.VisualStudio.Workload.WebBuildTools.

Puoi installarlo scaricando il programma di installazione degli strumenti di build da qui (VS2017) o qui (VS2019), quindi eseguendolo

vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools

o aprendo vs_buildtools.exee selezionando il componente "Strumenti di sviluppo Web" nella GUI:

screenshot dalla GUI


3
come posso eseguire questo comando il suo dare 'vs_buildtools.exe' non è riconosciuto come un errore di comando interno o esterno nello strumento per sviluppatori 2017
Developerzzz

26
Se hai già scaricato il programma di installazione "Build Tools for Visual Studio 2017" ( visualstudio.com/thank-you-downloading-visual-studio/… ), puoi avviare il programma di installazione, premere Modifica e selezionare "Attività di compilazione sviluppo Web "casella di controllo del modulo del carico di lavoro. Quindi fare clic sul pulsante Modifica e lasciare che il programma di installazione finisca.
Spiralis

Sì, è necessario utilizzare la riga di comando sopra per installare. Non puoi trovarlo sulla GUI.
sky91

4
Ho installato Build Tools for Visual Studio 2017con Web development build tasksdal collegamento fornito, tuttavia non crea ancora la C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationscartella..non vedo vs_buildtools.exenemmeno .. ho cercato tutto `c:`
LP13

1
thanks..looks piace da VS 2017 il valore di $(MSBuildExtensionsPath)è stato cambiato in C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild stackoverflow.com/questions/47077150/... che
LP13

88

La risposta accettata sopra è tecnicamente corretta solo incompleta, un po 'confusa, almeno per me, e necessitava di un passaggio aggiuntivo per far funzionare Visual Build Professional.

  1. vs_buildtools.exe non esiste tecnicamente. Ho dovuto creare una domanda chiedendo dove fosse quel file. Non era ovvio che vs_buildtools.exe fosse vs_buildtools _ *******. Exe ed è il programma di installazione effettivo. Inoltre il "-add ***" di cui sopra è solo una scorciatoia. Si può andare alla GUI e controllare entrambe le attività del flusso di lavoro. Quello fa la stessa cosa. Ho finito per avere il file vs_buildtools, anche se non ne avevo bisogno.

  2. VSB Pro non ha ancora creato il mio progetto. Ho ricevuto lo stesso errore sopra. La salsa segreta era semplicemente quello di copiare la WebApplicationscartella C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0a C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0. Ho quindi ricostruito il progetto e tutto è andato bene. Ho posizionato il file WebApplication.targets nella posizione prevista.

Perché Microsoft non avrebbe potuto farlo è al di là di me. Inoltre, perché l'installazione separata. VS17 installa un'enorme quantità di cose. Build Tools è implicito, come sempre. Qualunque cosa.

Sto postando questa risposta perché spero che possa aiutare gli altri. Sono caduto nella trappola e ho perso un bel po 'di tempo con il mio progetto non realizzato. Spero che questa risposta chiarisca un po 'le cose.


4
Confermato che "Build Tools for Visual Studio 2017" copia effettivamente le destinazioni in C: \ Programmi (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v15.0 mentre msbuild tenta effettivamente di individuare le destinazioni in C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0, quindi devo copiare le cartelle. Apparentemente il primo è usato da IDE e il secondo è usato da msbuild stand alone. Strano.
ZZZ

1
Non dovresti copiare nulla manualmente. vs_buildtools.exe è solo il programma di installazione di Visual Studio. Ti aiuta a installare Build Tools o Visual Studio. Per entrambi è possibile installare diversi carichi di lavoro e componenti. Se desideri installare il carico di lavoro per Visual Studio, devi fare clic sul pulsante "Modifica". In tal modo è possibile installare i componenti richiesti.
Vladimir Serykh

2
Certo, ma il problema è che il programma di installazione di Visual Studio non sembra mettere in modo affidabile la cartella WebApplications in entrambe le posizioni necessarie. La copia manuale, come suggerito da Sarah, è l'unico modo in cui sono riuscito a far funzionare in modo affidabile le build sulla mia macchina di sviluppo.
Bart ha letto il

21

Ho riscontrato un problema simile dopo aver eseguito l'aggiornamento da Visual Studio 2015 al 2017. Quando provo a caricare il progetto dell'applicazione Web, mi viene visualizzato il messaggio di errore:

Il progetto importato "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets" non è stato trovato. Inoltre, ho provato a trovare "WebApplications \ Microsoft.WebApplication.targets" nei percorsi di ricerca fallback per $ (VSToolsPath) - "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0". Questi percorsi di ricerca sono definiti in "C: \ Users \ xxx \ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_558e146f \ devenv.exe.config". Verificare che il percorso nella dichiarazione sia corretto e che il file esista su disco in uno dei percorsi di ricerca.

La soluzione a questo errore l'ho trovata qui .

Nel mio caso, il file .csproj conteneva le seguenti righe:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0</VSToolsPath>
</PropertyGroup>

Dopo aver sostituito il v14.0by v$(VisualStudioVersion)nel VSToolPathtag, il progetto potrebbe essere caricato.

Ho anche sostituito il v14.0by v10.0nel VisualStudioVersiontag, come mostra la soluzione nel link sopra. Ma per me ha funzionato anche lasciandolo a 14.0.

Ecco come dovrebbero apparire queste righe alla fine:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>

Se non hai queste righe nel tuo .csproj, devi aggiungerle manualmente PRIMA di questa riga:

<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" />

Nel mio caso (messaggio di errore leggermente diverso ma stesso problema) era questa riga:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

Sembra che i progetti creati con le versioni di Visual Studio dal 2011 contengano le righe con la VSToolsPathridefinizione, mentre i file più vecchi no. Visual Studio non li ha mai aggiunti automaticamente durante l'aggiornamento a una versione più recente di VS, motivo per cui dovresti aggiungerli se non sono presenti.

Fonte di queste informazioni: https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (fare clic su Mostra più commenti per vedere l'intero thread di discussione - sfortunatamente non posso collegarmi direttamente ai commenti in questa sezione "altro".)


11

È facile installare gli strumenti di build 2017, con l' WebBuildToolsopzione già inclusa, utilizzando chocolatey . Dopo averlo installato , digita quanto segue in un prompt dei comandi dell'amministratore:

choco install visualstudio2017buildtools -y

Per VS 2019, è simile:

choco install visualstudio2019buildtools -y

2
Non è necessario installare una versione specifica, è possibile installarla in questo modo utilizzando Chocolatey e incorporare la risposta accettata:cinst visualstudio2017buildtools -params '--add Microsoft.VisualStudio.Workload.WebBuildTools' -y ; cinst microsoft-build-tools -y
brianary

8

Copia WebApplicationscartella da

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0

per

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0

Oppure nel tuo script di build aggiungi la seguente riga prima di compilare

Copy-Item "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications" "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications" -Recurse -Force

Assicurati di eseguirlo con autorizzazioni elevate


3

come creare VS 2017 pro, asp.net MVC applicazione e costruirla con Jenkins?

utilizzare vs 2017 pro sia nella macchina di sviluppo che nel server di compilazione

Verifica che VisualStudio sia impostato su 15
Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v15.0 \ WebApplications \ Microsoft.WebApplication.targets" Condition = "false"

imposta lo strumento msbuild
su C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ MSBuild.exe nel gestore di configurazione globale di jenkins

Con jenkins, eseguire il batch di comandi di Windows:
retore nugets: "C: \ Program Files (x86) \ Jenkins \ tools \ nuget \ NuGet.exe" ripristino "C: \ Program Files (x86) \ Jenkins \ workspace \ theapp_build \ theapp. sln "

Con jenkins, esegui il batch di comandi di Windows:
MSBuild Build File: theapp.sln
Argomenti della riga di comando: / nologo / t: restore / t: rebuild / p: Configuration = "Debug" /p:VisualStudioVersion=15.0


3

Per VS 2019, ho risolto questo problema copiando:

C: \ Programmi (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v16.0

per

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


Come ottenere C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 per VS2019
somegeek

-1

Uso solo Visual Studio Installer per aggiornare Visual Studio Community 2017 , quindi il problema è risolto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.