SSDT如何添加程序集进行部署

3

我有一个老项目,它在C# CLR触发器中使用WCF。我一直通过运行脚本来安装它。

但是,我决定转向在VS 2012上的SSDT项目。我从空数据库导入了项目。WCF功能依赖于来自.NET Framework的几个程序集。

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

我在项目中引用了这些dll文件,并且将它们添加到了我的“程序集”子文件夹下。但是,当我创建部署脚本时,这些程序集并没有被包含在内。因此,当我尝试将脚本发布到数据库时,会收到错误信息:“在SQL目录中找不到程序集'system.servicemodel, version=3.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089.'”。如果我尝试创建自定义脚本来将程序集添加到数据库中:
create assembly [SMdiagnostics]
from  'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\SMdiagnostics.dll'
with permission_set = unsafe
go

我收到了错误信息

错误:SQL70502:装配源无效。只允许使用二进制字面量。

我该如何将.NET程序集添加到我的SSDT项目中以进行部署?

谢谢。

1个回答

15
要将一个.NET程序集添加到SSDT项目中,按照以下步骤进行操作:
  1. 在解决方案资源管理器中展开项目并右击“引用”。
  2. 在“添加引用”窗口中,可以浏览所需的程序集或从“程序集”类别中选择程序集。
  3. 右键单击已添加的程序集,然后点击“属性”。
  4. 确保设置了以下属性:
    • 生成SQL脚本: True
    • 模型感知: True
    • 权限集: 安全/外部/不安全(根据程序集而定)
  5. 按F5键将其部署至LocalDB/调试目标,或选择发布和生成脚本以验证更改。
DACPACs(SSDT构建的结果)不允许在路径中使用CREATE ASSEMBLY,因为未包含DLL且路径不能在另一主机上得到保证。因此,DACPAC只允许使用嵌入式二进制字面量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接