【问题标题】:Combine two .dll for MS Access为 MS Access 组合两个 .dll
【发布时间】:2018-06-08 14:51:02
【问题描述】:

我在 Visual Studio 中使用类库创建了一个项目,并使用 C# 编写并使用 itextsharp 库。

项目有两个dll:project.dll和itextsharp.dll

我希望能够在其他用户的笔记本电脑上使用这个项目,以便他们可以在 MS Access VBA 中使用它。

我已经在一个简单的项目上对此进行了测试。我创建了一个类库并将 .dll 文件复制到其他用户的电脑上。 然后我使用“regasm testFile.dll /tlb:testFile.tlb /codebase”注册了它。 然后我能够在 VBA Access 编辑器中打开引用 testFile.tlb 文件的 MS Access。

但是现在我有一个包含 itextsharp 的项目,我不知道该怎么做。 我尝试像上面那样使用 regasm,它确实创建了一个 .tlb 文件,它没有注册它的 dll。

我也尝试在 project.dll 和 itextsharp.dll 上使用ilmerge,但这并没有产生一个强名称,尽管这两个 dll 都有一个强名称,如果我理解正确,它需要一个强名称才能工作。

我尝试使用 sn.exe 为合并的 dll 提供一个强名称,但是当我尝试使用“sn -v mergeFile.dll”检查它是否具有强名称时,它返回了“mergeFile.dll 确实不代表强命名程序集”

有没有办法将这些 .dll 组合成一个或有没有办法将 itextsharp 库插入到 project.dll 中?

【问题讨论】:

  • 您将 iTextSharp 链接到 Sourceforge,但那里不再可用。请链接到 itextpdf.com 或 github.com/itext。

标签: c# .net ms-access dll itext


【解决方案1】:

我能够弄清楚如何在不合并 DLL 的情况下在 VBA 中使用 iTextSharp。

要在 Access VBA 中使用 C# 代码,您需要能够添加 C# DLL 作为对 Access VBA 编辑器的引用。 在 DataCam 中完成此操作时,我们需要使用名为 ed iTextSharp.dll 的第三方库,当您想在 VBA 中使用它时,这会使事情变得棘手

执行以下操作:

在 Visual Studio 中

  • 创建 C# 项目时选择类库模板
  • 下载 iTextSharp DLL 并将其添加到您的项目中
  • 编写您的 C# 代码
  • 转到项目选项卡
    • 选择项目的属性
    • 选择应用程序选项卡
    • 选择装配信息
    • 勾选“使程序集 COM 可见”
    • 选择构建选项卡
    • 勾选“注册 COM 互操作”
    • 选择“签名”选项卡
    • 勾选“签署程序集”
    • 选择强名称密钥文件
    • 要么使用现有的密钥文件,要么创建一个新的
  • 完成后,选择屏幕顶部的“构建”
    • 这将创建您需要在 VBA 中使用的 DLL、TLB 和 PDB 文件,这些文件可以在项目的 bin、Debug 文件夹中找到

注册文件

  • 将项目的 DLL、TLB 和 PDB 文件复制到计算机的 SysWOW64 文件夹中
  • 同时将 iTextSharp 的 DLL 和 TLB 文件从同一文件夹复制到 SysWOW64
  • 以管理员身份打开命令提示符
    • 使用命令 Regasm.exe 注册项目的 DLL 文件
    • 示例 1:
    • Regasm.exe project.dll /tlb:project.tlb /codebase
    • 示例 2:
    • C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe C:\Windows\SysWOW64\projectName.dll /tlb:projectName.tlb /codebase

在 Access VBA 中

  • 进入 VBA 编辑器
  • 选择工具然后参考
  • 选择项目的 TLB 和 iTextSharp 的 DLL 文件
  • 您现在可以在 VBA 中使用 C# 代码

注 1:

我写的 C# 方法可以在 VBA 中使用,但我必须排除括号

例如。

methodName("Hello, World") - 在 VBA 中不起作用

methodName "Hello, World" - 在 VBA 中工作

注2:

如果您更新了项目并希望将其添加到 VBA,请务必取消注册旧的 DLL。

为此使用 Regasm.exe project.dll /u

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 2012-07-30
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多