Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf 测试windows服务的增量开发_Wcf_Testing_Service - Fatal编程技术网

Wcf 测试windows服务的增量开发

Wcf 测试windows服务的增量开发,wcf,testing,service,Wcf,Testing,Service,当前正在处理作为windows服务运行的WCF服务 我已经做了一个安装程序,并编写了一个小脚本,其中添加了一个用户帐户,让它运行,然后在than帐户下注册并启动服务。VisualStudio中的一个构建步骤,将其复制到一个离散的文件夹中,这样我们就不会直接运行解决方案。一切正常 然而,随着我扩展和改进这项服务,测试它变得有点痛苦。每次我想检查我的更改时,我都必须停止服务、重建、重新启动服务并将visual studio重新连接到进程,然后才能单步执行 只是想知道是否有一种更快或更好的方法可以做到

当前正在处理作为windows服务运行的WCF服务

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

然而,随着我扩展和改进这项服务,测试它变得有点痛苦。每次我想检查我的更改时,我都必须停止服务、重建、重新启动服务并将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
生成后事件:

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
这种方法的特点:

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