提问者:小点点

Visual Studio 2019 SSDT项目SQLCLR签名不生成签名的DLL


我使用Visual Studio 2019创建了一个SSDT项目。添加了一个SQL CLR C#用户定义函数。

“打开项目属性”页,在“SQLCLR”选项卡中,单击“签名。。。”按钮勾选“签名程序集”,创建新的密钥文件。但是在生成项目之后,生成的DLL没有签名。DLL没有数字签名。

如何使用Visual Studio对SQL CLR DLL进行签名?


共1个答案

匿名用户

为什么说DLL没有签名呢?是否使用可以检查强名称的工具(这与使用证书对程序集/DLL进行签名不同)检查DLL?sn.exe是用于强命名程序集的。它还可以提取一个强名称来确认它确实有一个强名称。

我怀疑DLL/程序集是强命名的(即签名的),但它不能被部署,因为Visual Studio(更具体地说,SSDT,它处理SQL脚本的构建和部署)从未理解SQLCLR安全性的概念(可能是因为SSDT数据库项目只是数据库级的,而不是实例级的)。因此,不幸的是,我们只能自己处理正确的部署(“正确”意味着不为DB启用trustworthy)。

我有解决此问题的两种不同方法的说明,它们都使用SQL Server 2017和更新版本(旧版本没有荒谬且适得其反的“CLR严格安全”服务器配置选项),而且它们都是可自动化的。

  • SQLCLR与SQL Server 2017,第2部分:“CLR严格安全性”-解决方案1
  • SQLCLR与SQL Server 2017,第3部分:“CLR严格安全性”-解决方案2

关于更多的细节和解释,请看我对以下问题的回答(也在S.O.上):

SQL Server 2017上的CLR严格安全性