v11.0 \ WebApplications \ Microsoft.WebApplication.targets, dosya gerçekten v10'a başvururken bulunamadı


84

Önce biraz arka plan. 2012'nin sonunda vs2008 çözümümüzü vs2010'a taşıdık ancak yine de .NET 3.5'i hedefliyoruz. (Buradaki en son ve en büyüğünden başka hiçbir şey bilmiyorum!)

Birkaç hafta önce, insanlar bu hataları almaya başladığında bu kurulumla ilgili herhangi bir sorun yaşamadık:

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

İlginç olan şey, proje dosyasına bakarsanız, v10'a başvurmasıdır ki bu mantıklıdır çünkü Visual Studio 2012 kullanmıyoruz.

Bu hata birçoğumuza aynı anda ve hatta aylardır değişmeyen eski kod dallarında bile çarptı.

Makinelerimize bazı şeyleri karıştıran bazı güncellemelerin yapıldığından şüpheleniyorum ama bu konuda ne yapacağımı bilmiyorum.

Kısa vadeli çözüm VS 2012'yi kurmak ve kullanmamaktı, ancak bundan biraz daha temiz bir şey umuyorum.


17
MSBuild komut satırına "/p:VisualStudioVersion=10.0" eklemenin bunu ortadan kaldırdığını buldum ama yine de bir hack gibi geliyor.
drs9222

Yanıtlar:


116

Visual Studio 2013 ile aynı sorunla karşılaştım. Anlaşılan MSBuild'in eski sürümünü - .NET Framework ile birlikte gelen sürümü - komut satırından kullanıyordum. Microsoft şimdi MSBuild'i Visual Studio'nun bir parçası olarak ve ayrıca ayrı bir yükleyici olarak yayınlıyor ( http://blogs.msdn.com/b/visualstudio/archive/2013/07/24/msbuild-is-now-part-of- visual-studio.aspx ).

Çözüm, içinde bulunan MSBuild.exe'nin yeni sürümünü kullanmaktı C:\Program Files (x86)\MSBuild\12.0\Bin. Bunu yaptıktan sonra, tüm hedef hataları kayboldu.

DÜZENLE 1

Yorumlarda belirtildiği gibi, MSBuild'in her yeni sürümü beraberinde yeni bir dizin getirir. Visual Studio 2015 için C:\Program Files (x86)\MSBuild\14.0\Bin.

DÜZENLEME 2

Yorumlarda belirtildiği gibi, Visual Studio 2017 için C:\Program Files (x86)\Microsoft Visual Studio\2017\<Edition>\MSBuild\15.0\Bin\MSBuild.exe.


1
TeamCity forumunda yeni yolu dahil etmek için bir istek gönderdim (NuGet ayarlarının nasıl işlendiğine dair). Umarım bunu çabucak halletirler.
David Peden

1
Blog gönderisindeki ayrı araçların indirilmesine doğrudan bağlantı artık geçerli değildir. Doğru bağlantı: microsoft.com/en-us/download/details.aspx?id=40760 .
David Peden

1
Ve tıpkı bunun gibi, Jetbrains 8.0.5 sürümü ile kurtarmaya geliyor. Resmi blog yayını: teamcitydev.blogspot.com/2013/11/…
David Peden

1
Yerel Powershell derleme komut dosyalarınız varsa, basitçe yolunuza ekleyebilirsiniz: $env:Path = $env:Path + ";C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications"ve v4 msbuild'i kullanabilirsiniz (Bunu yapı kutunuzda da yapabilirsiniz)
Chris S

4
Evet! Teşekkürler - bu doğru çözüm.
Josh M.

53

VS2012 kurulu olmayan bir yapı sunucunuz varsa, bunu şu şekilde düzeltebilirsiniz:

a) MSBuild.Microsoft.VisualStudio.Web.targets paketini çözümünüze yüklemek ve

b) .csproj dosyasındaki bu satırı değiştirmek:

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

Bu çizgi nuget paketini işaret ederken

<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" Condition="true" />

DÜZENLE

@Joedragons, güncellenmiş satırdaki sürümün nuget paket sürümüyle eşleşmesi gerektiğini belirttiği gibi, yani mevcut sürüm için targets.11.0.2.1ile değiştirin targets.x.x.x.x.


1
Aynı şekilde harika bir tavsiye!
Kevin Obee

