我在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。
我还尝试在项目上使用 ilmerge.dll 和 itextsharp.dll但这并没有产生一个强名称,尽管两个 dll 都有一个强名称,如果我理解正确,它需要一个强名称才能工作。
我试图使用 sn为合并的 dll 提供一个强名称.exe但是当我尝试使用"sn -v mergeFile.dll检查它是否确实具有强名称时,它返回了"mergeFile.dll不代表强名称程序集">
有没有办法将这些.dll合并到一个中,或者有没有办法将 itextsharp 库插入到项目中.dll?
我能够弄清楚如何在VBA中使用iTextSharp而不合并DLL。
若要在 Access VBA 中使用 C#代码,您需要能够添加 C# DLL 作为对 Access VBA 编辑器的引用。 在DataCam中完成此操作时,我们需要使用一个名为ed iTextSharp的第三方库.dll当您想在VBA中使用它时,这可能会使事情变得棘手。
执行以下操作:
在视觉工作室中
- 创建 C# 项目时,选择"类库"模板
- 下载 iTextSharp DLL 并将其添加到您的项目中
- 编写 C# 代码
- 转到"项目"选项卡
- 选择项目的属性
- 选择"应用程序"选项卡
- 选择程序集信息
- 勾选"使程序集COM可见">
- 选择"生成"选项卡
- 勾选"注册 COM 互操作">
- 选择"签名"选项卡
- 勾选"签署程序集">
- 选择强名称密钥文件
- 使用现有密钥文件或创建一个新密钥文件
- 完成此操作后,选择屏幕顶部的"构建"
- 这将创建您需要在 VBA 中使用的 DLL、TLB 和 PDB 文件,这些文件可以在项目的垃圾箱、调试文件夹中找到
注册文件
- 将项目的 DLL、TLB 和 PDB 文件复制到计算机的 SysWOW64 文件夹
- 同时将iTextSharp的DLL和TLB文件从同一文件夹复制到SysWOW64
- 以管理员身份打开命令提示符
- 使用命令 Regasm 注册项目的 DLL 文件.exe
- 示例 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
在访问 VBA 中
- 到了VBA编辑器
- 选择工具,然后选择参考
- 选择项目的 TLB 和 iTextSharp 的 DLL 文件
- 您现在可以在 VBA 中使用 C# 代码
注1:
我编写的 C# 方法可以在 VBA 中使用,但我必须排除括号
例如。
methodName("Hello, World"( - 在 VBA 中不起作用
方法名称"你好,世界" - 在 VBA 中工作
注2:
如果更新了项目并希望将其添加为 VBA,请确保注销旧 DLL。
为此,请使用 Regasm.exe 项目.dll/u