Yapı sunucusunda Microsoft.WebApplication.targets bulunamadı. Sizin çözümünüz nedir?


410

Projemi derleme sunucusunda oluşturmaya çalışmak bana şu hatayı veriyor:

Microsoft (R) Build Engine Version 4.0.30319.1
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.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.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.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.

Birkaç ay önce Visual Studio 2010'u Build Server'a yükleyerek bu sorunu çözdüm. Ama şimdi sıfırdan yeni bir sunucu kuruyorum ve bu sorunu çözmek için daha iyi bir çözüm olup olmadığını bilmek istiyorum.


1
Web Uygulama Projeleri kullanımdan kaldırıldı mı? Bunları oluşturmak için Visual Studio'nun eski sürümlerini gerektirme gerekçesinin ne olduğunu merak ediyorum.
brianary

1
Daha da önemlisi, aslında yapı sunucusu üzerinden mi dağıtıyorsunuz? Örneğin, çözümde ayrı bir web yükleyici projem bile var ... ve hala bu kanlı şeyi istiyor ... answer = proj dosyasından kaldır! kolay.
Paul Zahra


1
<Import Project="..\Packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />Yolu şu şekilde değiştirerek düzeltildi $(VSToolsPath):<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" />
GJ

Yanıtlar:


207

Sorunun başlığını cevaplamak (ancak aldığınız çıktıyla ilgili soruyu cevaplamak için):

Aşağıdaki klasörü geliştirici makinenizden derleme sunucunuza kopyalamak, yalnızca web uygulamalarıysa bunu düzeltir