2
Teşekkürler, harika çözüm
Pavel

1
Belli olabilir, ancak değiştirdiğiniz satır, yüklediğiniz paketin sürümünü içermelidir. Yüklediğim 12.0.4 idi, bu yüzden yedek içe aktarımı koyduğumda aynı hatayı aldım. Web.targets.12.0.4 \ ... 'a geçtiğimde hepsi iyi =) Çok teşekkürler!
joedragons

2
Artık bu cevabın b kısmına ihtiyacınız yok. Bazı nedenlerden ötürü SO, gereksiz ayrıntıları kaldırmak için düzenlememi reddetti.
bbodenmiller

1
teşekkürler MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3
Ahmed Samir

23

Bu soruna basit bir çözüm:

Aşağıdaki yola gidin:

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

Visual Studio 2010, 2012 veya 2013 kurulumunuza bağlı olarak en son sürüm V10.0, v11.0, v12.0'ı göreceksiniz.

Kopya WebApplicationsdiğerine son sürümü dizinin ya yapıştırın gelen klasörü.

Sorunlarınız çözülmelidir.


1
Bu IMO en iyi ve basit çözüm :)
gideon

Tabii ki, bunu yapı sunucusunda yapmak için gerçekten erişiminizin olmasını gerektirir.
Dave

1
... ama bunu neden elle yapmak zorundayız? Teşekkürler .. bu benim için VS21017'de düzeltildi (Benim için sadece VS2017 ile yeni kurulumdu - Şimdi sanırım IIS'yi henüz kurmadığım içindir)
Piotr Kula

V14.0'a kopyalarken de çalışır.
Uwe Keim


8

Vay. Aynı şeyin yapım makinemizde de olduğunu gördük. VS2010 kullanıyoruz ve .NET 4.0'ı hedefliyoruz. Proje dosyalarımız bu hedeflerin v10.0 sürümünü açıkça içe aktarır. Kodda hiçbir değişiklik yapılmadan, dün yapı iyiydi ve bugün eksik bir v11.0 sürümü ile ilgili bir şikayet nedeniyle başarısız oluyor. .NET Framework 4.5.1, dün gece bu derleme makinesine otomatik bir güncelleme olarak yüklendi / güncellendi. V10.0'ı parametre (veya ortam değişkeni) ile zorlayacağız, ancak bu kesinlikle bizi şaşırttı ...

GÜNCELLEME: Daha da garip olan şey, bugünün msbuild sürümünün varsayılan olarak hangi VisualStudioVersion'ın kullanılacağını belirlemek için sln dosyasının ilk satırını kullanıyor gibi görünmesi, oysa dünkü sürümün kullanmadığı görülüyor:

Format Version 12.00

Bunu 11.00 olarak değiştirmeyi manuel olarak test ettik ve yapı yeniden çalışmaya başladı.

Bizim durumumuzda, 2010 / 4.0 için her şeyi hedefliyor ve oluşturuyor olsak da, bazı geliştiriciler VS2012 için hazırlanıyor (MS proje dosyalarının uyumlu olduğunu iddia ettiğinden beri) ve bu özel çözüm en son (aylar önce) VS2012. Bugünden önce bu bir soruna neden olmuyordu.


1
Bu bana, tamamen farklı bir durumla ilgili görünen en yüksek oyu alan cevaptan çok daha fazla yardımcı oldu.
LambdaCruiser

Aynı burada @LambdaCruiser bu cevap çok yardımcı oldu. .Sln dosyamın geçmişine baktım ve 2. satırın # Visual Studio 2010ilk satırın bitmesine rağmen Format Version 12.00, bir aşamada vs2012'ye yükselttiğimde olduğu gibi ilk satırı okudum , ancak vs2010'a gidip geldim. Wayne gibi bu sorun da CI sunucusunda Windows güncellemesini çalıştırdıktan sonra oluştu
wal

6

Ben de aynı sorunu yaşadım. Yukarıda listelenen çözümlerden geçilerek düzeltildi. Sorun, Visual Studio Araçları'nın (BuildTools) uygun sürümünün Derleme sunucusunda kullanılamaması nedeniyle ortaya çıkar. Yukarıda haklı olarak işaret edildiği gibi, bu, BuildTools yüklenerek çözülebilir, ancak benim durumumda bu seçenek bu değildir.

