Microsoft.WebApplication.targets tidak ditemukan, di server build. Apa solusinya?

410

Mencoba membangun proyek saya di server build memberi saya kesalahan berikut:

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.

Saya memecahkan masalah ini beberapa bulan yang lalu, dengan menginstal Visual Studio 2010 pada Build Server. Tapi sekarang saya sedang menyiapkan server baru dari awal, dan saya ingin tahu apakah ada solusi yang lebih baik untuk menyelesaikan masalah ini.

stacker
sumber
1
Apakah Proyek Aplikasi Web sudah usang? Saya ingin tahu apa alasannya untuk memerlukan versi lama Visual Studio untuk membangunnya?
brianary
1
Lebih penting lagi, apakah Anda benar-benar menyebarkan melalui server build? misal saya tidak, saya bahkan punya proyek pemasang web terpisah dalam solusinya ... dan masih menginginkan hal yang berdarah ini ... answer = hapus dari file proj! mudah.
Paul Zahra
1
Diperbaiki dengan mengganti <Import Project="..\Packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />jalur dengan $(VSToolsPath)sebagai:<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" />
GJ

Jawaban:

207

Untuk menjawab judul pertanyaan (tetapi bukan pertanyaan tentang hasil yang Anda dapatkan):

Menyalin folder berikut dari mesin dev Anda ke server build Anda memperbaiki ini jika itu hanya aplikasi web

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

Hapus x86 sesuai dengan bagaimana bangunan Anda rusak. Jika Anda memiliki jenis proyek lain, Anda mungkin perlu menyalin seluruh folder msbuild.

Chris S
sumber
11
Ini bekerja untuk m2 dengan proyek VS2012, setelah mengganti v10.0 ke v11.0
DenNukem
2
tidak bisakah kita menginstal alat MSBuild saja? microsoft.com/en-us/download/confirmation.aspx?id=40760
user20358
1
Sayangnya, menginstal alat MSBuild tidak cukup untuk membangun proyek yang dapat dikompilasi dengan baik di VisualStudio 2013
Michael Shaw
Saya harus menyalin folder Web ke v11.0 agar berfungsi setelah menginstal VS2013, itu hilang di sana. Dapat dikompilasi dalam VS tetapi tidak melalui MSBUILD secara langsung.
Martin Braun
9
bekerja untuk VS2017. cukup salin C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ vXX.0 \ WebAplikasi ke C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \
WebAplikasi
95

Membangun dan menerbitkan WAP tidak didukung jika VS tidak diinstal. Dengan itu, jika Anda benar-benar tidak ingin menginstal VS maka Anda harus menyalin semua file di bawah %ProgramFiles32%\MSBuild\Microsoft\.

Anda juga perlu menginstal Web Deploy Tool . Saya pikir hanya itu.

Sayed Ibrahim Hashimi
sumber
4
Sayed - lihat jawaban di bawah dari dansomething - apakah jawaban Anda benar? Bahkan menginstal paket VS 2010 Shell Integrated, dan .NET SDK tidak akan menginstal dengan benar dukungan proyek Aplikasi Web?
Adam
@SayedIbrahimHashimi Anda harus mendaftarkan DLL dengan GAC jika Anda melakukan penyalinan folder manual?
TheOptimusPrimus
Dan bagaimana dengan Microsoft.TextTemplating.targets? Apa yang harus saya lakukan untuk memasukkannya ke folder mereka? C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0
Pengembang
@ClarkKent, maaf saya tidak dapat berbicara dengan file TextTemplating. Saya tidak terbiasa dengan itu.
Sayed Ibrahim Hashimi
77

UPD: per VS2017, ada beban kerja di Alat Bangun yang menghilangkan masalah ini sepenuhnya. Lihat jawaban @SOReader .

Jika Anda memilih untuk tidak mengubah apa pun di build server, dan Anda masih ingin proyek membangun langsung dari kontrol sumber, mungkin ide yang baik untuk meletakkan biner yang diperlukan di bawah kontrol sumber. Anda harus memodifikasi bagian impor dalam file proyek Anda agar terlihat seperti ini:

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

