DLL 冲突 - 试用版与购买版

DLL conflict - trial version vs purchased

我在我的 .NET 应用程序中使用了第三方 dll(ABCpdf) 并将该应用程序安装到另一台机器上。该程序运行良好,但随后试用期到期,我们购买了第三方组件并将新的 dll 复制到应用程序目录中。当 运行 我的应用程序出现无法加载程序集的错误。我注意到对 dll 的引用已将本地复制设置为 false,因此我将其更改为 true。仍然出现相同的错误。

我查了一下,机器上有好几份dll的拷贝——一份在安装的第三方应用程序的文件夹里,一份在我的应用程序的应用程序文件夹里(从安装文件夹复制过来的),还有一份在 GAC 中。我确实将 copy local 设置为 true 但话又说回来,一旦程序集安装在 GAC 中,这就是将始终使用的版本。

我该如何解决这个问题?从 GAC 中删除 dll 是否安全?它会解决我的问题吗?请指教

尝试删除项目引用中的 DLL 引用,然后再读取它。确保您添加的是您的应用程序目录中购买的 DLL。在与第三方 DLL 打交道之前,我不得不这样做很多次......它通常有效。

检查使用的参考文献等。 首先确保您使用正确的版本进行编译,并安装了许可证。 您可以使用此代码在运行时添加许可证密钥(以避免您的客户将来出错):

WebSupergoo.ABCpdf7.XSettings.InstallRedistributionLicense("your_serial")

不需要在 GAC 上安装 AbcPDF。所以你可以从那里删除它。 然后,检查 32/64 位问题,因为 ABCpdf 用于提供 4 个 dll,每个平台 2 个(ABCPDF.dll 和 ABCPdfCEXX.dll)。