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



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


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.


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".)


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

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


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


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


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.