【问题标题】:File or Assembly Cannot be Loaded Error文件或程序集无法加载错误
【发布时间】:2023-03-05 01:20:01
【问题描述】:

我正在开发一个创建 .msi 文件的安装程序。有一个与之关联的 CustomAction 程序,它是用 C# 编写的。在此 CustomAction 程序中创建了三个 COM 对象引用,这些引用是其正常工作所必需的。它们如下。

  1. Active DS IIS 命名空间提供 (C:\Windows\System32\inetsrv\adsiis.dll)
  2. Windows 脚本宿主对象模型 (C:\Windows\System32\wshom.ocx)
  3. NetFwTypeLib (C:\Windows\System32\FirewallAPI.dll)

作为补充信息,以下是我在程序中使用这些 DLL 的任务。

  1. 为特定文件类型设置 MIME 设置。
  2. 创建文件夹的桌面快捷方式。
  3. 将程序注册为防火墙例外

.

现在,这是我的问题。当我在 Visual Studio 中重建 C# 程序并执行 CustomAction 程序时,它工作正常,我可以像魅力一样完成上述三个任务。但是,当我实际构建 .msi 并尝试执行它并在我的系统上安装程序时,它会给出错误。我使用的是日文操作系统,所以它会给出日文错误,所以我会尽量将错误消息翻译成英文。错误是这样的:

*

文件或程序集'Interop.IISOle, 版本 = 1.0.0.0,文化 = 中性, PublicKeyToken = null',或其之一 无法加载依赖项。 找不到指定的文件。

*

给出此特定错误消息是因为它与第一个 dll (adsiis.dll) 相关,因为它是包含 IISOle 命名空间的那个。同样,它给出了与我从程序中引用的所有三个 COM 对象相关的错误消息。现在我可以从中理解的是,不知何故,当这段代码在 .msi 文件中时,它找不到合适的 COM 对象。我真的很困惑为什么会发生这种情况,因为当我尝试安装程序时,即使在我用来编写 CustomAction 代码的同一台机器上,安装程序也会出现同样的错误。有趣的是,它可以通过 Visual Studio 界面完美执行。请帮我解决这个问题。提前致谢!

请注意,我正在使用 Windows Vista Business,但我需要我的安装程序才能安装在从 Windows Server 2003 到 Windows 7 的各种 Windows 操作系统上。

【问题讨论】:

  • 您的操作是否延迟运行?此外,您至少不需要为 2. 和 3. 编写自己的自定义操作,使用 Wix 的操作!

标签: c# nullreferenceexception dll-reference


【解决方案1】:

今天刚遇到这个。转到“打开或关闭 Windows 功能”,然后查看 IIS 下的所有内容,包括 IIS 6 的内容。

确保选中“Internet 信息服务”>“Web 管理工具”>“IIS 6 管理兼容性”下的“IIS 元数据库和 IIS 6 配置兼容性”功能。

【讨论】:

  • 感谢 Damian Vogel 提供所需的具体选项。
  • 哈哈 thx 无论如何,我现在才看到我的编辑被......“过于友好”的社区拒绝了。重要的是信息不会丢失。
【解决方案2】:

安东,我终于发现了问题所在。

例如,当我引用 dsiis.dll 时,Visual Studio 会在我的 CustomAction 程序的 bin 目录中放置一个 Interop 模块,即 Interop.IISOle.dll。也可以在其中找到 CustomAction.exe。当我引用其他两个 COM 对象时,它执行相同的过程; wshom.ocx 和 FirewallAPI.dll。但是我使用 Wix 编写的实际安装程序将此 CustomAction.exe 复制到其他目录,并且 .msi 使用该特定的 CustomAction.exe 文件。出现问题是因为在那里找不到 Interop.IISOle.dll(以及其他)。 (错误信息似乎从一开始就说我需要寻找的东西;我愚蠢地不寻找它,但认为可能存在更大的问题)

所以这就是我所做的。我指示 Wix 项目将这些 Interop DLL 文件复制到安装程序使用的 CustomAction.exe 所在的同一位置。这样就轻松解决了问题。

对于 Wix,我完全是个新手,而且由于某些原因,我们需要在 2 和 3 中使用 CustomAction。

【讨论】:

    猜你喜欢
    • 2010-10-07
    • 1970-01-01
    • 2013-02-23
    • 2015-09-25
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多