我有一个 .net 4.0 DLL(类库),用于为我创建的 Windows 服务执行一些操作。服务的可执行文件通过向可执行文件的项目添加项目引用来引用此 DLL。我也尝试过二进制引用,但结果是一样的:InstallUtil 无法从 EXE 安装 Windows 服务,因为它无法找到 DLL。
我正在使用的系统没有使用 GAC 注册来定位 DLL。相反,在构建后,DLL 被复制到服务 EXE 所在目录的子目录中,名为“lib”,并且该 exe 具有匹配的 .config 文件,其中使用以下命令引用“lib”:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="lib" />
</assemblyBinding>
</runtime>
我们有多个 .exe 和 .dll 像这样工作。我们所看到的所有这些 DLL 和匹配的 EXE 的项目属性和 .config 文件定义都是相同的。然而,对于所有其他人来说,InstallUtil 定位 DLL 没有问题,但在这里却失败了。但是,当我将 DLL 移动到与 EXE 相同的位置时,一切正常。
我们正在讨论的 .config 文件已成功用于其他目的。
如果您有任何具体问题,请分享,我会回答。我们一无所知。