Baris pertama adalah impor aktual dari lokasi baru yang relatif terhadap direktori solusi. Yang kedua adalah versi dimatikan ( Condition="false") dari baris asli yang memungkinkan Visual Studio untuk tetap menganggap proyek Anda sebagai Proyek Aplikasi Web yang valid (itulah trik yang dilakukan VS 2010 SP1 sendiri).

Jangan lupa menyalin folder C:\Program Files (x86)\Microsoft\VisualStudio\v10.0\WebApplicationske di BuildTargetsbawah kendali sumber Anda.

Andriy K
sumber
Solusi ini bekerja untuk saya dan benar-benar pilihan terbaik dalam kasus saya. Ini karena saya tidak memiliki akses ke server build. Saya menggunakan bambu elastis Atlassian yang memutar server baru untuk bertindak sebagai server bangun. Sekilas tidak terlihat bahwa AMI ini termasuk target Aplikasi Web ?? Itu tidak masuk akal bagi saya, tetapi itulah yang tampak.
Cody Clark
1
Ini adalah pendekatan yang bagus, tetapi perubahan ini mengharuskan setiap file csproj diubah. Sulit jika Anda menambahkan proyek baru ke solusi. Tentu saja bisa diselesaikan dengan templat proyek khusus, tapi tetap saja. Bagaimanapun, jawaban ini mengarahkan saya ke arah yang benar. Terima kasih!
100r
76

Saat ini, pada tahun 2017, Anda dapat menginstal redist WebApplication dengan MSBuildTools. Buka saja halaman ini yang akan mengunduh MSBuild 2017 Tools dan saat instalasi klik Web development build toolsuntuk memasang target ini juga: masukkan deskripsi gambar di sini

Ini akan menyebabkan menginstal pustaka yang hilang C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationssecara default

SOReader
sumber
2
Saya cukup terkejut, bahwa anak saya yang berusia lima tahun tentang pengemasan libs ke dalam kontrol sumber, dan modifikasi masih mendapatkan suara hingga hari ini, sementara ini benar di luar kotak jawaban.
Andriy K
2
@AndriyK Solusi Anda sedikit berbeda dengan apa yang saya sarankan dan saya mengerti mengapa seseorang mungkin lebih suka milik Anda daripada saya ... kecuali itu hanya kemalasan; D
SOReader
2
Untuk menjadikan ini lebih umum, untuk versi Visual Studio yang akan datang, Anda dapat mengunduh Build Tools terbaru dari visualstudio.microsoft.com/downloads. Gulir ke bawah halaman dan dekat bagian bawah, buka bagian "Alat untuk Visual Studio", lalu unduh " Bangun Alat untuk Visual Studio ". Saat ini untuk VS 2017 tetapi saya menganggap itu akan sama untuk versi masa depan. Omong-omong, jika Anda memerlukan path ke msbuild.exe untuk alat CI Anda (misalnya Jenkins), untuk VS 2017 akan diinstal di C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ 15.0 \ Bin \ msbuild.exe.
Simon Tewsi
2
Cara yang kompatibel dengan build-server (baca: command line) adalah choco install visualstudio2017-workload-webbuildtools.
Paul Hicks
1
Juga mencatat bahwa "Web pembangunan membangun alat" paket , Microsoft.VisualStudio.Workload.WebBuildTools, dapat diinstal melalui baris perintah dengan menelepon vs_BuildTools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools. Tambahkan --passivetidak perlu intervensi pengguna.
Wai Ha Lee
70

Anda juga dapat menggunakan paket NuGet MSBuild.Microsoft.VisualStudio.Web.targets , mereferensikannya dalam proyek Visual Studio Anda, kemudian mengubah referensi Anda seperti yang disarankan Andriy K.

