Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf SSDT添加要部署的程序集_Wcf_Visual Studio 2012_Deployment_.net Assembly_Sql Server Data Tools - Fatal编程技术网

Wcf SSDT添加要部署的程序集

Wcf SSDT添加要部署的程序集,wcf,visual-studio-2012,deployment,.net-assembly,sql-server-data-tools,Wcf,Visual Studio 2012,Deployment,.net Assembly,Sql Server Data Tools,我有一个老项目,它使用了来自SQL Server的C#CLR触发器的WCF。我总是通过运行脚本来安装它 但我决定在VS 2012上继续SSDT项目。我已从空数据库导入项目。 WCF功能依赖于.net framework中的多个程序集 SMdiagnostics System.Web System.Messaging system.identitymodel system.identitymodel.selectors microsoft.transactions.bridge System.Se

我有一个老项目,它使用了来自SQL Server的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。我还将它们添加到我的项目中的Assemblys子文件夹下

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

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

在SQL目录中找不到程序集“system.servicemodel,version=3.0.0.0,culture=neutral,publickeytoken=b77a5c561934e089.”

如果我尝试创建自定义脚本以将程序集添加到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项目一起部署


谢谢。

要将.NET程序集添加到SSDT项目,请执行以下操作:

  • 在解决方案资源管理器中,展开项目并在“引用”上单击鼠标右键
  • 在“添加引用”窗口中,浏览程序集或从“程序集”类别中选择
  • 在添加的部件上单击鼠标右键,然后单击“属性”
  • 确保设置了以下属性:
    • 生成Sql脚本:True
    • 模型感知:正确
    • 权限集:安全/外部/不安全(取决于程序集)
  • 按F5键部署到LocalDB/Debug目标,或选择“发布并生成脚本”以验证更改
  • DACPACs(SSDT构建的结果)不允许使用路径创建程序集,因为DLL不包括在内,并且无法在另一台主机上保证该路径。因此,DACPAC中只允许嵌入二进制文字