Saya telah membuat .targets
file MSBuild khusus yang saya sertakan dalam proyek Delphi XE melalui IDE dan mengaktifkannya dari menu konteks Project Manager. Meskipun file divalidasi, selalu dinonaktifkan setelah saya menyimpan kembali file proyek.
Berikut adalah versi sederhana dari file target, bernama Custom.targets
.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Hello">
<Message Text="Hello from custom target"/>
</Target>
</Project>
Sebagai file yang berdiri sendiri ini berfungsi seperti yang diharapkan: mengetik ...
MSBuild Custom.target /t:Hello
... di baris perintah memberikan pesan yang diharapkan.
Menambahkan Custom.targets
ke proyek Delphi melalui IDE menampilkan file di Manajer Proyek seperti yang diharapkan, dan .dproj
file sekarang berisi baris ...
<TargetsFile Include="Custom.targets"/>
Saya mengklik kanan file di Manajer Proyek IDE dan memilih Enable
. Tetapi ketika proyek dibangun, Build
jendela pesan menampilkan:
[Peringatan MSBuild] Custom.targets (1): Mengabaikan impor yang dinonaktifkan:
PathToProjectSource\\Custom.targets
Mengklik kanan lagi di Project Manager masih menunjukkan Enable
opsi alih-alih yang diharapkan Disable
.
Di baris perintah MSBuild ProjectName.dproj /t:Hello
juga gagal.
Saya sudah mencoba meretas .dproj
file untuk menambahkan baris ...
<Import Project="Custom.targets"/>
Mengetik MSBuild ProjectName.dproj /t:Hello
sekarang berfungsi. Tetapi lain kali saya menyimpan file proyek dari IDE <Import>
pernyataan itu dihapus.
Adakah yang tahu apa yang salah?
/t:Hello
serta dari IDE dengan klik kanan di Project Manager - Target - Hello. Saya telah menambahkanCustom.targets
ke proyek dengan mengklik kanan pada Manajer Proyek - Tambah - (mencari file). Path adalah direktori yang sama dengan file .dproj.Jawaban:
Delphi menghasilkan seluruh konten dproj itu sendiri dan impor kustom ini akan selalu dihapus.
Anda bisa menulis file msbuild xml Anda sendiri tetapi dproj itu milik Delphi.
Kecuali Anda memiliki kode sumber atau bersedia untuk menambal ide yang tidak dapat Anda lakukan.
Jika Anda benar-benar menginginkan cara xml yang fleksibel untuk membangun proyek delphi dan membuat target yang banyak, cobalah atau ingin vnext (fork saya di bitbucket)
sumber
Saya akan menyertakan file target secara manual dan membangun secara eksternal menggunakan MSBuild daripada dari IDE, karena ketika mengkompilasi dari IDE agak berantakan untuk mengetahui konfigurasi dan target yang telah Anda terapkan (apakah yang diklik pada proyek? Atau yang dari target diaktifkan? Anda tidak mendapatkan petunjuk visual bahwa target kustom diaktifkan).
Saya biasanya melakukannya sebelum
Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets"
jadi mereka tidak akan tampil di IDE (mereka ada, tetapi disembunyikan untuk pengembang).Sebagai contoh proyek Delphi XE4 saya diakhiri dengan:
File .targets saya menetapkan "PropertyGroup" dan "Target" kustom dengan syarat, sehingga hanya akan berlaku ketika dipanggil dari MSBuild:
Kemudian kompilasi dengan:
Dengan menggunakan pendekatan ini, Anda dapat menyesuaikan target pembuatan untuk memastikan setiap aplikasi mendapatkan pengaturan yang benar tanpa terpengaruh oleh perubahan yang dilakukan oleh siapa pun.
sumber