我使用类库在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?
答案 0 :(得分:0)
我能够弄清楚如何在不合并DLL的情况下在VBA中使用iTextSharp。
要在Access VBA中使用C#代码,您需要能够添加C#DLL作为Access VBA编辑器的参考。 当在DataCam中完成此操作时,我们需要使用第三方库调用ed iTextSharp.dll,当您想在VBA中使用它时会让事情变得棘手
执行以下操作:
在Visual Studio中
注册文件
在Access VBA中
注1:
我写的C#方法可以在VBA中使用,但我不得不排除括号
EG。
methodName(“Hello,World”) - 在VBA中不起作用
methodName“Hello,World” - 在VBA中工作
注2:
如果您更新了项目并希望添加它,请务必取消注册旧DLL。
要执行此操作,请使用Regasm.exe project.dll / u