Lloyd Holman
sumber
2
Tidak mungkin digunakan karena saya harus membuka solusinya tetapi saya tidak bisa karena kesalahannya.
Pengembang
Jika ada lebih dari satu proyek dalam solusi, Anda harus tetap dapat 1. membuka solusi - abaikan bahwa proyek web tidak dimuat; 2. tambahkan referensi nuget; 3. mengambil salah satu pendekatan yang disebutkan setelah itu; Anda dapat mengedit file proyek secara manual, atau mengganti variabel env.VSToolsPath di TeamCity.
Damon
1
apakah ini paket MS nuget yang resmi dirilis, atau apakah seseorang baru saja membuatnya?
Simon_Weaver
solusi hebat - bekerja untuk berbagai versi VS. Saya perlu mengedit file .csproj, YMMV
Jonno
39
Ini bukan paket Microsoft nuget resmi dirilis. Saya tahu itu karena saya membuatnya.
mak
54

Berdasarkan posting ini di sini Anda cukup mengunduh Paket Redistributable Microsoft Visual Studio 2010 Shell (Terintegrasi) dan target dipasang.

Ini menghindari kebutuhan untuk menginstal Visual Studio pada server build.

Saya baru saja mencoba ini sekarang, dan dapat memverifikasi bahwa itu berfungsi:

Sebelum:

kesalahan MSB4019: Proyek yang diimpor "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets" tidak ditemukan. Konfirmasikan bahwa jalur dalam pernyataan sudah benar, dan bahwa file tersebut ada di disk.

Setelah menginstal:

[Dibangun dengan benar]

Ini adalah solusi yang jauh lebih baik daripada menginstal Visual Studio pada server build, jelas.

Matthew Skelton
sumber
7
Ini adalah solusi IMO termudah dan paling sederhana. Saya menggunakan VS 2013, dan saya menemukan bahwa Visual Studio 2013 Shell (Isolated) Redistributable adalah yang bekerja (yang terintegrasi tidak akan menginstal karena ketergantungan pada yang terisolasi).
Matt Miller
@ MatthewSkelton - Apa arti dari build server ?
Mohammed Zameer
2
@BountyMan - server build adalah server yang menjalankan atau mengontrol build Continuous Integration (CI) dari perangkat lunak. Contoh: Jenkins, TeamCity, CruiseControl, dll.
Matthew Skelton
3
Sayangnya dengan VS v14.0, cara menginstal paket adalah melalui nuget tetapi karena masalah saya adalah bahwa build server tidak memiliki VS yang diinstal (hanya MSBuild), menginstal paket terbukti hampir mustahil. Saya menghabiskan berjam-jam meraba-raba dengan PowerShell dan berbagai instalasi setengah didukung dari Nuget sebelum hanya menyalin folder dari PC saya ke server.
pasx
1
@pasx Jika pesan kesalahan berisi "v14" Anda dapat menginstal Visual Studio 2015 Isolated Shell sebagai gantinya, bekerja untuk saya - visualstudioextensibility.com/downloads/vs-shell (di bawah "Unduh URL"; ada survei wajib, selamat menikmati!)
Dunc
38

Windows SDK terbaru, seperti yang disebutkan di atas, di samping "Paket Redistribusi Microsoft Visual Studio 2010 Shell (Terintegrasi)" untuk Microsoft.WebApplication.targets dan "Microsoft Visual Studio System System 2008 Database Edition GDR R2" untuk Microsoft.Data.Schema .SqlTasks.targets harus mengurangi kebutuhan untuk menginstal Visual Studio 2010. Namun, menginstal VS 2010 mungkin sebenarnya kurang keseluruhan untuk diunduh dan lebih sedikit kerja pada akhirnya.

