1

有没有人有幸为 iTextSharp 创建一个程序集以与 CLR 存储过程一起使用?我整个下午都在尝试,但没有得到任何结果。SQL管理工作室说我需要先注册system.drawing(不能是新版本,必须是旧版本)但是当我尝试运行创建它时它给我带来了安全和不安全的问题。

所以我只是想知道是否有人在设置 iTextSharp 以通过 CLR SPROCS 工作时运气好?我想这样做的原因是因为这样我就可以更容易地传递参数并生成报告(CLR SPROC 保存标准的静态内容,而参数可以控制动态内容)

谢谢你的帮助

4

2 回答 2

1

在服务器上注册这些程序集:

CREATE ASSEMBLY [System.Drawing] FROM
  'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll'
  WITH PERMISSION_SET = UNSAFE

CREATE ASSEMBLY [System.Windows.Forms] FROM
  'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll'
  WITH PERMISSION_SET = UNSAFE

CREATE ASSEMBLY [itextsharp] FROM
  'C:\MY_CLR\itextsharp.dll'
  WITH PERMISSION_SET = UNSAFE

然后您可以在添加引用对话框(SQL Server 选项卡)中找到 itextsharp 的引用

它可以工作(VS2010、C#、SQLServer2005、itextsharp5.0)

于 2010-10-25T11:30:50.403 回答
1

正如其他答案所暗示的,您不需要System.Windows.Forms.dll 。 只需将这 2 个引用添加到您的 Visual Studio 项目中:

  1. System.Drawing.dll
  2. itextsharp.dll

确保您的项目引用了这两个 DLL。
然后在这 2 个引用的 DLL 的属性中,将“模型感知”属性设置为“
关于这个几乎没有记录的属性的内容将自动部署您的引用程序集。
在此处输入图像描述

重建您的项目(确保执行此操作,否则您可能会看到错误)并尝试部署。
它应该自动将这 2 个引用作为程序集添加到您的 SQL 数据库中。
一旦添加,它至少足够聪明,不会在随后的重新部署中删除并再次添加它们。

注意:执行此操作后,每隔一次我尝试部署我的项目时它都会失败。
我不知道为什么会这样,但我愿意忍受它(我使用的是 VS2013)。


警告:我遇到了这个可怕的错误:

ALTER ASSEMBLY 失败,因为引用的程序集会更改。引用的程序集列表必须保持不变。

如果发生这种情况,您需要删除整个程序集,因为有关部署的某些内容会导致程序集的一部分保持完整并且不会更新外部引用,而是会给出这个神秘/无用的错误。

我最终做的是删除PreDeployScript.sql中的所有依赖项程序集。这样我就可以避免在我将 SQL 程序集部署到的任何服务器上(或添加新引用时)出现问题。

于 2016-10-26T16:37:02.173 回答