C: \ Program Dosyaları (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications

Yapınızın nasıl kırıldığına göre x86'yı kaldırın. Başka proje türleriniz varsa, msbuild klasörünün tamamını kopyalamanız gerekecektir.


11
Bu, v10.0 yerine v11.0
DenNukem

2
Bunun yerine MSBuild araçlarını yükleyemiyor muyuz? microsoft.com/tr-tr/download/confirmation.aspx?id=40760
user20358

1
Ne yazık ki, MSBuild araçlarını yüklemek, VisualStudio 2013'te iyi derlenen projeler oluşturmak için yeterli değildir
Michael Shaw

VS2013 yükledikten sonra çalışması için Web klasörü v11.0 kopyalamak zorunda kaldı, orada eksikti. VS derleme ancak doğrudan MSBUILD üzerinden derleme değil.
Martin Braun

9
VS2017 için çalıştı. sadece C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ vXX.0 \ WebApplications'ı C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ WebApplications
jokab

95

VS yüklü değilse WAP'leri oluşturma ve yayınlama desteklenmez. Bununla birlikte, gerçekten VS'yi yüklemek istemiyorsanız, altındaki tüm dosyaları kopyalamanız gerekir %ProgramFiles32%\MSBuild\Microsoft\.

Web Dağıtım Aracı'nı da yüklemeniz gerekir . Bence bu kadar.


4
Sayed - dansomething'in cevabına bakınız - cevabınız doğru mu? VS 2010 Shell Integrated paketini ve .NET SDK'sı bile Web Uygulaması proje desteğini doğru şekilde yüklemeyecek mi?
Adam

@SayedIbrahimHashimi Manuel bir klasör kopyası yaparsanız DLL'leri GAC'a kaydettirmeniz gerekir mi?
TheOptimusPrimus

Peki ya Microsoft.TextTemplating.targets? Bunları klasörlerine almak için ne yapmam gerekir? C: \ Program Dosyaları (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0
Geliştirici

@ClarkKent, üzgünüm TextTemplating dosyasıyla konuşamıyorum. Ben bunlara aşina değilim.
Sayed Ibrahim Hashimi

77

UPD: VS2017'den itibaren, Build Tools'da bu sorunu tamamen ortadan kaldıran iş yükü var. Bkz. @SOReader yanıtı .

Derleme sunucusundaki hiçbir şeyi değiştirmemeyi tercih ediyorsanız ve projenin kaynak kontrolünün hemen dışına çıkmasını istiyorsanız, gerekli ikili dosyaları kaynak denetimi altına almak iyi bir fikir olabilir. Aşağıdaki gibi görünmesi için proje dosyanızdaki içe aktarma bölümünü değiştirmeniz gerekir:

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

İlk satır, çözüm dizinine göreceli olarak yeni konumdan gerçek içe aktarmadır. İkincisi, Condition="false"Visual Studio'nun projenizi hala geçerli bir Web Uygulaması Projesi olarak görmesine izin veren orijinal satırın kapalı bir sürümüdür ( ) (VS 2010 SP1'in kendisinin yaptığı hile).

Kopyalamak unutma C:\Program Files (x86)\Microsoft\VisualStudio\v10.0\WebApplicationsiçin BuildTargetskaynak kontrol altında klasöre.


Bu çözüm benim için çalıştı ve benim durumumda gerçekten en iyi seçimdi. Bunun nedeni, yapı sunucusuna erişimimin olmamasıdır. Yeni bir sunucuyu yapı sunucusu olarak kullanmak için Atlassian'ın Elastik bambuunu kullanıyorum. İlk bakışta bu AMI'lerin Web Uygulaması hedeflerini içerdiği görülmüyor ?? Bu bana mantıklı gelmiyor ama öyle görünüyor.
Cody Clark

1
Bu iyi bir yaklaşımdır, ancak bu değişiklik her csproj dosyasının değiştirilmesini gerektirir. Çözüme yeni projeler eklemek zor. Tabii ki özel proje şablonları ile çözülebilir, ama yine de .. Her neyse, bu cevap beni doğru yöne çekti. Teşekkürler!
100

76

Şu anda, 2017'de MSBuildTools ile WebApplication redistlerini yükleyebilirsiniz. Sadece MSBuild 2017 Tools'u indirecek bu sayfaya gidin ve kurulum sırasında Web development build toolsbu hedefleri de yüklemek için tıklayın : resim açıklamasını buraya girin

Bu, C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsvarsayılan olarak eksik kitaplıkların yüklenmesine yol açacaktır


2
Kitapları kaynak kontrolüne paketleme konusunda beş yaşındaki çocuğumun bugün bile bile oyları alması konusunda oldukça şaşırdım, bu kutu cevabı dışında doğru.
Andriy K

2
@AndriyK Çözümünüz önerdiğimden biraz farklı ve birisinin neden benimkini tercih etmesini anlıyorum ... sadece tembellik olmadığı sürece; D
SOReader

2
Bunu daha genel bir hale getirmek için, Visual Studio'nun gelecekteki sürümleri için, visualstudio.microsoft.com/downloads adresinden en son Derleme Araçlarını indirebilirsiniz. Sayfayı aşağı kaydırın ve alt kısmına yakın "Visual Studio için Araçlar" bölümünü genişletin, ardından " Msgstr "Visual Studio için Derleme Araçları". Şu anda bu VS 2017 için ama gelecekteki sürümler için aynı olacağını varsayalım. Bu arada, CI aracınız için (örneğin Jenkins) msbuild.exe yoluna ihtiyacınız varsa, VS 2017 için C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ 15.0 üzerine yüklenir \ Bin \ msbuild.exe.
Simon Tewsi

2
Bunu yap-build-uyumlu (read: komut satırı) yöntemidir choco install visualstudio2017-workload-webbuildtools.
Paul Hicks

1
Ayrıca, "Web geliştirme oluşturma araçları" paketinin , Microsoft.VisualStudio.Workload.WebBuildToolskomut satırı üzerinden çağrılarak kurulabileceğini unutmayın vs_BuildTools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools. --passiveKullanıcı müdahalesine gerek kalmadan ekleyin .
Wai Ha Lee

70

NuGet MSBuild.Microsoft.VisualStudio.Web.targets paketini kullanarak Visual Studio projelerinize başvurabilir , ardından referanslarınızı Andriy K'nin önerdiği şekilde değiştirebilirsiniz.


2
Kullanmak imkansız çünkü önce çözümü açmam gerekiyor ama hata yüzünden yapamıyorum.
Geliştirici

Çözümde birden fazla proje varsa, yine de çözümü açabilmeniz gerekir - web projesinin yüklenmediğini görmezden gelin; 2. nuget referansını ekleyin; 3. bundan sonra bahsedilen yaklaşımlardan birini ele alalım; proje dosyasını el ile düzenleyebilir veya TeamCity'deki env.VSToolsPath değişkenini geçersiz kılabilirsiniz.
Damon

1
bu resmi olarak piyasaya sürülen bir MS nuget paketi mi, yoksa birisi mi oluşturdu?
Simon_Weaver

harika bir çözüm - VS'nin farklı sürümleri için çalışır. .Csproj dosyasını YMMV
Jonno

39
Resmi olarak yayımlanmış bir Microsoft nuget paketi değil. Biliyorum çünkü ben yarattım.
mak

54

Bu gönderiyi temel alarak burada Microsoft Visual Studio 2010 Kabuğu (Tümleşik) Yeniden Dağıtılabilir Paketi'ni yükleyebilirsiniz ve hedefler yüklenir.

Bu, derleme sunucusuna Visual Studio yükleme ihtiyacını ortadan kaldırır.

Ben şimdi şimdi denedim ve çalıştığını doğrulayabilirsiniz:

Önce:

hata MSB4019: İçe aktarılan "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets" projesi bulunamadı. Bildirimdeki yolun doğru olduğunu ve dosyanın diskte bulunduğunu doğrulayın.

Kurulumdan sonra:

[Doğru inşa eder]

Bu, Visual Studio'yu bir yapı sunucusuna kurmaktan çok daha iyi bir çözümdür.


7
Bu en kolay ve en basit çözüm IMO'sudur. VS 2013 kullanıyorum ve Visual Studio 2013 Kabuğu (İzole) Yeniden Dağıtılabilir'in işe yaradığını gördüm (Entegre olanın İzole olana bağımlılık nedeniyle yüklenmeyeceği).
Matt Miller

@MatthewSkelton - Yapı sunucusunun anlamı nedir ?
Mohammed Zameer

2
@BountyMan - bir yapı sunucusu, yazılımın Sürekli Entegrasyon (CI) yapılarını üstlenen veya kontrol eden bir sunucudur. Örnekler: Jenkins, TeamCity, CruiseControl, vb.
Matthew Skelton

3
Ne yazık ki VS v14.0 ile, paketi kurmanın yolu nuget yoluyladır, ancak benim sorunum derleme sunucusunun VS (sadece MSBuild) yüklü olmamasıydı, paketi kurmak imkansızdı. Klasörü bilgisayarımdan sunucuya kopyalamadan önce PowerShell ve Nuget'in çeşitli yarı yedekli yüklemesiyle saatlerce uğraştım.
pasx

1
@pasx Hata iletisinde "v14" varsa, bunun yerine Visual Studio 2015 Yalıtılmış Kabuğu yükleyebilirsiniz, benim için çalıştı - visualstudioextensibility.com/downloads/vs-shells ("URL'leri İndir" altında; zorunlu bir anket var, tadını çıkarın!)
Dunc

38

Son Windows SDK, ek olarak, yukarıda da belirtildiği gibi "Microsoft Visual Studio 2010 Kabuk (Entegre) yeniden dağıtılabilir paketi" Microsoft.WebApplication.targets için ve "Microsoft Visual Studio Team sistem 2008 veritabanı sürüm GDR R2" Microsoft.Data.Schema için .SqlTasks.targets Visual Studio 2010'u yükleme ihtiyacını hafifletmelidir. Bununla birlikte, VS 2010'u yüklemek aslında genel olarak indirmek için daha az ve sonunda daha az çalışma olabilir.


FYI - Tam üflenmiş VS'yi yüklemeden bir yapı sunucusunda Sql projeleri oluşturmaya çalışıyorsanız, burada belirtilen Team System 2008 Veritabanı Sürümü GDR R2 yükleyicisiyle şansınız kalmadı. Önkoşullar Visual Studio Team System 2008 Veritabanı Sürümü SP1 (İngilizce) veya Visual Studio Team System 2008 Suite SP1 (İngilizce) VE Visual Studio 2008 Service Pack 1'dir. Ancak SqlServer.targets .NET Framework'ten kopyalanabilir gibi görünüyor \ v4 dizini ve TeamData msbuild \ program dosyaları \ msbuild \ microsoft \ visual studio \ v10.0 \ dışındaki dosyaları hedefler ve csprojs'unuz oluşturulur.
Ethan

Kesinlikle en güzel çözüm değil, ama benim için en önemli zaman. Sadece MSBuild dizinini kopyalamak benim için daha fazla soruna yol açar.

21
Bu gerçekten önemli bir cevaptır, çünkü bir istemci için bir yapı sunucusu oluşturan bağımsız bir geliştiriciyseniz, istemcinin yazılımlarını oluşturabilmek için bir Visual Studio lisansını korumasını istemezsiniz.
thelsdj

Sadece VS2010 kabuk entegre paketine ve EntLib 5'e mayın inşa edebilmek için ihtiyacım vardı. Takım Sistemine gerek yoktu.
Robin Winslow

1
VS 2010 Kabuğu artık, "Aradığınız kaynak kaldırılmış, adı değiştirilmiş veya geçici olarak kullanılamıyor" bağlantısında artık mevcut değil.
kristianp

22

NuGet aracılığıyla bağımlılık ekleyin ve bir Yapı Parametresi ayarlayın

Hedef: yapı aracılarında değişiklik / kurulum gerekmez

Ben bir melez yaklaşım almış buraya Lloyd Nuget yaklaşımının kapalı dayanıyordu, Andrik tarafından işlemekle ikili bağımlılıklar çözümü.

Bunun nedeni, bu gibi öğelerle önceden yapılandırmak zorunda kalmadan yeni yapı aracıları ekleyebilmek istiyorum.

  1. Visual Studio'lu bir makinede, Çözümü açın; web projesinin başarısız olduğunu görmezden gelin.
  2. NuGet paket yöneticisine, Lloyd'un belirttiği gibi MSBuild.Microsoft.VisualStudio.Web.targets ekleyin .
  3. Bu, ikili dosyaları [solution]\packages\MSBuild.Microsoft.VisualStudio.Web.targets.nn.n.n.n\tools\VSToolsPath\
    1. Bunları bir referans klasörüne kopyalayabilir ve kaydedebilirsiniz,
    2. Ya da sadece bulundukları yerde kullanın. Bunu seçtim, ancak daha sonra yoldaki sürüm numarasıyla uğraşmak zorunda kalacağım.

Sürüm 7'de aşağıdakileri yaptım. Bu gerekli olmayabilir ve yorumlara dayanarak şimdi kesinlikle gerekli değildir. Lütfen aşağıdaki yorumlara bakınız.

  1. Ardından, TeamCity derleme yapılandırmanıza, için bir derleme Paramenter ekleyin env.VSToolsPathve VSToolsPath klasörüne ayarlayın; kullandım..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath

8
Eğer proje dosyanızdaki <Import> öğesini sadece bununla değiştirirseniz, 4. adımı gerçekleştirmenize gerek yoktur:<Import Project="..\..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.12.0.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />
knocte

Bu kabul edilen cevap olmalı ... ve 4. nokta silinmelidir.
Izzy

@Izzy teşekkürler, bunun yerine knocte belirtildiği gibi yorum yaptınız mı? TC'yi birkaç yıldır kullanmadım, sürüm 7 iirc.
Damon

@Damon TC değil Jenkins kullanıyorum, bu yüzden son noktanıza ihtiyacım olmayabilir.
Izzy

21

Derleme / CI sunucusunu oluştururken, Microsoft.WebApplication.targetsbelirterek içe aktarmayı tamamen kapatın /p:VSToolsPath=''. Bu, esasen, aşağıdaki satırın koşulunu yanlış yapacaktır:

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


TeamCity'de şu şekilde yapılır:

resim açıklamasını buraya girin


Visual Studio'nun "Yayınla" mekanizmasını kullanıyorsanız, oluşturma hedefleri gereklidir. Bunu yapmak derlemenin devam etmesine ve tamamlanmasına izin verir, ancak eksik olabilir.
starlocke

14

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

Değerini 4.0'dan 12.0'a değiştir

  • 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

Çözüm Kaynağı


4
TFS 2013 derleme tanımındaki (Visual Studio 2013'te oluşturulan bir çözüm için) MSBuild Bağımsız Değişkenlerine /p:VisualStudioVersion=12.0 eklemek benim için çalıştı. Nedense v11.0 klasöründeki herhangi bir parametresiz dosyaları arar.
Sacha K

3
Bu çözüm benim için çalıştı, ben şu komutu kullandım:msbuild /p:Platform=x86 /p:VisualStudioVersion=12.0
E.Meir

9

Msbuild yeni sürümü Microsoft.WebApplication.targets ile birlikte gelmiyor gibi görünüyor. Düzeltmek için csproj dosyanızı şu şekilde güncellemeniz gerekir:

1) Web uygulamasını düzenleyin csproj (sağ tıklama). Yapı araçlarıyla ilgili olarak csproj'daki aşağıya doğru bölümü bulun. Öyle görünmeli.

<PropertyGroup>  
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup>  
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />  
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />  
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />  

2) VisualStudioVersion etiketinin altına bir VSToolsPath satırı eklemeniz gerekir.

