Saya ingin baris perintah untuk membangun proyek tertentu dari solusi menggunakan msbuild seperti yang kita lakukan dengan devenv.com. Di devenv.com kita dapat menentukan proyek solusi menggunakan baris perintah berikut
devenv.com /Build Release|x86 test.sln /project "testproject"
Menggunakan baris perintah di atas saya dapat membangun proyek uji di test.sln menggunakan devenv.com. Apa baris perintah untuk msbuild untuk solusi yang sama.
Terima kasih
Jawaban:
Perhatikan bahwa yang ditugaskan
/t
adalah nama proyek dalam solusi, itu bisa berbeda dari nama file proyek.Juga, seperti yang dinyatakan di Cara: Membangun target spesifik dalam solusi menggunakan MSBuild.exe :
Anda juga dapat membangun banyak proyek sekaligus:
Untuk membangun kembali atau membersihkan, ubah
/t:project
ke/t:project:clean
atau/t:project:rebuild
sumber
/t
parameter untuk setiap proyek yang akan dibangun:msbuild test.sln /t:project /t:project2
/t:SlnFolder\My_Project_name
.MSBuild sebenarnya bekerja melalui penggunaan proyek bukan solusinya. Solusinya hanya digunakan untuk mengurai menjadi file proyek sementara di MSBuild secara internal. Anda seharusnya dapat membangun proyek yang diminati secara langsung melalui MSBuild dengan menjalankan perintah berikut.
Ada satu masalah besar yang saya tahu Anda dapat menggunakan proyek secara langsung daripada solusinya: jika Anda menggunakan solusi untuk mengekspresikan ketergantungan antar proyek, alih-alih menambahkan referensi ke proyek dan membiarkan sistem build mengerjakan dependensi secara otomatis .
Jika Anda menerapkan urutan build menggunakan file sln, saya sarankan untuk mengerjakan dependensi tersebut langsung ke file proj dan menghapusnya dari sln. Ini akan memungkinkan Anda untuk memanggil file proj dari MSBuild secara langsung dan semua proyek akan dibangun secara independen tanpa pekerjaan tambahan. Anda benar-benar harus memperlakukan file sln sebagai sekelompok proyek untuk membuat pekerjaan di Visual Studio lebih mudah dan bukan sebagai input build.
sumber
Posting sebagai informasi untuk pencari masa depan
Tambahkan yang berikut ini ke skrip build dan jalankan sekali. Ini akan menghasilkan target yang tepat dan informasi lain yang benar-benar akan digunakan msbuild.
Contoh: Jika Anda memiliki
.
nama proyek atau folder, msbuild akan mengharapkan_
di tempat.
.Setelah mendapatkan informasi, perbarui skrip build dengan detail yang diperlukan.
sumber
Untuk melakukan ini, Anda perlu tahu apa nama target proyek , tidak harus nama proyek.
Salah satu cara untuk mengetahuinya adalah dengan menggunakan MSBuild terhadap SLN Anda dengan parameter yang dimaksudkan setelah menyetel variabel lingkungan khusus yang dipanggil
MSBuildEmitSolution
ke nilai1
.Saya baru-baru ini harus melakukan ini karena nama yang sangat spesifik untuk target di direktori bersarang. Jadi dari file yang saya buat,
my_stuff.sln.metaproj
saya menemukan baris ini:<Target Name="Utils\Firewall\FirewallUtils:Rebuild">
Itu berarti baris perintah yang akan digunakan akhirnya menjadi,
sumber
.csproj
dalam kasus saya). AKU <3 JADI!Hanya untuk menambahkan informasi tambahan, menjalankan msbuild di folder proyek secara default akan membangun file proyek karena satu-satunya di sana.
Ada banyak variasi penggunaan msbuild dengan cara ini. Anda dapat menentukan file proj secara langsung.
Tinjau dokumentasi msbuild untuk penggunaan, persyaratan file proj, serta manfaat membangun proyek alih-alih solusinya.
Dokumentasi MS MSBuild
Ada keuntungan membangun dengan cara ini seperti yang disebutkan oleh mark-smith di atas.
sumber