Harici VS2013 derleme hatası “hata MSB4019: Alınan <path> projesi bulunamadı”


201

Visual Studio 2013 içinde değil, komut satırı üzerinden bir proje inşa ediyorum. Not, projemi Visual Studio 2012'den 2013'e yükselttim. Proje IDE içinde iyi inşa ediyor. Ayrıca, önce VS2012'yi tamamen kaldırdım, yeniden başlattım ve VS2013'ü yükledim. Visual Studio'nun tek sürümü 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.

Söz konusu iki çizgi şunlardır:

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

Orijinal ikinci satır v10.0 idi, ama bunu manuel olarak v12.0 olarak değiştirdim.

$ (VSToolsPath) gördüğümden, artık orada olmayan v11.0 (VS2012) klasörüne uzanıyor. Yol v12.0 olmalıdır.

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

Sistem ortam değişkenleri tablomda VSToolsPath belirtmeyi denedim, ancak harici derleme yardımcı programı hala v11.0 kullanıyor. Kayıt defterini aramayı denedim ve hiçbir şey yapmadı.

Ne yazık ki, komut satırını tam olarak kullanmanın kolay bir yolunu görmüyorum. Bir oluşturma aracı kullanıyorum.

Düşünceler?



Benim durumumda, WebPublish hedefi ile oluşturulan build olayında doğru VisualStudioVersion belirtmek zorunda kaldı.
user145400

Yanıtlar:


250

Aynı sorunu yaşadım ve daha kolay bir çözüm buldum

Vs2012'nin csproj dosyasına aşağıdakileri eklemesinden kaynaklanmaktadır:

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

Bu parçayı güvenle kaldırabilirsiniz ve çözümünüz gelişecektir.

As Sielu işaret Eğer .proj dosyası ile başlaması sağlamak zorunda <Project ToolsVersion="12"Görsel studio 2010 ile projeyi açmak aksi bir dahaki sefere, yine kaldırılan düğüm ekleyecektir.

Aksi takdirde, webdeploy kullanmanız gerekiyorsa veya bir yapı sunucusu kullanıyorsanız, yukarıdaki çözüm çalışmaz, ancak VisualStudioVersionözelliği oluşturma komut dosyanızda belirtebilirsiniz :

msbuild myproject.csproj /p:VisualStudioVersion=12.0

veya yapı tanımınızı düzenleyin:

<code> VisualStudioVersion </code> özelliğini belirtmek için derleme tanımını düzenleyin


1
Komut isteminden msbuild kullanarak hata aldım. Bu parçanın proje dosyasından kaldırılması sorunu çözdü.
Peter Hedberg

7
Bu yanıtı kullandım ve yalnızca * projemin <Project ToolsVersion = "12" ile başlatılmasını sağlamış olsaydım çalıştı <Project ToolsVersion = "4" olmadan önce ve projeyi VS'de her açtığımda iki düğümü tekrar ekledi (yani projeyi en son sürüme geçirdi).
Sielu

3
@giammin, çözümü zaten buldum. Bölümü proje dosyanızdan SİLMEYİN. Derleme tanımınızda doğru araçlar sürümünü ayarlayın. Bunu yapmak çok kolay. Derleme tanımınızı açın ve "İşlem" sayfasına gidin. Sonra "3. Gelişmiş" grubu altında "MSBuild bağımsız değişkenleri" adlı bir özelliğe sahip. Parametreyi aşağıdaki sözdizimine "/p:VisualStudioVersion=12.0" yerleştirin. Tabii ki tırnak işaretleri olmadan. Daha fazla parametreniz varsa, bunları virgülle değil boşlukla ayırın. Kaldırmayı önerdiğiniz yapılandırma, görsel işleminizin diğer bölümleri tarafından oluşturma işlemlerinizde kullanılır ...
Ralph Jansen

9
Bu çizgiyi kaldırmak Web Dağıtımını bozuyor gibi görünüyor
Colin Pear

4
Yukarıda da önerildiği gibi /p:VisualStudioVersion=12.0 özelliği kullanılarak aynı sorunu çözüldü. Teşekkürler
Randeep

70

Ben de vardı ve yapı tanımında araçları sürümünü ayarlayarak düzeltebilirsiniz.

Bunu yapmak çok kolay. Derleme tanımınızı açın ve " İşlem " sayfasına gidin. Sonra " 3. Gelişmiş " grubu altında " MSBuild bağımsız değişkenleri " adlı bir özelliğe sahip . Aşağıdaki sözdizimiyle parametreyi buraya yerleştirin