İşte başka bir alternatif - Nuget'i kullanın

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

Başlangıç ​​projesini belirleyin ve kullanılan Visual Studio sürümüne göre web.targets'ı yükleyin. Gerekli değişiklikleri içeren aşağıdaki dosyalar değiştirilecektir

Package.config içinde:

<package id="MSBuild.Microsoft.VisualStudio.Web.targets" version="14.0.0.3" targetFramework="net45" />

.Csproj içinde:

<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props" Condition="Exists('..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props')" />

Bu yardımcı olur umarım!!! İyi şanslar,

Şerefe,


1
Mükemmel cevap - csproj dosyasıyla maymunlaşma veya derleme sunucusunda bir şeyler kopyalama ihtiyacını ortadan kaldırır. Visual Studio ve MSBuild 2017'nin birden çok sürümünde çalıştım. "WebApplication.targets" satırını manuel olarak kaldırdım - nuget otomatik olarak kaldırmadı.
Gedas Kutka

3

Hack, ancak kopyalayarak çözüldü: c: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications *. * To c: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \Web uygulamaları*.*


1

Bu hatayı Kasım sonunda TeamCity kurulumumun konfigürasyonunda veya MSBuild kurulumunda veya kaynak kodunda herhangi bir değişiklik yapmadan aldım. Derleme sunucumda Visual Studio yüklü bile değil ve VS2010'dan VS2012'ye geçiş Ağustos sonunda herhangi bir sorun olmadan yapıldı.

MSBuild sürümüm 4.0.30319.18408, derleme sunucum TeamCity v6.5.3 ile bir Windows Server 2008 R2 SP1.

Verileni, etkilenmemiş olan başka bir yapı sunucusundan v11 klasörünü kopyalayarak çözdüm.

Tahminimce bu iki şekilde gerçekleşmiş olabilir:

  1. V11 klasörünün silinmesini tetikleyen bir şey güncellendi. .NET için Windows Güncellemesi veya başka bir şey olabilir mi?

  2. TeamCity / MSBuild yapılandırmamı v10 kullanmaktan v11'e değiştiren bir şey güncellendi ve v11 hiçbir zaman var olmadığı için derlemeler çalışmayı durdurdu.

3 Aralık'ta .NET Framework 4.5.1 güncellemem var, nedeni bu olabilir mi?

Brgds

Jonas


0

Geçenlerde aynı problemle sıkışıp kaldım. Ve sonucum, VS'nin her sürümünün (v10, v11, v12) derleme değişkeninin yolunu değiştirmesidir,MSBuildBinPath .

Dolayısıyla, VS'nin tam sürümünü belirtmek bir hack değildir, çünkü yüklü dosyaların uygun sürümlerine bile sahip olmayabilirsiniz. Bu nedenle, bir parametre belirlemeniz ve makinenizde bulunan hedefleri kullanmanız daha iyi olur.

Bazı nadir durumlarda, VS ve Web Dağıtımı paketinin belirli bir sürümünü yüklemeniz gerekebilir. Benim durumumda sadece sürüm sorunu çözmek için yeterliydi.


0

VisualStudioVersion özelliğini şu şekilde ekleyebilirsiniz:

<ItemGroup>
  <ProjectToBuild Include="$(MSBuildProjectDirectory)\..\MySolution.sln">
    <Properties>Configuration=$(BuildConfiguration);WarningLevel=0;VisualStudioVersion=12.0</Properties>
  </ProjectToBuild>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)" Targets="Rebuild"/>

0

Bunu nasıl çözeceğimi araştırırken, neredeyse herkes ya eksik MSBUILD klasörünü kopyalamayı ya da bazı sürümlerin bazı SDK'larını yüklemeyi önerdi.

Neyse ki, Donovan Brown tarafından yazılan bu son derece yararlı gönderiyi buldum: http://donovanbrown.com/post/So-sick-of-MicrosoftWebApplicationtargets-was-not-found-build-errors!

Özetle, fikir, derlemenizin Derleme Tanımınızda kullanması gereken VisualStudio sürümünü yapılandırmaktır:

Sağ Tık -> "Yapı Tanımını Düzenle ..."

"Procss" -> "3. Advanced" e gidin.

ve "MSBuild Bağımsız Değişkenleri" ni ayarlayın

/p:VisualStudioVersion=12.0

VS2019
Laser42
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.