MS-Build 2017 “Microsoft.WebApplication.targets” ausente

86

Estou tentando atualizar nosso buildserver (jenkins) do Visual Studio 2015 para 2017. Estamos construindo por meio do MS-Build. Baixei e instalei as ferramentas MS-Buld conforme descrito nesta resposta . Se eu compilar meus projetos, obtenho um erro que Microsoft.WebApplication.targetsnão foi encontrado.

Erro detalhado:

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

Realizei uma busca no diretório 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

Como pode ser visto, o arquivo existe para versões antigas do compilador, mas para a v15.0 ele está ausente.

Também instalei o Visual Studio 2017 no servidor de compilação. O projeto terá sucesso na construção se eu compilar com Visual Studio 2017.

Alguma dica de como resolver esse problema? Uma solução possível é gerar um link simbólico do C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsponto para os arquivos v14.0 antigos (localizados em C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications).

THX

Moerwald
fonte
1
Tive esse problema com um projeto usando VS 2019. Como corrigi-lo foi abrindo o arquivo csproj, identificando a linha <Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets "/> e substituindo por <Import Project =" $ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v $ (VisualStudioVersion) \ WebApplications \ Microsoft.WebApplication.targets "/>
tmutton

Respostas:

130

Parece que você está perdendo a carga de trabalho para "Ferramentas de construção de desenvolvimento da Web": Microsoft.VisualStudio.Workload.WebBuildTools .

Você pode instalá-lo baixando o instalador de ferramentas de construção aqui (VS2017) ou aqui (VS2019) e executando

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

ou abrir vs_buildtools.exee selecionar o componente "Ferramentas de desenvolvimento da Web" na GUI:

captura de tela da GUI

Martin Ullrich
fonte
3
como posso executar este comando, se 'vs_buildtools.exe' não for reconhecido como um erro de comando interno ou externo na ferramenta de desenvolvedor 2017
Developerzzz
26
Se você já baixou o instalador "Build Tools for Visual Studio 2017" ( visualstudio.com/thank-you-downloading-visual-studio/… ), você pode iniciar esse instalador, clicar em Modificar e marcar "Tarefas de compilação de desenvolvimento da Web "caixa de seleção do módulo de carga de trabalho. Em seguida, clique no botão Modificar e deixe o instalador terminar.
Spiralis
Sim, você precisa usar a linha de comando acima para instalar. Você não pode encontrá-lo na GUI.
sky91
4
Instalei Build Tools for Visual Studio 2017com a Web development build taskspartir do link fornecido, porém ele ainda não cria a C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationspasta .. eu também não vejo vs_buildtools.exe.. eu pesquisei todo o `c:`
LP13
1
obrigado ... parece que no VS 2017, o valor de $(MSBuildExtensionsPath)foi alterado para C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild stackoverflow.com/questions/47077150/… isso
LP13
88

A resposta aceita acima é tecnicamente correta, apenas incompleta, um pouco confusa, pelo menos para mim, e precisava de uma etapa extra para fazer o Visual Build Professional funcionar.

  1. vs_buildtools.exe não existe tecnicamente. Tive que criar uma pergunta perguntando onde estava aquele arquivo. Não era óbvio que vs_buildtools.exe é vs_buildtools _ *******. Exe e é o programa de instalação real. Além disso, o "-add ***" mencionado acima é apenas uma abreviação. Pode-se ir para a GUI e verificar as duas tarefas do fluxo de trabalho. Isso faz a mesma coisa. Acabei tendo o arquivo vs_buildtools, embora não precise dele.

  2. O VSB Pro ainda não construiu meu projeto. Eu recebi o mesmo erro acima. O segredo era simplesmente copiar a WebApplicationspasta C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0para C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0. Em seguida, reconstruí o projeto e estava tudo bem. Coloquei o arquivo WebApplication.targets no local esperado.

Por que a Microsoft não poderia ter feito isso está além de mim. Além disso, por que a instalação separada. O VS17 instala uma quantidade enorme de coisas. Build Tools está implícito, como sempre. Tanto faz.

Estou postando esta resposta porque espero que ajude outras pessoas. Eu caí na armadilha e perdi um bom tempo com meu projeto não construindo. Espero que esta resposta esclareça um pouco as coisas.