/p:VisualStudioVersion=12.0 

Daha fazla parametreniz varsa, bunları virgülle değil boşlukla ayırın.


1
TFS 2005'ten TFS 2013'e yükseltme işlemini tamamladık ve bu son engelimizdi. Bu kesinlikle bizim için çalıştı ve beni saçımı çekmekten kurtardı. Çok teşekkürler! +1.
Simon Whitehead

2
Sayed Ibrahim Hashimi'nin bu makalesi , sorunu Visual Studio 2010/2012'de açıklamaktadır. Komut satırı derlemesi, sln dosya biçimi sürüm -1'i VisualStudioVersion olarak kullanır. Ralph'ın tanımladığı gibi komut satırından veya bir derleme komut dosyasından MSBuild görevinin bir özelliği olarak bu değeri geçersiz kılabilirsiniz. Visual Studio 2013 ile aynı sorunu yaşadım ve VisualStudioVersion'u geçersiz kılmak sorunu çözdü.
mcdon

1
Bu bizim için de işe yaradı. Ayrıca burada açıklanan yapı şablonunun kendisini değiştirmeyi düşündük , düzinelerce yapı tanımınız varsa daha iyi bir seçenek olabilir.
JamesQMurphy

bu benim için çalıştı. Ben csproj dosyaları visualstudioversion herhangi bir referans sildi ve sonra msbuild argümanı ekledi
Jhayes2118

51

Bu yakından ilişkilidir ancak OP'lere özgü sorunu çözebilir veya çözmeyebilir. Benim durumumda VS2013 kullanarak bir Azure sitesinin dağıtımını otomatikleştirmeye çalışıyordum. Bununla birlikte, VS çalışmaları yoluyla oluşturma ve dağıtma, MSBuild kullanarak "hedefler" etrafında benzer bir hata gösterdi. MSBuild dışarı Dönüşler VS2013 altında farklı ve şimdi VS parçası olup .Net Framework (bkz olduğunu http://timrayburn.net/blog/visual-studio-2013-and-msbuild/ ). Temel olarak, doğru MSBuild sürümünü kullanın:

ESKİ, VS2012

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

YENİ, VS2013

C:\Program Files (x86)\MSBuild\12.0\bin\msbuild.exe

Daha yeni, VS2015

C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe

Daha yeni olan VS2017 (tam olarak test edilmedi, ancak keşfedildi - işleri biraz hareket ettirdiler)

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe

Bu benim için düzeltildi. Ayrıca, burada benzer bir soru için benzer cevap: stackoverflow.com/a/19826448/61569
Anthony F

22

Bana bir link veren Kinook'tan yeni bir yanıt aldım :

Temel olarak, binadan önce aşağıdakileri aramam gerekiyor. Sanırım Visual Studio 2013 çevreyi otomatik olarak kaydettirmiyor, ancak 2012 kaydetti ya da unuttum.

call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86

Umarım, bu yazı başka birine yardımcı olur.


NodeJS oluştururken sorunum bu şekilde çözüldü, SO teşekkür ederim bulunamadı! +1node-gypCpp default.props
Pogrindis

21

giammin'in çözümü kısmen yanlış. Sen GİRMEMELİ çözümünüzden o tüm PropertyGroup kaldırın. Bunu yaparsanız, MSBuild'in "DeployTarget = Package" özelliği çalışmaz. Bu özellik ayarlanan "VSToolsPath" 'e dayanır .

<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)' != ''" />

10

FSharp hedeflerimiz için bu sorunu yaşadım (FSharpTargetsPath boştu).

Yolların çoğu VS sürümüne referansla oluşturulmuştur.

Çeşitli nedenlerle, derlememiz sistem ayrıcalıklarıyla çalışır ve ortam değişkeni "VisualStudioVersion" yalnızca (VS 2013 yükleyicisi tarafından) "kullanıcı" düzeyinde ayarlanmıştır - bu yeterince adil.