dansomething
sumber
FYI - Jika Anda mencoba untuk membangun proyek Sql pada server build tanpa menginstal full blown VS, Anda kurang beruntung dengan installer System System 2008 Database Edition GDR R2 yang disebutkan di sini. Pra-persyaratannya adalah Visual Studio Team System 2008 Database Edition SP1 (Bahasa Inggris) atau Visual Studio Team System 2008 Suite SP1 (Bahasa Inggris) DAN Visual Studio 2008 Paket Layanan 1. Tampaknya Anda dapat menyalin SqlServer.targets dari .NET Framework \ Direktori v4 dan msbuild TeamData menargetkan file dari \ file program \ msbuild \ microsoft \ visual studio \ v10.0 \ dan csprojs Anda akan dibuat.
Ethan J. Brown
Ini jelas bukan solusi tercantik, tetapi bagi saya waktu adalah yang paling penting. Cukup menyalin melalui direktori MSBuild hanya menyebabkan lebih banyak masalah bagi saya.
21
Ini adalah jawaban yang sangat penting karena jika Anda adalah pengembang independen yang menyiapkan server bangun untuk klien, Anda tidak ingin klien harus mempertahankan lisensi Visual Studio untuk dapat membangun perangkat lunak mereka.
thelsdj
Saya hanya perlu paket shell terintegrasi VS2010 dan EntLib 5 untuk mendapatkan tambang untuk saya buat. Tidak perlu Sistem Tim.
Robin Winslow
1
VS 2010 Shell tidak lagi tersedia di tautan itu, "Sumber daya yang Anda cari telah dihapus, namanya diubah, atau untuk sementara tidak tersedia.".
kristianp
22

Tambahkan ketergantungan melalui NuGet & tetapkan Parameter Bangun

Sasaran: tidak diperlukan perubahan / pemasangan untuk agen bangunan

Saya telah mengambil pendekatan hybrid untuk pendekatan NuGet oleh Lloyd di sini , yang didasarkan dari solusi dependensi biner yang dilakukan oleh Andrik.

Alasan mengapa saya ingin dapat menambahkan agen build baru tanpa harus melakukan pra-konfigurasi dengan item seperti ini.

  1. Pada mesin dengan Visual Studio, Buka solusinya; abaikan bahwa proyek web gagal.
  2. Di manajer paket NuGet, tambahkan MSBuild.Microsoft.VisualStudio.Web.targets , seperti yang disebutkan Lloyd.
  3. Ini akan menyelesaikan biner [solution]\packages\MSBuild.Microsoft.VisualStudio.Web.targets.nn.n.n.n\tools\VSToolsPath\
    1. Anda dapat menyalin ini ke folder referensi & komit,
    2. Atau gunakan saja di tempat mereka berada. Saya memilih ini, tetapi saya harus berurusan dengan nomor versi di jalur nanti.

Di Versi 7, saya melakukan hal berikut. Ini mungkin tidak perlu, dan berdasarkan komentar sudah pasti tidak diperlukan sekarang. Silakan lihat komentar di bawah ini.

  1. Selanjutnya, di konfigurasi build TeamCity Anda, tambahkan build Paramenter untuk env.VSToolsPathdan atur ke folder VSToolsPath; Saya menggunakan..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath
Damon
sumber
8
tidak perlu melakukan langkah 4, jika Anda cukup mengganti elemen <Import> dalam file proyek Anda dengan yang ini:<Import Project="..\..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.12.0.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />
knocte
Ini harus menjadi jawaban yang diterima ... dan poin 4 harus dihapus.
Izzy
@Izzy terima kasih, apakah Anda melakukan komentar seperti yang ditunjukkan oleh knocte? Saya belum pernah menggunakan TC dalam beberapa tahun, versi 7 iirc.
Damon
@Damon Saya menggunakan Jenkins dan bukan TC, jadi mungkin itu sebabnya saya tidak membutuhkan poin terakhir Anda.
Izzy
21

Saat membangun di server build / CI, matikan impor Microsoft.WebApplication.targetssama sekali dengan menentukan /p:VSToolsPath=''. Ini pada dasarnya akan membuat kondisi baris berikut salah:

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


Inilah yang dilakukan di TeamCity:

masukkan deskripsi gambar di sini

Alex R.
sumber
Membangun target diperlukan jika Anda menggunakan mekanisme "Publikasikan" Visual Studio. Melakukan ini memungkinkan kompilasi untuk melanjutkan dan menyelesaikan, tetapi, itu mungkin tidak lengkap.
starlocke
14

Jika Anda memigrasikan Visual Studio 2012 ke 2013, maka buka file proyek * .csproj dengan edior.
dan periksa elemen ToolsVersion tag 'Project'.

Ubah nilainya dari 4.0 ke 12.0

  • Dari

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" ...
  • Untuk

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