Sarah Weinberger
fonte
4
Confirmado que "Build Tools for Visual Studio 2017" realmente copia os destinos para C: \ Arquivos de programas (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v15.0 enquanto msbuild realmente tenta localizar os destinos em C : \ Arquivos de programas (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0, portanto, preciso copiar as pastas. Aparentemente, o primeiro é usado pelo IDE e o segundo é usado pelo msbuild autônomo. Estranho.
ZZZ
1
Você não deve copiar nada manualmente. vs_buildtools.exe é apenas o instalador do Visual Studio. Ele ajuda você a instalar o Build Tools ou o Visual Studio. Para ambos, você pode instalar diferentes cargas de trabalho e componentes. Se você deseja instalar a carga de trabalho para Visual Studio, você precisa clicar no botão "Modificar" para isso. Dessa forma, você pode instalar os componentes necessários.
Vladimir Serykh
2
Claro, mas o problema é que o instalador do Visual Studio não parece colocar de forma confiável a pasta WebApplications nos dois locais em que é necessária. A cópia manual, como sugeriu Sarah, é a única maneira que consegui fazer com que as compilações funcionassem de maneira confiável na minha máquina de desenvolvimento.
Bart leu
21

Tive um problema semelhante depois de ter atualizado do Visual Studio 2015 para 2017. Quando tento carregar o projeto de aplicativo da web, ele me lança a mensagem de erro:

O projeto importado "C: \ Arquivos de programas (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets" não foi encontrado. Além disso, tentei localizar "WebApplications \ Microsoft.WebApplication.targets" no (s) caminho (s) de pesquisa de fallback para $ (VSToolsPath) - "C: \ Arquivos de programas (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0". Esses caminhos de pesquisa são definidos em "C: \ Users \ xxx \ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_558e146f \ devenv.exe.config". Confirme se o caminho na declaração está correto e se o arquivo existe no disco em um dos caminhos de pesquisa.

A solução para este erro que encontrei aqui .

No meu caso, o arquivo .csproj continha as seguintes linhas:

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

Depois de substituir o v14.0by v$(VisualStudioVersion)na VSToolPathtag, o projeto pode ser carregado.

Também substituí o v14.0por v10.0na VisualStudioVersiontag, como mostra a solução no link acima. Mas para mim também funcionou deixando-o em 14.0.

Aqui está como essas linhas devem ficar no final:

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

Se você não tiver essas linhas em seu .csproj, será necessário adicioná-las manualmente ANTES desta linha:

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

No meu caso (mensagem de erro ligeiramente diferente, mas mesmo problema) era esta linha:

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

Parece que os projetos criados com as versões do Visual Studio desde 2011 contêm as linhas com o VSToolsPath redefinição, enquanto os arquivos mais antigos não. O Visual Studio nunca os adicionou automaticamente ao atualizar para uma versão mais recente do VS, por isso você deve adicioná-los se não estiverem lá.

Fonte desta informação: https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (clique em Mostrar mais comentários para ver o tópico de discussão completo - infelizmente, não posso criar um link direto para comentários nesta seção "mais".)

Tobias
fonte
11

É fácil instalar as ferramentas de compilação 2017, com a WebBuildToolsopção já incluída, usando chocolate . Depois de instalá- lo, digite o seguinte em um prompt de comando do administrador:

choco install visualstudio2017buildtools -y

Para o VS 2019, é semelhante:

choco install visualstudio2019buildtools -y
Alastairtree
fonte
2
Você não precisa instalar uma versão específica, você pode instalar desta forma usando Chocolatey e incorporar a resposta aceita:cinst visualstudio2017buildtools -params '--add Microsoft.VisualStudio.Workload.WebBuildTools' -y ; cinst microsoft-build-tools -y
brianary
8

Copiar WebApplicationspasta de

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

para

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

Ou em seu script de construção, adicione a seguinte linha antes de compilar

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

Certifique-se de executá-lo com permissões elevadas

adeel41
fonte
3

como criar VS 2017 pro, aplicativo asp.net MVC e construí-lo com Jenkins?

use vs 2017 pro na máquina de desenvolvimento e no servidor de compilação

Verifique se VisualStudio está definido como 15
Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v15.0 \ WebApplications \ Microsoft.WebApplication.targets" Condition = "false"

defina a ferramenta msbuild
como C: \ Arquivos de programas (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ MSBuild.exe no gerenciador de configuração global jenkins

Com jenkins, execute o comando batch do Windows:
retore nugets: "C: \ Arquivos de programas (x86) \ Jenkins \ tools \ nuget \ NuGet.exe" restaure "C: \ Arquivos de programas (x86) \ Jenkins \ workspace \ theapp_build \ theapp. sln "

Com jenkins, execute o lote de comando do Windows:
Arquivo de compilação do MSBuild: theapp.sln
Argumentos da linha de comando: / nologo / t: restore / t: rebuild / p: Configuration = "Debug" /p:VisualStudioVersion=15.0

Viorel Banesaru
fonte
3

Para o VS 2019, corrigi isso copiando:

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

para

C: \ Arquivos de programas (x86) \ MSBuild \ Microsoft \ VisualStudio

mariocatch
fonte
Como obter C: \ Arquivos de programas (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 para VS2019
somegeek
-1

Acabei de usar o Visual Studio Installer para atualizar o Visual Studio Community 2017 , então o problema está resolvido.

Peter Chen
fonte