Sql server dacpac-CLR程序集引用路径问题

Sql server dacpac-CLR程序集引用路径问题,sql-server,sql-server-2012,tfsbuild,dacpac,data-tier-applications,Sql Server,Sql Server 2012,Tfsbuild,Dacpac,Data Tier Applications,以下是我的数据库项目中的确切场景,我正在创建dacpac以在目标SQL实例上部署数据库: 数据库项目具有CLR程序集的引用 TFS生成服务器用于生成项目 在TFS构建过程中创建dacpac –当我尝试运行sqlpackage.exe在我的环境中部署dacpac(在TFS构建过程中生成)时,我会收到一个错误消息,上面写着—— ***未提供任何文件供参考XXXX.XXXX.XXXX.dll;部署可能会失败。当C:\Temp\Dacpac\u testing\XXX.XXXXX.XXXX.Dacp

以下是我的数据库项目中的确切场景,我正在创建dacpac以在目标SQL实例上部署数据库:

  • 数据库项目具有CLR程序集的引用
  • TFS生成服务器用于生成项目
  • 在TFS构建过程中创建dacpac
–当我尝试运行sqlpackage.exe在我的环境中部署dacpac(在TFS构建过程中生成)时,我会收到一个错误消息,上面写着——

***未提供任何文件供参考XXXX.XXXX.XXXX.dll;部署可能会失败。当C:\Temp\Dacpac\u testing\XXX.XXXXX.XXXX.Dacpac 创建时,找到了原始引用文件 C:\BUILDS\1\XXXX\XXXX\SRC\XXXXXXXX\ASSEMBLIES\XXXX.XXXX.dll

如何创建dacpac以引用部署环境(而不是构建dacpac时使用的)上CLR程序集的路径


在此方面的任何帮助都将不胜感激。

很抱歉,我现在只选择了此线程,但我遇到了类似的问题。 打开Sql Server项目中的引用,转到要引用的dll右键单击并选择“属性”

更改以下设置: 生成Sql脚本:True 模型感知:正确


根据clr代码的要求选择相关的权限集。

我能够通过将所有文件包含在正在部署dacpac的计算机上由SSDT项目生成的bin/output文件夹中来解决此问题。此文件夹包括所有引用的DLL和DAPAC。我还将publish.xml文件和一些示例SQLPackage cmd文件包含在构建输出中,以便于部署

我从Richard Gavel在SQL Server数据工具论坛上的一篇文章中找到了答案。

我不知道这是否有帮助,但我在编译的DACPAC和提取的DACPAC之间运行SqlPackage/Action:Script时遇到了问题,并出现了类似的错误(添加引用时出错)。我通过从我的DACPAC的\bin\debug目录复制所有DACPAC解决了这个问题(它大约引用了15个其他数据库项目以及master和msdb)。在那之后,它成功了。因此,在查找引用时,它似乎会首先检查目录(我不知道它是专门查找当前目录还是根DACPAC所在的目录,因为它们是同一个目录)


我认为这并不能回答问题。OP的问题是,在dacpac中,有一个指向CLR DLL(C:\BUILDS…)的路径。dacpac是从生成服务器而不是开发计算机部署的,因此引用的DLL的路径不匹配。这些其他属性不会更改路径。除了创建完全相同的目录结构并将DLL文件移动到构建服务器上,或者修改dacpac以反映到DLL的新路径之外,没有太多options@ed-elliott这个问题与这个项目有联系,这可能会有所帮助:@kevin cunnane如果你有任何建议,请注意这个问题。为了不重复一个问题,我劫持了这个问题,这对SSDT和SqlPackage.exe来说真是一个耻辱。DacPac始终包含从0x4D5A9000300000004000000FFFF0000B800000000000040…开始的model.sql
中.NET程序集的序列化。我希望你的回答会有帮助。这太傻了。顺便说一句,这总比什么都没有好。
model.xml
还包含程序集序列化。现在我们在
model.sql
model.xml
中实现了双重序列化,并且还被罚复制.dll文件。这对于构建服务器的工件存储来说是非常棒的。在哪里参加SSDT开源?)哦,我很恐慌。确实有一个微妙的问题。我又写了一个答案。这只是一个警告。将正确更新或安装程序集及其DB对象。这是经过测试的。但我仍然无法抑制此消息
***未提供任何文件供参考
。我辞职了,谢谢凯文。