Atau Jika Anda membangun dengan msbuild maka tentukan saja properti VisualStudioVersion

msbuild /p:VisualStudioVersion=12.0

Sumber Solusi

Korayem
sumber
4
Menambahkan / p:VisualStudioVersion=12.0 ke MSBuild Arguments di definisi build TFS 2013 (untuk solusi yang dibuat di Visual Studio 2013) bekerja untuk saya. Untuk beberapa alasan ia akan mencari file di folder v11.0 tanpa parameter apa pun.
Sacha K
3
Solusi ini berhasil bagi saya, saya menggunakan perintah itu:msbuild /p:Platform=x86 /p:VisualStudioVersion=12.0
E. Meir
9

Sepertinya versi baru dari msbuild tidak disertakan bersama Microsoft.WebApplication.targets. Untuk memperbaikinya Anda perlu memperbarui file csproj Anda seperti itu:

1) Edit csproj aplikasi web (klik kanan). Temukan bagian di csproj menuju bagian bawah tentang alat membangun. Seharusnya terlihat seperti itu.

<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) Anda perlu menambahkan satu baris VSToolsPath di bawah tag VisualStudioVersion sehingga terlihat seperti itu

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

Tautan referensi: https://alastaircrabtree.com/cannot-open-vs-2015-web-project-in-vs-2017/

Huy Truong
sumber
8

Ini yang kamu butuhkan. Hanya 103MB. Jangan pasang semuanya

masukkan deskripsi gambar di sini

Simon_Weaver
sumber
Bagaimana saya bisa memasukkan tanda centang pada formulir itu, tanpa menginstal apa pun?
Christian
5

Saya menemukan ini di MS connect :

Ya, Anda perlu menginstal Visual Studio 2010 di mesin build Anda untuk membangun proyek database. Melakukannya tidak memerlukan lisensi tambahan dari Visual Studio.

Jadi, ini adalah satu-satunya pilihan yang saya miliki untuk saat ini.

stacker
sumber
2
Tautannya tampaknya rusak.
Disillusioned
2

Solusi saya adalah campuran dari beberapa jawaban di sini.

Saya memeriksa server build, dan Windows7 / NET4.0 SDK sudah diinstal, jadi saya menemukan path:

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

Namun, pada baris ini:

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

$ (MSBuildExtensionsPath) berkembang menjadi C: \ Program Files \ MSBuild yang tidak memiliki path.

Karena itu yang saya lakukan adalah membuat symlink, menggunakan perintah ini:

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

