我要在 Windows 上安装 WCF 服务。
现在我想将它安装在运行 Windows 的服务器上并安装了 v3.5 .net 框架。
该服务已在框架 4 中编写,因此它不会运行。
我的问题是我可以使用框架 3.5 中的“installutil”来安装服务吗?为什么?
=== 更新===
我有在里面运行 wcf 的 Windows 服务。
我要在 Windows 上安装 WCF 服务。
现在我想将它安装在运行 Windows 的服务器上并安装了 v3.5 .net 框架。
该服务已在框架 4 中编写,因此它不会运行。
我的问题是我可以使用框架 3.5 中的“installutil”来安装服务吗?为什么?
=== 更新===
我有在里面运行 wcf 的 Windows 服务。
您使用 InstallUtil 安装 Windows 服务。如果您遵循以下 MSDN 文章How to: Host a WCF Service in a Managed Windows Service之类的内容,您的 WCF 服务可能已经在 Windows 服务中开发。
但是,如果 (Windows) 服务是用 .NET 4 编写的,并且您尝试从 .net 3.5 运行 installutil,您将收到以下错误:
初始化安装时发生异常:System.BadImageFormatException:无法加载文件或程序集“file:///C:\MyService.exe”或其依赖项之一。此程序集由比当前加载的运行时更新的运行时构建,并且无法加载。
要安装 .NET 4 (Windows) 服务,您需要使用 .NET 4 installutil,一旦您拥有 .NET 4,该安装工具将位于:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe安装。
installutil 用于安装 windows 服务而不是 wcf 服务
如果您可以控制构建服务,只需将其更改为面向 .NET 3.5 框架,您就应该能够安装它。
否则,如果该服务是针对 .NET Framework 4.0 构建的,并且服务器只安装了 .NET 3.5,我认为它不会运行,除非您在配置文件中明确覆盖它以在 .NET 3.5 下运行(我不推荐)。
顺便说一句,我总是建议人们使用WiX 工具集来为 Windows 服务编写安装程序,而不是使用 InstallUtil,因为 InstallUtil 是一个自定义的、非标准的 Visual Studio 工具来安装 Windows 服务,而 Windows Installer (MSI)经批准的 Windows 安装标准内置了对安装经过试验和测试的 Windows 服务的支持,并为您提供更多控制,例如停止和启动服务等。