我正在为我的dll项目创建一个安装程序。在那我有一个参考文件。我将输出添加到自定义操作。我收到一个错误:
错误1001.错误1001.无法获取安装程序类型 C:\ Program Files(x86)\ Default Company Name \ CadmateAddinSetup \ AddInToolBar.dll程序集。 - >无法加载 一个或多个请求的类型。检索LoaderExceptions 物业以获取更多信息。
如何解决这个问题? 我在我的dll项目中有wpf用户控件和一些win表单和类。是因为我没有添加的参考文件?如果是这样,如何识别缺少哪个依赖文件。
答案 0 :(得分:0)
很可能是依赖项,但Visual Studio应该尝试将它们添加到您的安装项目中,至少可以从程序集清单信息中检测到它们。 VS不会检测COM依赖项,因为没有任何内容表明您将在运行时链接到哪个Dll。此外,如果您将一个程序集安装到GAC中并且您的Dll依赖于它,那么这也会导致失败 - 在Commit阶段之前程序集不在GAC中,因此Commit自定义操作有时会起作用。
另一个问题是您的装配没有以典型方式加载。它正在使用反射进行实例化,然后尝试查找安装程序类(因此消息),并绕过任何重定向等等。
可能还存在体系结构不匹配。如果你的Dll是AnyCpu并且它以64位模式运行,那么任何32位相关组件都不会加载。
Fusion Log Viewer可用于识别缺失的依赖项。
如果此Dll具有您将在安装期间显示的表单和控件,这通常不是正确的做法。您永远无法进行静默安装,表单/控件通常无法正常运行(您没有在适合Windows UI消息循环的正确环境中运行)。此外,Windows安全性可能会阻止它显示,因为您的自定义操作将(可能)与系统帐户和show UI一起运行,这与使用桌面服务交互的原因相同。因此,如果您正在进行一些配置,只需在应用程序第一次运行时从普通用户应用程序执行此操作。