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


86

Derleme sunucumuzu (jenkins) Visual Studio 2015'ten 2017'ye yükseltmeye çalışıyorum. MS-Build aracılığıyla oluşturuyoruz. Bu cevapta açıklandığı gibi MS-Buld araçlarını indirip yükledim . Projelerimi derlersem Microsoft.WebApplication.targets, bulunamayan bir hata alırım .

Ayrıntılı hata:

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

MS-Build dizininde bir bulma gerçekleştirdim:

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

Görüldüğü gibi dosya eski derleyici sürümleri için mevcuttur, ancak v15.0 için eksiktir.

Ayrıca derleme sunucusuna Visual Studio 2017 yükledim. Visual Studio 2017 ile derlersem proje derlemeyi başarır.

Bu sorunun nasıl çözüleceğine dair herhangi bir ipucu var mı? Olası bir çözüm, C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsnoktadan eski v14.0 dosyalarına (altında bulunur C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications) sembolik bir bağlantı oluşturmaktır .

Teşekkür



1
VS 2019 kullanan bir projede bu sorunu yaşadım. <Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets satırını belirleyerek csproj dosyasını açarak sorunu nasıl düzelttim "/> ve <Import Project =" $ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v $ (VisualStudioVersion) \ WebApplications \ Microsoft.WebApplication.targets "/> ile değiştiriliyor
tmutton

Yanıtlar:


130

Dış görünüş "Web geliştirme Yapım araçları" için iş yükünü eksik gibi: Microsoft.VisualStudio.Workload.WebBuildTools.

Derleme araçları yükleyicisini buradan (VS2017) veya buradan (VS2019) indirip ardından çalıştırarak kurabilirsiniz.

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

veya vs_buildtools.exeGUI'de "Web geliştirme oluşturma araçları" bileşenini açıp seçerek:

GUI'den ekran görüntüsü


3
onun vererek 'vs_buildtools.exe' 2017 geliştirici aracında iç ya da dış komut hatası olarak kabul edilmez nasıl ben bu komutu çalıştırabilirsiniz
Developerzzz

26
"Visual Studio 2017 için Oluşturma Araçları" yükleyicisini ( visualstudio.com/thank-you-downloading-visual-studio/… ) zaten indirdiyseniz, bu yükleyiciyi başlatabilir, Değiştir'e tıklayabilir ve "Web geliştirme oluşturma görevleri "iş yükü modülü onay kutusu. Ardından Değiştir düğmesine tıklayın ve yükleyicinin bitirmesine izin verin.
Spiralis

Evet, yüklemek için yukarıdaki komut satırını kullanmanız gerekir. GUI'de bulamıyorsunuz.
sky91

4
Sağlanan bağlantıdan yükledim Build Tools for Visual Studio 2017, Web development build tasksancak yine C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsde vs_buildtools.exe
klasör

1
teşekkürler.. VS 2017'den itibaren değeri stackoverflow.com/questions/47077150/…$(MSBuildExtensionsPath) olarak değiştirilmiş gibi görünüyorC:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild
LP13

88

Yukarıdaki kabul edilen cevap teknik olarak doğru, sadece eksik, biraz kafa karıştırıcı, en azından benim için ve Visual Build Professional'ı çalıştırmak için fazladan bir adım gerekiyordu.

  1. vs_buildtools.exe teknik olarak mevcut değil. Ben zorunda oluşturmak o dosya bir soru sorabilir. Vs_buildtools.exe'nin vs_buildtools _ *******. Exe olduğu ve gerçek kurulum programı olduğu açık değildi. Ayrıca yukarıda bahsedilen "-add ***" sadece bir kısaltmadır. GUI'ye gidip her iki iş akışı görevini de kontrol edebilirsiniz. Bu aynı şeyi yapar. İhtiyacım olmasa da vs_buildtools dosyasına sahip oldum.

  2. VSB Pro hala projemi oluşturmadı. Aynı hatayı yukarıda buldum. Gizli sos kopyalamak için basitçe WebApplicationsklasörü C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0için C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0. Daha sonra projeyi yeniden inşa ettim ve her şey yolundaydı. WebApplication.targets dosyasını beklenen konuma yerleştirdim.

Microsoft bunu neden yapamazdı benden daha fazlası. Ayrıca niye ayrı kurulum. VS17, muazzam miktarda malzeme yükler. Derleme Araçları her zaman olduğu gibi ima edilir. Her neyse.

Bu cevabı başkalarına yardımcı olacağını umuyorum. Tuzağa düştüm ve projemin inşa edilmemesi nedeniyle epey zaman kaybettim. Umarım bu cevap işleri biraz aydınlatır.


4
"Visual Studio 2017 için Oluşturma Araçları" nın aslında hedefleri C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v15.0'a kopyaladığı, msbuild ise C'deki hedefleri bulmaya çalıştığı doğrulandı : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0, bu yüzden klasörleri kopyalamam gerekiyor. Görünüşe göre ilki IDE tarafından kullanılıyor ve ikincisi bağımsız msbuild tarafından kullanılıyor. Garip.
ZZZ