Dengan cara ini $ (MSBuildExtensionsPath) meluas ke jalur yang valid, dan tidak ada perubahan yang diperlukan dalam aplikasi itu sendiri, hanya di server build (mungkin orang dapat membuat symlink setiap build, untuk memastikan langkah ini tidak hilang dan "didokumentasikan" ").

Kat Lim Ruiz
sumber
2

Aku tetap ini dengan menambahkan
/p:VCTargetsPath="C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V120"

ke
Build > Build a Visual Studio project or solution using MSBuild > Command Line Arguments

MonoThreaded
sumber
2

Saya mencoba banyak solusi, tetapi pada akhirnya jawaban ini berhasil untuk saya: https://stackoverflow.com/a/19826448/431522

Ini pada dasarnya mencakup memanggil MSBuild dari direktori MSBuild, bukan direktori Visual Studio.

Saya juga menambahkan direktori MSBuild ke jalur saya, untuk membuat skrip lebih mudah dikodekan.

hendrikswan
sumber
2

Siapa pun yang datang ke sini untuk Visual Studio 2017. Saya memiliki masalah yang sama dan tidak dapat mengkompilasi proyek setelah pembaruan ke 15.6.1. Saya harus menginstal alat MSBulild tetapi masih ada kesalahan.

Saya dapat memperbaiki masalah dengan menyalin v14.0folder dari C:\Program Files (x86)\MSBuild\Microsoft\VisualStudioke folder yang sama dengan v15.0dan yang menyelesaikan semua kesalahan. Jadi sekarang struktur folder saya terlihat seperti di bawah ini, di mana kedua folder berisi konten yang sama.

masukkan deskripsi gambar di sini

Habib
sumber
2

Jika Anda menggunakan MSBuild, seperti dalam kasus server build, yang berhasil bagi saya adalah:

Ubah yang berikut ini:

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

untuk:

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

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

Semoga ini bisa membantu seseorang.

Colin Q
sumber
untuk menyebutkan, perubahan harus dilakukan ke file .csproj, vbproj yang menyinggung.
Colin Q
0

Jika Anda mencoba untuk menyebarkan proyek menggunakan VSTS, maka masalah mungkin terhubung dengan memeriksa opsi "Hosted Windows Container" bukannya "Hosted VS2017" (atau 18, dll.):

masukkan deskripsi gambar di sini

Arsen Khachaturyan
sumber
0
  • Setelah instalasi alat MSBuild dari Microsoft, tentukan jalur MSBuild di variabel lingkungan, sehingga dapat dijalankan dari jalur apa pun.
  • Edit file .csproj di editor notepad apa pun seperti notepad ++, dan komentar
  • Periksa elemen-elemen berikut, ->
    • Pastikan Anda menggunakan impor hanya sekali, pilih mana yang berfungsi.
    • Pastikan Anda memiliki folder berikut ada di drive, "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0" atau versi mana pun yang direferensikan oleh target MSBuild di "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets "
    • Dari prompt perintah, jalankan perintah berikut, untuk memeriksa

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

Pankaj Awasthi
sumber
0

Saya mengalami masalah ini membangun proyek SQL Server pada pipa CI / CD. Bahkan, saya juga memilikinya secara lokal, dan saya tidak berhasil menyelesaikannya.

Apa yang berhasil bagi saya adalah menggunakan MSBuild SDK , yang mampu menghasilkan paket Aplikasi Tier Data SQL Server ( .dacpac) dari sekumpulan skrip SQL, yang menyiratkan membuat proyek baru. Tapi saya ingin menyimpan proyek SQL Server, sehingga saya bisa menautkannya ke database langsung melalui SQL Server Object Explorer pada Visual Studio. Saya mengambil langkah-langkah berikut untuk menjalankan dan menjalankan ini:

  1. Terus proyek SQL Server saya dengan .sql skrip database.
  2. Membuat proyek perpustakaan kelas .NET Standard 2.0, memastikan bahwa kerangka kerja target adalah .NET Standard 2.0, sesuai pedoman dalam tautan di atas.
  3. Atur konten .csprojsebagai berikut:

    <?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. Saya telah memilih Sql140 sebagai versi SQL Server karena saya menggunakan SQL Server 2019. Periksa jawaban ini untuk mengetahui pemetaan ke versi yang Anda gunakan.

  5. Abaikan proyek SQL Server on build, sehingga berhenti merusak secara lokal (itu membangun di Visual Studio, tetapi gagal pada VS Code).

  6. Sekarang kita hanya perlu memastikan .sqlfile berada di dalam proyek SDK ketika dibangun. Saya mencapainya dengan rutin powershell sederhana pada pipa CI / CD yang akan menyalin file dari proyek SQL Server ke proyek SDK:

Copy-Item -Path "Path.To.The.Database.Project \ dbo \ Tables \ *" -Destination (New-item -Name "dbo \ Tables" -Type Directory -Path "Path.To.The.DatabaseSDK.Project \ ")

PS: File-file harus secara fisik di proyek SDK, baik di root atau pada beberapa folder, jadi tautan ke .sdkfile dalam proyek SQL Server tidak akan berfungsi. Secara teori, seharusnya bisa menyalin file-file ini dengan kondisi pra-bangun, tetapi untuk beberapa alasan yang tidak jelas, ini tidak berfungsi untuk saya. Saya mencoba juga untuk memiliki .sqlfile pada proyek SDK dan menautkannya ke proyek SQL Server, tetapi itu akan dengan mudah memutus tautan dengan SQL Server Object Explorer, jadi saya memutuskan untuk membatalkan ini juga.

ccoutinho
sumber