【发布时间】:2010-12-01 11:13:26
【问题描述】:
我有一个 .NET 3.5 Windows 服务,它有几种不同的配置/风格,即。发布、测试、调试等等安装在同一台机器上。有谁知道最好的方法吗?
谢谢
【问题讨论】:
标签: .net-3.5 msbuild windows-services installation
我有一个 .NET 3.5 Windows 服务,它有几种不同的配置/风格,即。发布、测试、调试等等安装在同一台机器上。有谁知道最好的方法吗?
谢谢
【问题讨论】:
标签: .net-3.5 msbuild windows-services installation
也许this article 会有所帮助?
问题
查看
ServiceInstaller时 使用反射器的类,你会看到它 对CreateService进行 Win32 调用ServiceInstaller.Install方法。CreateService将返回ERROR_DUPLICATE_SERVICE_NAME返回 调用方法时的代码 带有serviceName或displayName匹配的参数 已经安装的服务。这是 是什么导致Win32Exception成为 扔在上面的窗口和 最终导致第二次安装 失败。您可以查看完整的 关于 CreateService 的文档 函数here。要解决这个问题,所有需要 要做的是动态设置 安装期间的服务名称和 服务启动到一个已知值和 确保值不同 对于您的每个服务实例 安装。
解决方案
所有需要做的就是制作 确保每个服务的名称 安装实例是唯一的。然后 你需要有副本 每个安装目录 您想要的服务实例。 最后,您需要能够设置 期间动态的服务名称 安装和启动。这将是 方便使用 app.config 文件。
本文继续提供有关如何在同一台计算机上安装 .NET Windows 服务的多个实例的分步说明。
当然,我不禁想为什么您需要在同一台机器上同时运行调试和发布版本。
【讨论】:
只是想提请注意文章 Cody gray references 中的 cmets。看来作者和评论者一致认为使用sc.exe有一个更简单的方法如下
sc \\myserver create NewService binpath= c:\nt\system32\NewServ.exe
【讨论】: