Sql-Server
sqlproj 中的引用程序集未部署到伺服器
我有一個 Visual Studio 2013 數據庫項目,它採用fastJSON的修改版本作為參考。我在參考屬性中選擇了 Generate DDL,如下圖所示:
在 .sqlproj msbuild 文件中:
<Reference Include="fastJSON"> <HintPath>..\..\fastjson\output\net40\fastJSON.dll</HintPath> <GenerateSqlClrDdl>True</GenerateSqlClrDdl> </Reference>
但是 bin/debug/Project.sql 不包含
CREATE ASSEMBLY fastJSON . . .
. 手動添加程序集,然後我的項目將部署並執行。我該怎麼做才能讓 Visual Studio 部署我的程序集?
我玩了一下以弄清楚這些設置的作用……當我發表評論時,我只提到了我們的設置是什麼而沒有理解它們;我不是我們遷移到數據庫項目的項目負責人,所以我不熟悉這些東西的細節。
該
Model Aware
屬性需要設置為True
。這個屬性的文件記錄很差,但據我了解,啟用它會將程序集中的對象公開給數據庫模型,以便它們可以在 SQLCLR 包裝器(即
CREATE ... EXTERNAL ...
)中使用,並且可以解析引用。如果項目在模型中不包含這些對象,則無法在輸出中編寫腳本。此外,如果程序集中存在對對象的引用並且此屬性設置為False
,則項目將無法建構。我提到的
Generate Sql Script
財產處於類似的文件狀態。這控制是否將程序集中的公開可見成員自動編寫到輸出中。我們禁用它以保留重命名 SQLCLR 包裝器的靈活性並選擇性地僅包含我們需要的對象。您設置哪種方式取決於您的判斷。希望這有助於這些屬性的公共文件!