Pertanyaan Kontrak kode membangun tindakan perakitan referensi


Saya menggunakan kontrak kode dan mencoba memahami opsi membangun mana yang harus saya gunakan dan kapan. Opsi kontrak perakitan dibuat didefinisikan dalam properti proyek

Kontrak Kode -> Majelis Referensi Kontrak:

  • Tidak ada
  • Membangun
  • DoNotBuild

Ada pemikiran atau rekomendasi?


32
2018-04-28 10:17


asal


Jawaban:


Ya, opsi None dan DoNotBuild tampak agak aneh.

Jika Anda memilih Tidak ada dan referensi perpustakaan dalam Proyek dengan kontrak, Anda akan mendapatkan Peringatan.
Jika Anda memilih DoNotBuild, Anda tidak akan mendapatkan peringatan.

Dan tentu saja hanya Build yang menghasilkan referensi, dan untuk .EXE itu tidak masalah.


7
2018-04-28 20:08



Itu Majelis Referensi Kontrak adalah jenis perakitan khusus yang mempertahankan kontrak kode apa pun yang Anda tetapkan dalam file kode sumber Anda. Ini diperlukan karena pada saat kompilasi, kode kontrak "rewriter" (ccrewriter) menghapus atau mengganti setiap kontrak dengan kode verifikasi yang setara (Contract.Requires(someBool) mungkin ditulis ulang sebagai if (!someBool) throw).

Tanpa kontrak kode, jika nanti Anda merujuk pada rakitan yang dikompilasi (bukan proyek dan semua file kode sumbernya) dalam solusi yang berbeda, ia mungkin tidak mengetahui kontrak kode apa pun. Punya a Majelis Referensi Kontrak telah dibuat, IDE dapat mempertimbangkan setiap kontrak dalam perakitan itu selama analisis statis.

Adapun pengaturannya, inilah yang mereka maksud:

  • (none) berarti Anda belum membuat pilihan, sehingga tidak ada rujukan referensi yang akan dibuat. Jika perakitan lain tergantung pada yang satu ini dan Anda telah memilih Build untuk itu, Anda mungkin menerima kesalahan / peringatan bahwa "tidak ada rujukan kontrak ditemukan."

  • Jika Anda mengubah pengaturan ke Build, rujukan referensi akan dibuat yang berisi semua kontrak Anda. Anda akan dapat menggunakan semua kontrak kode yang didefinisikan dalam perakitan tersebut seolah-olah Anda memiliki kode sumber. Pilih ini jika Anda membuat perpustakaan yang akan digunakan oleh pihak ke-3 (paket NuGet, misalnya) atau siapa pun setelah perakitan dikompilasi jadi mereka akan mendapat manfaat dari kontrak kode Anda dalam analisis statis.

  • Jika Anda mengubah pengaturan ke DoNotBuild, tidak ada rakitan referensi yang akan dibuat untuk mempertahankan kontrak kode Anda. Pilih ini jika Anda tidak berniat untuk perakitan ini untuk digunakan di tempat lain, atau jika semua pengguna lain dari perakitan akan memiliki akses ke kode sumber dan tidak memerlukan rujukan. Ini dapat mempercepat pembangunan sedikit.


35
2017-07-26 23:58