我有一个问题,显然很多人也有,只是对别人有效的还没有对我有效。下面是设置:
VS2008解决方案,包含5个项目,全部针对。net 2.0:
- DLL A,没有项目引用
- DLL B,引用DLL A
- Windows窗体应用程序,引用DLL B
- Windows Service,引用DLL B 项目置>
我想要发生的是DLL A和DLL B被安装到GAC,但我在安装时得到一个错误:
错误1001。无法加载文件或程序集'DLL_B',版本1.0.0.1,文化=中性,PublicKeyToken=5e297270603814f4'或其依赖项之一。系统找不到指定的文件。
根据我在这里、这里和其他一些网站上看到的内容,我整理了以下内容,顺序不分先后:
- 重新引用我项目中的所有内容
- 将编译的exe手动添加到安装项目中(而不是使用'Primary Output'…DLL A和DLL B显示为"检测到的依赖项")
- 在设置项目中->发射条件->设置。net Framework为2.0
- 在设置项目中->文件系统->请求将检测到的依赖项安装到全局程序集缓存文件夹
所以,我可能错过了什么。有人能告诉我那是什么吗?
提前感谢。
听起来你正在使用一个InstallUtil自定义操作来安装和启动你的windows服务,并且这个windows服务在GAC中有一个依赖项。这是windows安装程序的一个已知限制,即WinSXS和GAC的文件直到提交阶段才安装,这是在您的自定义操作启动(延迟阶段)之后
首先,您应该知道InstallUtil自定义操作非常脆弱,并且有更好的方法来做到这一点。其次,您将永远无法解决我上面描述的问题,除非a)将服务设置为Auto并重新启动或b)不将程序集安装到GAC。