我最近在 Visual Studio 2010 中更新了旧的 Quickbooks 应用程序(版本13.0),现在我无法正确安装。 SDK附带了几个合并模块,可以在目标计算机上安装必要的依赖项,但默认情况下,它们会安装到安装文件夹以外的其他文件夹中。我想将它们安装在我的应用程序的工作文件夹中,或者让我的应用程序引用该文件夹。
例如:
QBFC13_0.msm 将 Interop.QBFC13.dll 安装到文件夹" C:\ Program Files(x86)\ Common Files \ Intuit \ QuickBooks的"
但是当我的程序加载时,它会给出一个FileNotFound异常:"无法加载文件或程序集' Interop.QBFC13Lib,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null&# 39;或其中一个依赖项。系统找不到指定的文件。" 。我能够在Visual Studio中运行和调试我的应用程序,但不能在已部署的计算机上运行和调试。当我将该引用的 CopyLocal 属性设置为 false 时,我确定这是问题,并且当我在调试中启动它时它抛出相同的异常。
那么如何更改合并模块的目标文件夹,以便将它们安装到我的应用程序的工作目录中?或者,如果不可能,我怎样才能使我的应用程序在搜索依赖项时引用已安装机器上的文件夹路径?
答案 0 :(得分:1)
根据我的理解,您不应该更改安装位置。安装SDK时,它应安装到默认位置(C:\ PROGRA~2 \ COMMON~1 \ Intuit \ QUICKB~1 \ QBFC13.dll),但它也会创建让Windows知道的注册表项此文件的位置。听起来安装程序没有正确安装或注册。
在我的开发机器上,我总是将Copy Local设置为False,因为我将Embed Interop Types设置为True。 QBFC13Lib的标识显示为{0CB030A6-7B72-42CE-B92A-849B4A4A2CFB},因此您可能需要检查目标计算机的注册表以查看该库是否已注册。我相信它在HKLM \ SOFTWARE \ Classes \ TypeLib {0CB030A6-7B72-42CE-B92A-849B4A4A2CFB}中创建了一个注册表项