我有一个旧项目,它使用WCF来为SQL Server提供C#CLR触发器。我总是通过运行脚本来安装它。
但是我决定转到VS 2012上的SSDT项目。我从空数据库导入了项目。 WCF功能取决于.net framework
中的几个程序集SMdiagnostics
System.Web
System.Messaging
system.identitymodel
system.identitymodel.selectors
microsoft.transactions.bridge
System.ServiceModel
所以我在项目中引用了这些dll。我还将它们添加到Assemblies子文件夹下的项目中。
但是,当我创建部署脚本时,这些程序集不在其中。
因此,当我尝试将脚本发布到数据库时,我收到错误。
程序集'system.servicemodel,version = 3.0.0.0,culture = neutral,publickeytoken = b77a5c561934e089。'在SQL目录中找不到。
如果我尝试创建自定义脚本以将程序集添加到db:
create assembly [SMdiagnostics]
from 'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\SMdiagnostics.dll'
with permission_set = unsafe
go
我收到错误
错误:SQL70502:程序集源无效。只允许二进制文字。
如何从.NET添加程序集以与我的SSDT项目一起部署?
感谢。
答案 0 :(得分:9)
将.NET程序集添加到SSDT项目:
DACPAC(SSDT构建的结果)不允许CREATE ASSEMBLY使用路径,因为不包含DLL并且无法保证其他主机上的路径。因此,DACPAC中只允许嵌入的二进制文字。