【问题标题】:Visual Studio 2008 Setup Project Install error: "Could not load file or assembly"Visual Studio 2008 安装项目安装错误:“无法加载文件或程序集”
【发布时间】:2011-07-31 20:31:47
【问题描述】:

我遇到了一个显然很多人也遇到过的问题,只是对其他人有效的方法对我无效。这是设置:

包含 5 个项目的 VS2008 解决方案,均针对 .NET 2.0:

  1. DLL A,无项目引用
  2. DLL B,引用 DLL A
  3. Windows 窗体应用程序,引用 DLL B
  4. Windows 服务,引用 DLL B
  5. 设置项目

想要将 DLL A 和 DLL B 安装到 GAC,但安装时出现错误:

错误 1001。无法加载文件或程序集“DLL_B”,版本 1.0.0.1,Culture=neutral,PublicKeyToken=5e297270603814f4'或其依赖项之一。系统找不到指定的文件。

根据我阅读的herehere 以及其他一些网站,我按顺序执行了以下操作:

  • 重新引用了我项目中的所有内容
  • 将已编译的 EXE 手动添加到安装项目中(而不是使用“主输出”...DLL A 和 DLL B 出现为“检测到的依赖项”)
  • 在安装项目中 -> 启动条件 -> 将 .NET Framework 设置为 2.0
  • 在安装项目中 -> 文件系统 -> 请求将检测到的依赖项安装到全局程序集缓存文件夹中

所以,我可能遗漏了一些东西。谁能帮我弄清楚那是什么?

提前谢谢。

【问题讨论】:

  • 另外,在解决方案资源管理器中 -> 设置项目 -> 检测到的依赖项 -> DLL A 和 DLL B -> SourcePath 声明项目输出目录 (bin\Release)
  • 错误信息显示一个 empty 文件名。这不好。
  • 我使用的是 标签,这就是原因。已编辑。

标签: visual-studio-2008 dll installation gac setup-project


【解决方案1】:

听起来您正在使用 InstallUtil 自定义操作来安装和启动 Windows 服务,并且此 Windows 服务具有 GAC 中的依赖项。这是 Winodows 安装程序的一个已知限制,即 WinSXS 和 GAC 的文件在您的自定义操作触发之后的提交阶段(延迟阶段)之前不会安装

首先,您应该知道 InstallUtil 自定义操作非常脆弱,并且有更好的方法可以做到这一点。其次,除了 a) 将服务设置为 Auto 并重新启动或 b) 不将程序集安装到 GAC 之外,您将永远无法解决我上面描述的问题。

【讨论】:

  • 你能指出一些更好的方法来完成我想做的事情吗?
  • 不错!那绝对是它!我在 Google Groups 上找到了一篇很棒的帖子,我应用了代码并且它开箱即用:groups.google.com/group/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
相关资源
最近更新 更多