1
Hiçbir şeyi manuel olarak kopyalamamalısınız. vs_buildtools.exe yalnızca Visual Studio Yükleyicisidir. Build Tools veya Visual Studio kurmanıza yardımcı olur. Her ikisi için de farklı iş yükleri ve bileşenler kurabilirsiniz. Visual Studio için iş yükü yüklemek isterseniz, bunun için "Değiştir" düğmesine tıklamanız gerekir. Bu şekilde gerekli bileşenleri kurabilirsiniz.
Vladimir Serykh

2
Elbette, ancak sorun şu ki, Visual Studio yükleyicisi WebApplications klasörünü ihtiyaç duyduğu her iki konuma da güvenilir bir şekilde yerleştirmiyor. El ile kopyalama, Sarah'nın önerdiği gibi, geliştirme makinemde güvenilir bir şekilde yapıları çalıştırmayı başarabilmemin tek yoluydu.
Bart

21

Visual Studio 2015'ten 2017'ye yükselttikten sonra benzer bir sorunla karşılaştım. Web uygulaması projesini yüklemeye çalıştığımda, bana şu hata mesajını attı:

İçe aktarılan "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets" projesi bulunamadı. Ayrıca, $ (VSToolsPath) - "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0" için yedek arama yollarında "WebApplications \ Microsoft.WebApplication.targets" bulmaya çalışıldı. Bu arama yolları "C: \ Users \ xxx \ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_558e146f \ devenv.exe.config" içinde tanımlanmıştır. Bildirimdeki yolun doğru olduğunu ve dosyanın diskte arama yollarından birinde bulunduğunu onaylayın.

Burada bulduğum bu hatanın çözümü .

Benim durumumda, .csproj dosyası aşağıdaki satırları içeriyordu:

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

Değiştirdikten sonra v14.0tarafından v$(VisualStudioVersion)içinde VSToolPathetiketi, proje yüklenemedi.

Ben de yerini v14.0tarafından v10.0içinde VisualStudioVersionyukarıdaki bağlantı gösterir çözüm olarak, etiket. Ama benim için 14.0'da bırakarak da işe yaradı.

İşte sonunda bu satırların nasıl görünmesi gerektiği:

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

.Csproj dosyanızda bu satırlar yoksa, bunları bu satırdan ÖNCE elle eklemeniz gerekir:

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

Benim durumumda (biraz farklı hata mesajı ama aynı sorun) bu satırdı:

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

Görünüşe göre 2011'den beri Visual Studio sürümleriyle oluşturulan projeler VSToolsPathyeniden tanımlamaya sahip satırları içerirken eski dosyalar içermiyordu. Visual Studio, daha yeni bir VS sürümüne yükseltirken bunları hiçbir zaman otomatik olarak eklemedi; bu nedenle, yoksa onları eklemelisiniz.

Bu bilgilerin kaynağı: https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (tıklayın gösterisi tam tartışma dizisini görmek için daha fazla yorum - maalesef bu "daha fazla" bölümündeki yorumlara doğrudan bağlantı veremiyorum.)


11

O ile 2017 build araçları yüklemek kolaydır WebBuildToolsseçenek zaten kullanılarak dahil chocolatey . Eğer sonra yüklü bunu istemi bir yönetici komutunda şunları yazın:

choco install visualstudio2017buildtools -y

VS 2019 için benzer:

choco install visualstudio2019buildtools -y

2
Belirli bir sürümü yüklemeniz gerekmez, Chocolatey'i kullanarak bu şekilde kurabilir ve kabul edilen yanıtı birleştirebilirsiniz:cinst visualstudio2017buildtools -params '--add Microsoft.VisualStudio.Workload.WebBuildTools' -y ; cinst microsoft-build-tools -y
brianary

8

WebApplicationsKlasörü şuradan kopyala :

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

-e

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

Veya derleme komut dosyanıza derlemeden önce aşağıdaki satırı ekleyin

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

Yükseltilmiş izinlerle çalıştırdığınızdan emin olun


3

VS 2017 pro, asp.net MVC uygulaması nasıl oluşturulur ve Jenkins ile nasıl oluşturulur?

hem geliştirme makinesinde hem de derleme sunucusunda vs 2017 pro kullanın

VisualStudio'nun 15
Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v15.0 \ WebApplications \ Microsoft.WebApplication.targets" Koşul = "false" olarak ayarlandığını kontrol edin


jenkins genel yapılandırma yöneticisinde msbuild aracını C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ MSBuild.exe olarak ayarlayın

Jenkins ile, windows komutunu çalıştırın batch:
retore nugets: "C: \ Program Files (x86) \ Jenkins \ tools \ nuget \ NuGet.exe" restore "C: \ Program Files (x86) \ Jenkins \ workspace \ theapp_build \ theapp. sln "

Jenkins ile, windows komut toplu işlemini yürütün:
MSBuild Derleme Dosyası: theapp.sln
Komut Satırı Bağımsız Değişkenleri: / nologo / t: restore / t: rebuild / p: Configuration = "Debug" /p:VisualStudioVersion=15.0


3

VS 2019 için bunu kopyalayarak düzelttim:

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

-e

C: \ Program Dosyaları (x86) \ MSBuild \ Microsoft \ VisualStudio


VS2019 için C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 nasıl edinilir
somegeek

-1

Visual Studio Community 2017'yi güncellemek için sadece Visual Studio Installer kullanıyorum , ardından sorun çözüldü.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.