Perakitan referensi dalam sqlproj tidak digunakan untuk server

9

Saya memiliki Visual Studio 2013 Database Proyek yang membutuhkan versi modifikasi dari fastJSON sebagai referensi. Saya memilih Hasilkan DDL di properti referensi seperti yang ditunjukkan pada tangkapan layar ini:

panel properti fastJSON

Dan dalam file msbuild .sqlproj:

<Reference Include="fastJSON">
  <HintPath>..\..\fastjson\output\net40\fastJSON.dll</HintPath>
  <GenerateSqlClrDdl>True</GenerateSqlClrDdl>
</Reference>

Namun bin / debug / Project.sql tidak mengandung baris untuk CREATE ASSEMBLY fastJSON . . .. Menambahkan perakitan secara manual berfungsi dan proyek saya kemudian akan digunakan dan dijalankan. Apa yang saya lakukan untuk mendapatkan Visual Studio untuk menyebarkan perakitan saya?

Justin Dearing
sumber
5
Hmmm ... milik kita diatur ke False, dan Model Awarediatur ke True, dan kita mendapatkan CREATE ASSEMBLYoutput. Mungkin coba pengaturan itu dan lihat apa yang terjadi?
Jon Seigel

Jawaban:

10

Saya bermain-main sedikit untuk mencari tahu apa yang dilakukan pengaturan ini ... ketika saya berkomentar, saya hanya menyebutkan apa pengaturan kami tanpa memahaminya; Saya bukan pimpinan proyek untuk migrasi kami ke Proyek Database, jadi saya tidak terbiasa dengan hal-hal kecil dari hal ini.

The Model Awareproperti perlu ditetapkan untuk True.

Properti ini didokumentasikan dengan buruk, tetapi dari pemahaman saya, mengaktifkannya akan mengekspos objek dalam perakitan ke model database sehingga mereka dapat digunakan dalam pembungkus SQLCLR (yaitu, CREATE ... EXTERNAL ...) dan referensi dapat diselesaikan. Jika proyek tidak menyertakan objek-objek ini dalam model, tidak mungkin mereka akan dituliskan dalam output. Juga, jika ada referensi ke objek dalam perakitan dan properti ini diatur ke False, proyek akan gagal dibangun.

The Generate Sql Scriptproperti saya sebutkan dalam keadaan yang sama dokumentasi. Ini mengontrol apakah anggota yang dapat dilihat secara publik dalam majelis secara otomatis dituliskan ke dalam output. Kami menonaktifkannya untuk mempertahankan fleksibilitas penggantian nama pembungkus SQLCLR dan secara selektif hanya menyertakan objek yang kita butuhkan. Cara Anda mengatur ini sesuai dengan kebijaksanaan Anda.

Semoga itu membantu dokumentasi publik dari properti ini!

Jon Seigel
sumber
Terima kasih untuk ini Jon! Ini memperbaiki kesalahan "tidak dapat menyelesaikan token" saya.
Rolan
Di mana tepatnya "Model Aware" disetel ke true?
nh43de
Model Awaredan properti lainnya dapat diatur dengan mengklik kanan pada DLL yang dirujuk dan memilih Properties.
d12