2013-11-04 66 views
1

我有一个使用WCF从C#CLR触发器用于SQL Server的旧项目。我总是通过运行脚本来安装它。SSDT添加要部署的程序集

但我决定在VS 2012上继续SSDT项目。我从空数据库导入了项目。 WCF功能取决于几个组件从.NET框架

SMdiagnostics 
System.Web 
System.Messaging 
system.identitymodel 
system.identitymodel.selectors 
microsoft.transactions.bridge 
System.ServiceModel 

所以我在我的项目,这些DLL的参考。我也将它们添加到Assemblies子文件夹下的项目中。

但是,当我创建一个部署脚本时,这些程序集不在其中。

所以当我尝试发布脚本到数据库时,我收到一个错误。

Assembly 'system.servicemodel, version=3.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089.' was not found in the SQL catalog.

如果我尝试创建自定义脚本组件添加到数据库:

create assembly [SMdiagnostics] 
from 'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\SMdiagnostics.dll' 
with permission_set = unsafe 
go 

我收到错误

Error: SQL70502: The assembly source is not valid. Only binary literals are allowed.

如何从.NET添加组件能够被一起部署我的SSDT项目?

谢谢。

回答

7

为.NET程序集添加到SSDT项目:

  1. 在解决方案资源管理器中,展开项目并右键单击引用。
  2. 在“添加引用”窗口中,浏览程序集或从“程序集”类别中进行选择。
  3. 右键单击添加的程序集并单击属性。
  4. 确保这些属性被设置:
    • 生成SQL脚本:真
    • 型号意识到:真正的
    • 权限集:安全/外部/不安全(取决于组装)
  5. 新闻F5部署到LocalDB/Debug目标或选择发布并生成脚本来验证更改。

DACPACs(SSDT构建的结果)不允许带路径的CREATE ASSEMBLY,因为不包含DLL,并且路径无法在其他主机上得到保证。因此在DACPAC中只允许嵌入的二进制文字。