Aku membangun sebuah proyek melalui baris perintah dan tidak di dalam Visual Studio 2013. Catatan, saya telah meng-upgrade proyek saya dari Visual Studio 2012 ke 2013. Proyek membangun baik di dalam IDE. Juga, aku benar-benar dihapus VS2012 pertama, reboot, dan dipasang VS2013. Satu-satunya versi dari Visual Studio yang saya miliki adalah 2013 Ultimate.
ValidateProjects:
39>path_to_project.csproj(245,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 <Import> declaration is correct, and that the file exists on disk.
39>Done Building Project "path_to_project.csproj" (Clean target(s)) -- FAILED.
Berikut ini adalah dua garis dalam pertanyaan:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
Asli kedua garis adalah v10.0, tapi saya secara manual mengubah bahwa untuk v12.0.
$(VSToolsPath) memanjang dari apa yang saya lihat ke v11.0 (VS2012) folder, yang jelas sudah tidak ada lagi. Jalan yang seharusnya untuk v12.0.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications\
Aku mencoba menentukan VSToolsPath dalam sistem variabel lingkungan tabel, tetapi eksternal membangun utilitas masih menggunakan v11.0. Saya mencoba mencari melalui registry dan itu datang dengan apa-apa.
Sayangnya, saya tidak melihat ada cara mudah untuk mendapatkan yang tepat command line yang digunakan. Saya menggunakan build tool.
Pikiran-pikiran?
Saya memiliki masalah yang sama dan menemukan solusi yang lebih mudah
Hal ini karena Vs2012 menambahkan kode berikut ke csproj file:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolspath>
</PropertyGroup>
Anda dapat dengan aman menghapus bagian itu dan solusi anda akan membangun.
Sebagai Sielu mencontohkan anda harus memastikan bahwa .proj file begin dengan
<Proyek ToolsVersion="12"
jika waktu berikutnya anda membuka proyek dengan visual studio 2010, itu akan menambah node dihapus lagi.
Sebaliknya, jika anda perlu untuk menggunakan webdeploy atau anda menggunakan membangun server, solusi di atas tidak akan bekerja, tetapi anda dapat menentukan VisualStudioVersion
properti dalam membangun script:
msbuild myproject.csproj /p:VisualStudioVersion=12.0
atau mengedit membangun definisi:
Saya ini juga dan anda dapat memperbaikinya dengan pengaturan yang sesuai versi anda dalam membangun definisi.
Ini sangat mudah untuk dilakukan. Buka membangun definisi dan pergi ke "Proses" di halaman. Kemudian di bawah "3. Lanjutan" kelompok anda memiliki properti yang disebut "MSBuild Argumen". Tempat parameter yang ada dengan sintaks berikut
/p:VisualStudioVersion=12.0
Jika anda memiliki lebih banyak parameter, pisahkan dengan spasi dan koma.
Hal ini terkait erat tetapi mungkin atau mungkin tidak memperbaiki OPs masalah tertentu. Dalam kasus saya saya mencoba untuk mengotomatisasi penyebaran Azure situs menggunakan VS2013. Membangun dan menyebarkan melalui VS bekerja, namun, menggunakan MSBuild menunjukkan kesalahan yang sama sekitar "target". Ternyata MSBuild berbeda di bawah VS2013, dan sekarang merupakan bagian dari VS dan tidak .Net Framework (lihat http://timrayburn.net/blog/visual-studio-2013-and-msbuild/). Pada dasarnya, menggunakan versi yang benar dari Masalah:
TUA, VS2012
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
BARU, VS2013
C:\Program Files (x86)\MSBuild\12.0\bin\msbuild.exe
Baru, VS2015
C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe
Baru masih, VS2017 (tidak sepenuhnya pengujian tetapi ditemukan - mereka've pindah sedikit)
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe
Aku hanya menerima respon dari Kinook, yang memberi saya link:
Pada dasarnya, saya perlu menelepon berikut sebelum bulding. Saya kira Visual Studio 2013 tidak secara otomatis mendaftarkan lingkungan pertama, tapi tahun 2012 tidak, atau saya lakukan dan lupa.
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
Mudah-mudahan, posting ini membantu orang lain.
giammin's solusi sebagian tidak benar. Anda TIDAK menghapus seluruh PropertyGroup dari solusi anda. Jika anda melakukannya, MSBuild's "DeployTarget=Paket" fitur akan berhenti bekerja. Fitur ini bergantung pada "VSToolsPath" yang ditetapkan.
<PropertyGroup>
<!-- VisualStudioVersion is incompatible with later versions of Visual Studio. Removing. -->
<!-- <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> -->
<!-- VSToolsPath is required by MSBuild for features like "DeployTarget=Package" -->
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolspath>
</PropertyGroup>
...
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
Aku punya masalah ini untuk kita FSharp target (FSharpTargetsPath kosong).
Banyak jalan yang dibangun dengan mengacu VS versi.
Untuk berbagai alasan, kami membangun berjalan dengan sistem hak istimewa, dan variabel lingkungan "VisualStudioVersion" hanya ditetapkan (oleh VS 2013 installer) di "user" level yang cukup adil.
Memastikan bahwa "VisualStudioVersion
" variabel lingkungan diatur ke "12.0
" pada tingkat (Sistem atau User) yang sedang berjalan di.
Jika anda bermigrasi Visual Studio 2012 ke 2013, kemudian buka *.csprorj file proyek dengan edior.
dan check 'Proyek' tag's ToolsVersion elemen.
Yang's nilai 4.0
Anda membuat ini untuk 12.0
Dari
<?xml version="1.0" encoding="utf-8"?> <Proyek ToolsVersion="4.0"
Untuk
<?xml version="1.0" encoding="utf-8"?> <Proyek ToolsVersion="12.0"
Atau Jika anda membangun dengan msbuild kemudian hanya menentukan VisualStudioVersion properti
msbuild /p:VisualStudioVersion=12.0
Aku punya masalah yang sama. Semua solusi yang diusulkan hanya bekerja di sekitar masalah ini tapi tidak memecahkan sumber kesalahan. @giammin solusi tidak harus diterapkan jika anda menggunakan tfs membangun server seperti itu hanya jatuh mempublikasikan fungsi. @cat5dev solusi memecahkan masalah tetapi tidak mengatasi sumber itu.
Aku`m hampir yakin bahwa anda menggunakan proses membangun template untuk VS2012 seperti
ReleaseDefaultTemplate.11.1.xaml atau DefaultTemplate.11.1.xaml
ini membangun template yang telah dibuat untuk VS2012 dan $(VisualStudioVersion) set untuk 11.0
Anda harus menggunakan proses membangun template untuk VS2013
ReleaseTfvcTemplate.12.xaml atau TfvcTemplate.12.xaml
yang telah $(VisualStudioVersion) set untuk 12.0
Ini bekerja tanpa perubahan apapun dalam file proyek.
Saya juga punya kesalahan yang sama .. aku melakukan ini untuk memperbaikinya
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" />
perubahan
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
dan itu's dilakukan.
Dalam kasus saya, saya hanya komentar di bawah ini garis dengan membuka .csproj file dan melakukan trik
.<!-- <Proyek Impor="..\PRPJECTNAME.target" /> -->
Masalah saya mungkin berbeda tapi aku diseret di sini, tetapi hal ini dapat membantu seseorang.
Aku mengambil satu proyek web dari solusi saya dan mencoba untuk membukanya sebagai berdiri sendiri proyek yang membuat masalah, setelah di atas sih saya mampu memecahkan masalah.
Saya memiliki Visual Studio 2013 diinstal. Ini bekerja untuk saya:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' != ''">12.0</VisualStudioVersion>`
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolspath>
</PropertyGroup>
Jadi saya've berubah kondisi dari ==
untuk !=
dan nilai dari 10.0
untuk 12.0
.
Saya menggunakan eksternal membangun utilitas. Memikirkan sesuatu seperti Semut, jika saya memahami produk dengan benar, hanya sebuah versi komersial. Aku harus menghubungi produsen untuk menjawab.
Ternyata, ada makro global dalam proyek, DEVSTUDIO_NET_DIR. Saya harus mengubah jalur .Net ada. Mereka menampilkan berbagai visual studio versions sebagai "Tindakan", yang melalui saya, tapi semua jalan mengarah kembali ke satu variabel global belakang layar. Saya akan daftar sebagai cacat terhadap produk, jika saya punya cara saya, kecuali jika saya kehilangan sesuatu dalam pemahaman saya. Memperbaiki jalan yang ada tetap membangun masalah.
Dalam kasus saya dev lingkungan VS2013 dan saya menggunakan TFS 2010. Membangun ditargetkan untuk .NET 4.5.1. Aku sedang menyiapkan auto untuk membangun CI. setiap kali saya mencoba workarounds yang disebutkan di atas - seperti menghapus sifat kelompok yang benar-benar atau mengganti beberapa baris dll.saya membangun digunakan untuk terjadi dalam TFS tapi saya publikasikan ke azure digunakan untuk gagal dengan 'MSDeploy' atau pada waktu beberapa kesalahan yang berbeda. Saya tidak dapat mencapai keduanya secara bersamaan.
Jadi akhirnya saya harus melewati MSBuild argumen untuk mengatasi masalah tersebut.
Goto Edit build definisi > Proses > 3. Maju > MSBuild Argumen (set) /p:VisualStudioVersion=12.0
Ini bekerja untuk saya.
Dalam kasus saya saya menggunakan versi yang salah MSBuild.exe
.
Versi yang anda butuhkan untuk menggunakan tergantung pada versi Visual Studio yang digunakan untuk membuat proyek anda. Dalam kasus saya saya butuhkan 14.0 (setelah menggunakan Visual Studio 2015).
Ini ditemukan pada:
C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe
Anda dapat lihat di bawah:
C:\Program Files (x86)\MSBuild
Untuk menemukan versi lain.
Hanya satu hal yang perlu dilakukan untuk memecahkan masalah: upgrade TeamCity ke versi 8.1.x atau lebih tinggi karena dukungan untuk Visual Studio 2012/2013 dan MSBuild Alat 2013 hanya diperkenalkan di TeamCity 8.1. Setelah anda've upgrade anda TeamCity memodifikasi MSBuild Tools Versi pengaturan dalam membangun langkah sesuai ans masalah akan hilang. Untuk info lebih lanjut baca di sini: http://blog.turlov.com/2014/07/upgrade-teamcity-to-enable-support-for.html
Saya - tidak ada yang membantu dalam mengubah v11.0 nilai VisualStudioVersion variabel v10.0. Mengubah variabel .csproj file didn't. Pengaturan ini melalui command promt didn't. Dll...
Akhirnya saya menyalin folder lokal dari versi tertentu (v11.0) ke saya untuk membangun server.
Saya telah mencoba semua solusi di atas dan tetap tidak berhasil. Saya telah mendengar orang-orang menginstal visual studio pada mereka membangun server untuk memperbaikinya, tapi saya hanya punya 5gb ruang bebas jadi aku hanya disalin C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio untuk saya membangun server dan menyebutnya sehari. Mulai bekerja setelah itu, menggunakan tim kota 9.x dan visual studio 2013.