<PropertyGroup>  
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
  <!--Add the below line to fix the project loading in VS 2017 -->
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  <!--End -->
</PropertyGroup>  
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />  
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />  
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />  

Referans bağlantısı: https://alastaircrabtree.com/cannot-open-vs-2015-web-project-in-vs-2017/


8

Tüm ihtiyacınız olan bu. Sadece 103MB. Her şeyi kurma

resim açıklamasını buraya girin


Ben, bu formdaki bir onay işareti koymak mümkün duyuyorum nasıl olmadan bir şey yüklemeden?
Christian

5

MS bağlantıda buldum :

Evet, veritabanı projeleri oluşturmak için derleme makinenize Visual Studio 2010 yüklemeniz gerekir. Bunu yapmak için ek bir Visual Studio lisansı gerekmez.

Şimdilik sahip olduğum tek seçenek bu.


2
Bağlantı kopmuş gibi görünüyor.
Hayal kırıklığına uğramış

2

Benim çözümüm burada birkaç cevabın bir karışımı.

Yapı sunucusunu kontrol ettim ve Windows7 / NET4.0 SDK zaten kurulmuştu, bu yüzden yolu buldum:

C: \ Program Dosyaları (x86) \ MSBuild \ Microsoft \ VisualStudio \ v9.0 \ WebApplications \ Microsoft.WebApplication.targets`

Ancak, bu satırda:

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

$ (MSBuildExtensionsPath) , yolu olmayan C: \ Program Files \ MSBuild klasörüne genişler .

Bu nedenle ne yaptım, bu komutu kullanarak bir symlink oluşturmak oldu:

mklink / J "C: \ Program Dosyaları \ MSBuild \ Microsoft \ VisualStudio" "C: \ Program Dosyaları (x86) \ MSBuild \ Microsoft \ VisualStudio"

Bu şekilde $ (MSBuildExtensionsPath) geçerli bir yola genişler ve bu adımda kaybolmadığından ve belgelendiğinden emin olmak için uygulamanın yalnızca oluşturma sunucusunda (belki de her derleme için sembolik bağlantı oluşturabilir) uygulamanın kendisinde herhangi bir değişiklik gerekmez. ").


2


/p:VCTargetsPath="C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V120"

İçine ekleyerek bunu düzelttim
Build > Build a Visual Studio project or solution using MSBuild > Command Line Arguments


2

Bir sürü çözüm denedim, ama sonunda bu cevap benim için çalıştı: https://stackoverflow.com/a/19826448/431522

Temel olarak MSBuild'i Visual Studio dizini yerine MSBuild dizininden çağırmayı gerektirir.

Ayrıca kodları daha kolay kodlamak için MSBuild dizinini yoluma ekledim.


2

Herkes Visual Studio 2017 için geliyor. Benzer bir sorun yaşadım ve 15.6.1'e güncellendikten sonra projeyi derleyemedim. MSBulild araçlarını yüklemek zorunda kaldım ama yine de hata vardı.

v14.0Klasörü C:\Program Files (x86)\MSBuild\Microsoft\VisualStudioile aynı klasöre kopyalayarak sorunu çözebildim v15.0ve bu da tüm hataları çözdü. Şimdi klasör yapım, her iki klasörün de aynı içeriğe sahip olduğu aşağıdaki gibi görünüyor.

resim açıklamasını buraya girin


2

Bir yapı sunucusu durumunda olduğu gibi MSBuild kullanıyorsanız, benim için işe yarayan şey:

Aşağıdakileri değiştirin:

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

için:

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

Msbuild komutum: *"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" solution.sln /p:Configuration=Debug /p:Platform="Any CPU"*

Umarım bu birine yardımcı olur.


bahsetmek gerekirse, rahatsız edici .csproj, vbproj dosyalarında değişiklikler yapılmalıdır.
Colin Q

0

VSTS kullanarak bir projeyi dağıtmaya çalışıyorsanız, sorun "Barındırılan VS2017" (veya 18 vb.) Yerine "Barındırılan Windows Kapsayıcısı" seçeneğinin işaretlenmesi ile bağlantılı olabilir:

resim açıklamasını buraya girin


0
  • Microsoft'tan MSBuild araçlarını yükledikten sonra, ortam değişkenindeki MSBuild yolunu tanımlayın, böylece herhangi bir yoldan çalıştırılabilir.
  • .Csproj dosyasını notepad ++ gibi herhangi bir not defteri düzenleyicisinde düzenleyin ve
  • Aşağıdaki öğeleri kontrol edin, ->
    • İçe aktarmayı yalnızca bir kez kullandığınızdan emin olun, hangisinin işe yaradığını seçin.
    • Sürücüde "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0" klasöründe veya "C: \ Program Files (x86) klasöründeki MSBuild hedefi tarafından hangi sürüme başvurulduğundan emin olun. \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ web uygulamaları \ Microsoft.WebApplication.targets"
    • Komut isteminde, kontrol etmek için aşağıdaki komutu çalıştırın

C:> msbuild "C: \\ DotnetCi.sln" / p: Configuration = Release / p: UseWPP_CopyWebApplication = true / p: PipelineDependsOnBuild = false


0

Bu sorunu bir CI / CD boru hattı üzerinde bir SQL Server projesi oluşturma yaşıyordu. Aslında, yerel olarak da alıyordum ve çözmeyi başaramadım.

Benim için işe yarayan, yeni bir proje oluşturmayı ima eden bir dizi SQL komut dosyasından bir SQL Server Veri Katmanı Uygulaması paketi ( ) üretebilen bir MSBuild SDK kullanmaktı .dacpac. Ancak SQL Server projesini korumak istedim, böylece Visual Studio'da SQL Server Nesne Gezgini aracılığıyla canlı veritabanına bağlayabilirim. Bunu çalıştırmak için aşağıdaki adımları attım:

  1. SQL Server projemi .sql veritabanı komut dosyalarıyla korudum.
  2. Yukarıdaki çerçevedeki yönergelere göre hedef çerçevenin .NET Standard 2.0 olduğundan emin olarak bir .NET Standard 2.0 sınıf kitaplığı projesi oluşturuldu.
  3. İçeriğini .csprojaşağıdaki gibi ayarlayın :

    <?xml version="1.0" encoding="utf-8"?>
    <Project Sdk="MSBuild.Sdk.SqlProj/1.0.0">
      <PropertyGroup>
        <SqlServerVersion>Sql140</SqlServerVersion>
        <TargetFramework>netstandard2.0</TargetFramework>
      </PropertyGroup>
    </Project>
  4. SQL Server 2019 kullanıyorum çünkü SQL Server sürümü olarak Sql140 seçtim. Kullandığınız sürümle eşleme bulmak için bu yanıtı denetleyin .

  5. SQL Server projesini yoksay, böylece yerel olarak kesmeyi durdurur (Visual Studio üzerinde derlenir, ancak VS kodunda başarısız olur).

  6. Şimdi, .sqldosyalar inşa edildiğinde SDK projesinin içinde olduğundan emin olmalıyız . SQL Server projesinden SDK projesine dosyaları kopyalar CI / CD boru hattı üzerinde basit bir powershell rutin ile elde:

Kopyalama-Öğe -Yol "Path.To.The.Database.Project \ dbo \ Tables \ *" -Destination (Yeni-öğe -Ad "dbo \ Tables" -Type Directory -Path "Path.To.The.DatabaseSDK.Project \ ")

Not: Dosyaların kökte veya bazı klasörlerde fiziksel olarak SDK projesinde olması gerekir, bu nedenle .sdkSQL Server projesindeki dosyalara bağlantılar çalışmaz. Teorik olarak, bu dosyaları derleme öncesi bir koşulla kopyalamak mümkün olmalıdır, ancak bazı belirsiz nedenlerden dolayı, bu benim için işe yaramadı. Ayrıca .sqlSDK projesinde dosyaları var ve bunları SQL Server projesine bağlamak için çalıştı , ama bu kolayca SQL Server Nesne Gezgini ile bağlantı koparmak, bu yüzden bu da bırakmaya karar verdi.

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.