【发布时间】:2011-12-22 01:52:08
【问题描述】:
我在同一个解决方案中有一个数据库项目和一个 SQLCLR 数据库项目。这两个项目都将代码部署到数据库,但是我希望数据库项目负责所有代码的部署,包括自定义程序集。
我们使用数据库项目部署到我们的暂存和生产环境,不清楚的是如何让单独项目的程序集也被部署。
【问题讨论】:
标签: visual-studio-2010 sqlclr database-project
我在同一个解决方案中有一个数据库项目和一个 SQLCLR 数据库项目。这两个项目都将代码部署到数据库,但是我希望数据库项目负责所有代码的部署,包括自定义程序集。
我们使用数据库项目部署到我们的暂存和生产环境,不清楚的是如何让单独项目的程序集也被部署。
【问题讨论】:
标签: visual-studio-2010 sqlclr database-project
这两个项目文件是msbuild项目文件。因此,您可以使用 msbuild 脚本来驱动它们。
数据库项目导入此文件。 $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets
在我的 64 位机器上
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData
它的目标是 DspBuild DspSetupDeploy Dsp部署
SqlClr 项目导入时
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlClr.targets
它有类似的目标
SqlClrDeploy
一个调用两个部署目标的简单 msbuild 文件就足够了。
或者您可以自定义数据库项目的文件以在构建到其他文件的目标之前调用。哪个会更复杂。
【讨论】:
事实证明,这非常简单。在数据库项目中添加对 SqlClr 项目的引用。然后数据库项目将自动识别程序集,并将其添加到它的脚本集。
将程序集添加到数据库后,在 CLR 类型、函数、聚合等的创建脚本中引用它是一件简单的事情。
逐步添加SQLCLR聚合函数: 1)右键单击数据库项目->添加引用。 从解决方案的项目列表中选择 SQL CLR 项目
2) 切换到数据库 Schema (View -> Database Schema View) 验证程序集是否出现在程序集文件夹中
3) 深入到 Functions 文件夹(Schema -> dbo -> Programmability -> Functions) 右键添加->函数->聚合函数
相应地编辑模板以创建聚合。
现在数据库项目是一个完整的部署单元,并且不需要 SQL CLR 项目作为部署的一部分。
【讨论】: