将两个.dll组合用于MS Access

时间:2018-06-08 14:51:02

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

我使用类库在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&#检查它是否确实有一个强名称时34;它以&#34返回; mergeFile.dll不代表强名称程序集"

有没有办法将这些.dll组合成oneor有没有办法将itextsharp库插入project.dll?

1 个答案:

答案 0 :(得分:0)

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

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

执行以下操作:

在Visual Studio中

  • 创建C#项目时,请选择“类库模板”
  • 下载并将iTextSharp DLL添加到您的项目
  • 编写C#代码
  • 转到“项目”标签
    • 选择项目的属性
    • 选择“应用程序”选项卡
    • 选择装配信息
    • 勾选“使程序集COM可见”
    • 选择“构建”标签
    • 勾选“注册COM互操作”
    • 选择签名选项卡
    • 勾选“签署大会”
    • 选择强名称密钥文件
    • 使用现有密钥文件或创建新密钥文件
  • 完成后,选择屏幕顶部的“Build”
    • 这将创建您需要在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中使用,但我不得不排除括号

EG。

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

methodName“Hello,World” - 在VBA中工作

注2:

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

要执行此操作,请使用Regasm.exe project.dll / u