Çalıştığınız düzeyde ("Sistem veya Kullanıcı) " VisualStudioVersion"ortam değişkeninin " "olarak ayarlandığından emin olun 12.0.


5
Bu, hizmetin etkileşimli masaüstü izinlerine sahip olmayabilecek belirli bir hizmet hesabı altında çalıştığı bir yapı sunucusu (CruiseControl veya TeamCity gibi) çalıştırırken muhtemelen yaygın bir senaryodur. Bu ipucu benim için sorunu çözdü (VS 2013, Server 2008 R2'nin temiz bir yüklemesinde kurulu, CruiseControl.NET ile)
David Keaveny

"VisualStudioVersion'umu" nerede görebilirim?
WEFX

@WEFX, Ortam Değişkenlerini SystemDenetim Masası'ndan seçerek görüntüleyin , ardından öğesini seçin Advanced system settingsve son olarakEnvironment Variables
Scott

6

Bunu komut satırında çalıştırmak da sorunu çözecektir. SETX VisualStudio Sürüm "12.0"


Bu benim için çalıştı ve proje dosyasını değiştirmeyi tercih etti.
Sean

4

Visual Studio 2012'yi 2013'e geçirirseniz, * .csprorj proje dosyasını edior ile açın.
'Project' etiketinin ToolsVersion öğesini kontrol edin.

Bu değer 4,0 var
Sen 12,0'a yapmak

  • itibaren

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0"
  • için

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="12.0"

Veya msbuild ile oluşturursanız, VisualStudioVersion özelliğini belirtin

msbuild /p:VisualStudioVersion=12.0


1
ToolsVersion, bu hata iletisini düzeltmek için tek değişken olmamalıdır, çünkü ToolsVersion ile doğru yapılamayan bir proje gördüm.
Patrick Desjardins

2

Harici bir derleme yardımcı programı kullanıyordum. Karıncalar gibi bir şey düşünün, ürünü doğru anlarsam, sadece ticari bir versiyon. Cevap için üreticiyle görüşmek zorunda kaldım.

Anlaşıldığı üzere, projede DEVSTUDIO_NET_DIR küresel bir makro var. Orada .Net yolunu değiştirmek zorunda kaldım. Çeşitli görsel stüdyo sürümlerini "Eylemler" olarak listeliyorlar, bu da benim aracılığımla, ancak tüm yollar sahne arkasındaki bir küresel değişkene geri gidiyor. Anlayışımda bir şey eksik olmadıkça, yolum olsaydı, ürüne karşı bir kusur olarak listelerdim. Oradaki yolu düzeltmek derleme sorununu çözdü.


2

Visual Studio 2013 yükledim. Bu benim için çalıştı:

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

Bu yüzden koşul'u değiştirdik ==için !=ve değeri 10.0için 12.0.


2

Benzer bir sorunum vardı. Önerilen tüm çözümler yalnızca bu soruna geçici bir çözüm bulmakla birlikte hata kaynağını çözmemektedir. @giammin çözümü, sadece yayınlama işlevselliği çöktüğü için tfs derleme sunucusu kullanıyorsanız uygulanmamalıdır. @ cat5dev çözümü - sorunu çözer ancak kaynağını çözmez.

VS2012 için derleme işlemi şablonu kullandığınızdan neredeyse eminim ReleaseDefaultTemplate.11.1.xaml or DefaultTemplate.11.1.xaml Bu oluşturma şablonları VS2012 ve $ (VisualStudioVersion) 11.0 olarak ayarlanmış

Sen VS2013 için inşa süreci şablonunu kullanmalıdır ReleaseTfvcTemplate.12.xaml or TfvcTemplate.12.xaml 12,0 $ (VisualStudioVersion) kümesine sahiptir ki

Bu proje dosyasında herhangi bir değişiklik olmadan çalışır.


2

Ben de aynı hatayı aldım .. Bunu düzeltmek için yaptım

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" />

değişmek

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

ve bitti.


2

Benim durumumda sadece .csproj dosyasını açarak satırın altına yorum yaptım ve hile yaptım

.<!-- <Import Project="..\PRPJECTNAME.targets" /> -->

Benim sorunum farklı olabilir ama ben buraya sürüklendi, ama bu birine yardımcı olabilir.

Çözümümden tek bir web projesi seçtim ve sorun yaratan bağımsız bir proje olarak açmaya çalıştım, yukarıdaki heck sorunu çözebildi.


2

MSBuild'in doğru sürümünü kullanın. Ortam Değişkenini şu şekilde ayarlayın:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin

Bu aynı zamanda VS 2019 projeleri için de geçerli olacak

Daha önce C:\Windows\Microsoft.NET\Framework\v4.0.30319


"C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild yerine" C: \ Program Dosyaları (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Current \ Bin \ MSBuild.exe "kullandım. exe "ve onun çalıştı
ELKALAKHI Mohammed

Evet, proje dosyasında VisualStudioVersion = 14.0 ile bir SSDT projesi (.sqlproj) kullanıyorum. Env değişkenlerimi Tanrı'ya hedefler için belirleyen çekirdek 3.1'i yükledim, sadece nerede olduğunu biliyor. Önerilen klasörde msbuild kullanarak bir cazibe gibi çalıştı!
Matthew Beck

1

Benim durumumda dev ortamı VS2013 ve TFS 2010 kullanıyorum. Build .NET 4.5.1 için hedeflendi. CI için otomatik derleme ayarlıyordum. Yukarıda belirtilen geçici çözümleri denediğimde - özellikler grubunu tamamen kaldırmak veya bazı satırları değiştirmek gibi. İkisini aynı anda başaramadım.

Sonunda sorunu çözmek için MSBuild argümanını geçmek zorunda kaldım.

Derleme tanımına git> İşlem> 3. Gelişmiş> MSBuild Bağımsız Değişkenleri (olarak ayarlandı) /p:VisualStudioVersion=12.0

Benim için çalıştı.


1

WebApplications klasörünü C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ konumundan C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ klasörüne kopyalamalısınız


Veya yalnızca Microsoft.WebApplication.targets dosyasını Visual Studio 2013'ün yüklü olduğu bir konumdan kopyalayın.
ThatBlairGuy

0

bulacaksın

C:\Program Files  (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets 

Bu hatanın göründüğü csproj dosyasında. Bunu csproj'dan kaldırın ve sonra derleyin.


0

Sorunu çözmek için yalnızca bir şey yapılması gerekir: Visual Studio 2012/2013 ve MSBuild Tools 2013 desteği yalnızca TeamCity 8.1'de tanıtıldığından TeamCity'yi 8.1.x veya daha yüksek bir sürüme yükseltin. TeamCity'nizi yükselttikten sonra, derleme adımınızdaki MSBuild Araçları Sürümü ayarını buna göre değiştirin ve sorun kaybolacaktır. Daha fazla bilgi için burayı okuyun: http://blog.turlov.com/2014/07/upgrade-teamcity-to-enable-support-for.html


0

Me - hiçbir şey VisualStudioVersion değişkeninin v11.0 değerini v10.0 olarak değiştirmeye yardımcı olmadı. .Csproj dosyasındaki değişken değiştirilmedi. Komut promt ile ayarlamak değildi. Vb...

Söz konusu sürümün (v11.0) yerel klasörünü yapı sunucuma kopyaladım.


0

Yukarıdaki çözümlerin hepsini denemiştim ve hala şans yok. Düzeltmek için yapı sunucularına görsel stüdyo yükleyen insanlar duymuştum, ama sadece 5GB boş alanım vardı, bu yüzden sadece C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio'yu yapı sunucuma kopyaladım ve bir gün olarak adlandırdım . Ondan sonra çalışmaya başladı, ekip şehri 9.x ve visual studio 2013 kullanarak.


0

TFS 2015 Derleme Sunucusuna dayanır

Bu hatayı karşılarsanız ... Error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.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.

.csprojHata mesajında ​​adlandırılan projenin dosyasını açın ve aşağıdaki bölümü yorumlayın

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


0

Bazı VS bileşenleri yüklediğimde bu hatayı aldım. Ne yazık ki bu cevapların hiçbiri bana yardımcı olmadı. TFS'yi komut geliştirme için kullanıyorum ve derleme tanımını düzenleme iznim yok. Bu sorunu VS110COMNTOOLSve adlı ortam değişkenlerini silerek çözdüm VS120COMNTOOLS. Bence VS bileşenlerimle kuruldu.


0

Yerel bilgisayarımda WebApplications klasörünü eksik buldum, 2012'yi kullanırken olduğu gibi Visual Studio 2017 ile yüklenmedi.


0

Benim durumumda yanlış sürümünü kullanıyordum MSBuild.exe .

Kullanmanız gereken sürüm, projenizi oluşturmak için kullandığınız Visual Studio sürümüne bağlıdır. Benim durumumda 14.0'a ihtiyacım vardı (Visual Studio 2015 kullandım).

Bu şurada bulundu:

C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe

Altına bakabilirsiniz:

C:\Program Files (x86)\MSBuild

Diğer sürümleri bulmak için.

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.