Assembly di riferimento in sqlproj non distribuito sul server


9

Ho un progetto di database di Visual Studio 2013 che prende come riferimento una versione modificata di fastJSON . Ho selezionato Genera DDL nelle proprietà di riferimento come mostrato in questo screenshot:

pannello delle proprietà fastJSON

E nel file msbuild .sqlproj:

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

Tuttavia bin / debug / Project.sql non contiene una riga per CREATE ASSEMBLY fastJSON . . .. L'aggiunta dell'assembly funziona manualmente e il mio progetto verrà quindi distribuito ed eseguito. Cosa devo fare per consentire a Visual Studio di distribuire il mio assembly?


5
Hmmm ... il nostro è impostato su False, ed Model Awareè impostato su True, e otteniamo un CREATE ASSEMBLYin output. Forse prova quelle impostazioni e vedi cosa succede?
Jon Seigel,

Risposte:


10

Ho giocato un po 'per capire cosa fanno queste impostazioni ... quando ho commentato, ho solo menzionato quali sono le nostre impostazioni senza capirle; Non sono il responsabile del progetto per la nostra migrazione ai progetti di database, quindi non avevo familiarità con le minuzie di questa roba.

La Model Awareproprietà deve essere impostata su True.

Questa proprietà è scarsamente documentata, ma dalla mia comprensione, abilitando esporrà gli oggetti all'interno dell'assembly al modello di database in modo che possano essere utilizzati nei wrapper SQLCLR (cioè, CREATE ... EXTERNAL ...) e i riferimenti possano essere risolti. Se il progetto non include questi oggetti nel modello, non è possibile che vengano scritti nell'output. Inoltre, se è presente un riferimento a un oggetto nell'assieme e questa proprietà è impostata su False, il progetto non verrà compilato.

La Generate Sql Scriptproprietà che ho citato è in uno stato di documentazione simile. Ciò controlla se i membri visibili pubblicamente nell'assembly vengono automaticamente copiati nell'output. Abbiamo disabilitato per mantenere la flessibilità di rinominare i wrapper SQLCLR e includere selettivamente solo gli oggetti di cui abbiamo bisogno. Il modo in cui lo imposti dipende dalla tua discrezione.

Speriamo che questo aiuti la documentazione pubblica di queste proprietà!


Grazie per questo Jon! Risolto l'errore "Impossibile risolvere il token".
Rolan,

Dove si trova esattamente "Modello consapevole" su true?
nh43de,

Model Awaree altre proprietà possono essere impostate facendo clic con il tasto destro sulla DLL di riferimento e selezionando Properties.
d12,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.