gpt4 book ai didi

wcf - 测试windows服务的增量开发

转载 作者:行者123 更新时间:2023-11-28 20:56:10 24 4
gpt4 key购买 nike

目前正在开发作为 Windows 服务运行的 WCF 服务。

我已经制作了一个安装程序并编写了一个小脚本,该脚本添加了一个用户帐户以供其运行,然后注册并启动该帐户下的服务。并在 visual studio 中构建一个步骤,将其复制到一个独立的文件夹中,这样我们就不会直接运行解决方案。一切正常。

但是,随着我扩展和改进这项服务,测试它变得有点痛苦。每次我想检查我的更改时,我都必须停止服务、重建、重新启动服务并将 visual studio 重新附加到进程,然后才能逐步完成。

只是想知道是否有更快或更好的方法来执行此操作而无需为所有服务编写一些代理主机?在这种情况下,单元测试不会削减它,因为该服务需要做一些系统性的事情,比如连接到 Active Directory 端点。

最佳答案

我知道这个问题很古老,但我最近使用构建事件解决了部分问题,如下所示:

预构建事件:

if "$(ConfigurationName)" neq "Debug" goto NoStop

echo Attempting to stop windows service MyService
net stop MyService > MyService.log
if "%errorlevel%" neq "0" (call )
type MyService.log

:NoStop

构建后事件:

if "$(ConfigurationName)" neq "Debug" goto NoStart

findstr "/c:stopped successfully" MyService.log >nul
if "%errorlevel%" equ "0" net start MyService
(call )

:NoStart

这种方法的特点:

  • 已检查配置,如果我不是在 Debug 中构建,则会跳过整个位。
  • NET STOP 命令将尝试 停止您的服务,而它下面的 if 命令将忽略可能发生的任何错误。如果您的服务未安装或未运行,这非常有用。
  • 由于服务已停止,服务 EXE 已解锁,并且构建不会因那些烦人的“文件已锁定”错误而失败。
  • 如果预构建事件成功关闭服务,则后构建事件将启动服务。 FINDSTR 命令在预构建事件期间创建的日志文件中搜索字符串“stopped successfully”。如果找到,则调用 NET START。无论哪种方式,错误都会被下一行的 (call ) 吞没。

这在 Windows 7 上运行的 Visual Studio 2015 中对我有用。希望这对某人有帮助!

关于wcf - 测试windows服务的增量开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17422598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com