Pertama beberapa latar belakang. Pada akhir tahun 2012 kami bermigrasi kami vs2008 solusi untuk vs2010 tapi kami masih target .NET 3.5. (Aku tahu apa-apa tapi yang terbaru dan terbaik di sini!)
Kami tidak't memiliki masalah dengan setup ini sampai beberapa minggu yang lalu ketika orang-orang mulai mendapatkan kesalahan ini:
"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.
Hal yang menarik adalah bahwa jika anda melihat file proyek itu referensi v10 yang masuk akal karena kita don't menggunakan Visual Studio 2012.
Kesalahan ini melanda beberapa dari kita sekaligus dan bahkan pada yang lebih tua kode cabang yang belum't berubah di bulan.
Saya menduga beberapa pembaruan harus didorong ke mesin-mesin kami yang bingung hal-hal tapi aku don't tahu apa yang harus dilakukan tentang hal itu.
Jangka pendek solusi telah menginstal LEBIH baik dari tahun 2012 dan tidak menggunakannya, tapi saya'm berharap untuk sesuatu yang sedikit lebih bersih dari itu.
Aku berlari ke dalam masalah yang sama dengan Visual Studio 2013. Ternyata saya masih menggunakan versi lama dari MSBuild--salah satu yang kapal dengan .NET Framework--dari baris perintah. Microsoft kini merilis MSBuild sebagai bagian dari Visual Studio itu sendiri dan juga sebagai terpisah installer (http://blogs.msdn.com/b/visualstudio/archive/2013/07/24/msbuild-is-now-part-of-visual-studio.aspx).
Solusinya adalah menggunakan versi baru dari MSBuild.exe terletak di C:\Program Files (x86)\MSBuild\12.0\Bin
. Setelah saya melakukan itu, semua target kesalahan menghilang.
EDIT 1
Seperti yang disebutkan di komentar, setiap versi baru dari MSBuild membawa sebuah direktori baru. Untuk Visual Studio 2015, gunakan C:\Program Files (x86)\MSBuild\14.0\Bin
.
EDIT 2
Seperti yang disebutkan di komentar, untuk Visual Studio 2017, gunakan C:\Program Files (x86)\Microsoft Visual Studio\2017\<Edisi>\MSBuild\15.0\Bin\MSBuild.exe
.
Jika anda telah membangun server yang tidak memiliki VS2012 diinstal, anda dapat memperbaiki hal ini dengan
a) memasang MSBuild.Microsoft.VisualStudio.Web.target paket untuk solusi anda, dan
b) mengganti baris ini di .csproj file:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
Dengan baris ini menunjuk ke paket nuget
<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" Condition="true" />
EDIT
Seperti @joedragons poin keluar dalam versi yang diperbarui garis harus sesuai dengan paket nuget versi, yaitu mengganti target.11.0.2.1
dengan target.x.x.x.x
untuk versi saat ini.
Sebuah solusi sederhana untuk masalah ini:
Pergi ke jalan berikut:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio
Anda akan melihat versi terbaru V10.0, v11.0, v12.0 tergantung pada Visual Studio 2010, 2012 atau 2013 install.
Copy WebApplications
folder dari salah satu versi paling terbaru dan paste ke direktori lain.
Masalah anda akan teratasi.
I've menemukan bahwa menginstal gratis Visual Studio 2012 Shell (Terisolasi) menginstal WebApplications v11 MSBuild file. Lebih ringan dari yang penuh menginstal Visual Studio 2012 dan tidak ada perizinan kekhawatiran.
Wow. Kita hanya melihat hal yang sama terjadi pada kami membangun mesin. Kami menggunakan VS2010 dan target .NET 4.0. Proyek kami file secara eksplisit impor v10.0 versi dari target tersebut. Dengan tidak ada perubahan kode, kemarin membangun baik-baik saja dan hari ini's gagal dengan keluhan tentang hilang v11.0 versi. Yang .NET Framework 4.5.1 mendapat diinstal/diperbarui terakhir pada malam ini membangun mesin sebagai update otomatis. Kami're akan memaksa v10.0 dengan parameter (atau env. variabel), tapi hal ini tentu mengejutkan kami...
UPDATE: Apa's bahkan lebih aneh, adalah bahwa hal itu tampaknya menjadi kasus bahwa hari ini's versi msbuild tampaknya akan menggunakan baris pertama dari sln file untuk menentukan VisualStudioVersion untuk menggunakan secara default, padahal kemarin's versi tidak:
Format Version 12.00
Kami menguji secara manual mengubah ini untuk 11.00 dan membangun mulai bekerja lagi.
Dalam kasus kami, meskipun kami're menargetkan bangunan dan segala sesuatu untuk 2010/4.0, beberapa pengembang sudah bersiap-siap untuk VS2012 (sejak MS mengaku bahwa proyek file yang kompatibel), dan khusus ini solusi terakhir disimpan (bulan lalu) di VS2012. Sebelum hari ini, itu bukan't menyebabkan masalah.
Saya memiliki masalah yang sama. Tetap dengan pergi melalui tercantum di atas solusi. Masalah ini disebabkan karena sesuai versi dari Visual Studio Tools (BuildTools) tidak tersedia pada Membangun server. Seperti yang dengan tepat menunjuk di atas, hal ini dapat diatasi dengan memasang BuildTools tapi bukan opsi dalam kasus saya.
Berikut ini adalah alternatif lain menggunakan Nuget
Install-Package MSBuild.Microsoft.VisualStudio.Web.targets -Version 14.0.0.3
Mengidentifikasi start up proyek dan Menginstal web.target yang berbasis pada versi Visual studio yang digunakan. Berikut file yang akan dimodifikasi yang meliputi perubahan yang diperlukan
Dalam paket.config:
<package id="MSBuild.Microsoft.VisualStudio.Web.targets" version="14.0.0.3" targetFramework="net45" />
Di .csproj:
<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')" />
Harap ini membantu!!! Good Luck,
Cheers,
Aku punya kesalahan ini di akhir November tanpa membuat perubahan apapun untuk konfigurasi saya TeamCity instalasi atau Masalah instalasi atau kode sumber. Saya membangun server Visual Studio isn't bahkan diinstal, dan perubahan dari VS2010 untuk VS2012 dibuat di akhir agustus tanpa masalah pada saat itu.
Saya MSBuild versi 4.0.30319.18408, saya membangun server adalah Windows Server 2008 R2 SP1 dengan TeamCity v6.5.3.
Aku memecahkan dikeluarkan dengan hanya menyalin v11-folder dari yang lain membangun server yang terpengaruh.
Dugaan saya adalah bahwa ini bisa terjadi dalam dua cara:
Sesuatu yang telah diperbarui yang memicu penghapusan v11-folder. Mungkinkah Windows Update .NET atau sesuatu?
Sesuatu yang telah diperbarui yang berubah saya TeamCity/MSBuild konfigurasi dari menggunakan v10 untuk v11 dan membangun berhenti bekerja sebagai v11 tidak pernah ada.
I've mendapat update untuk .NET Framework 4.5.1 pada December 3rd, itu bisa menjadi alasan?
Brgds
Jonas
Anda dapat menambahkan VisualStudioVersion properti seperti ini:
<ItemGroup>
<ProjectToBuild Include="$(MSBuildProjectDirectory)\..\MySolution.sln">
<Properties>Configuration=$(BuildConfiguration);WarningLevel=0;VisualStudioVersion=12.0</Properties>
</ProjectToBuild>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)" Targets="Rebuild"/>
Saat aku sedang mencari cara untuk memecahkan satu ini, hampir semua orang dianjurkan untuk copy yang hilang MSBUILD folder atau menginstal beberapa SDK dari beberapa versi.
Untungnya, saya've ditemukan ini awesomely membantu posting oleh Donovan Coklat : http://donovanbrown.com/post/So-sick-of-MicrosoftWebApplicationtargets-was-not-found-build-errors!
Singkatnya, ide ini adalah untuk mengkonfigurasi VisualStudio versi anda membangun harus digunakan dalam Membangun Definisi:
Kanan Klik -> "Edit Build Definisi..."
Pergi ke "Procss" -> "3. Maju"
dan set "MSBuild Argumen" dengan
/p:VisualStudioVersion=12.0
I've baru-baru ini terjebak dengan masalah yang sama. Dan kesimpulan saya adalah bahwa setiap versi dari VS (v10 v11, v12) perubahan jalan membangun variabel, seperti MSBuildBinPath
.
Jadi menentukan tepat versi VS isn't hack, karena anda mungkin tidak memiliki versi yang sesuai dari file yang diinstal. Jadi intead anda'd baik menentukan parameter dan menggunakan target yang ada pada mesin anda.
Dalam beberapa kasus yang jarang, anda mungkin perlu menginstal versi tertentu dari LENSA dan Web Menggunakan paket. Dalam kasus saya hanya versi sudah cukup untuk memecahkan masalah.