我有一个 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 包装器的灵活性并选择性地仅包含我们需要的对象。您设置哪种方式取决于您的判断。希望这有助于这些属性的公共文档!