我正在使用cc.net和MS build来构建我的客户端和Win服务项目
这就是服务的构建方式,具体如下:
是否可以自动将其安装为Windows服务?
<msbuild>
<executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<workingDirectory>C:\CCBuild\Git\Dev\Services\ServiceSetup</workingDirectory>
<projectFile>ServiceSetup.wixproj</projectFile>
<buildArgs>/p:Configuration=Release /p:Platform=x86 /v:diag</buildArgs>
<targets>Clean;Build</targets>
<timeout>480</timeout>
<logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
和客户:
只有在安装并成功启动上述服务的情况下才可以运行集成测试吗?
<msbuild>
<executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<workingDirectory>C:\CCBuild\Git\Dev\LocalClient\ClientSetup</workingDirectory>
<projectFile>ClientSetup.wixproj</projectFile>
<buildArgs>/p:Configuration=Release /p:Platform=x86 /v:diag</buildArgs>
<targets>Clean;Build</targets>
<timeout>480</timeout>
<logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
<exec>
<executable>C:\Program Files\Gallio\bin\Gallio.Echo.exe</executable>
<buildArgs>/rnf:report2\test-report /rt:Xml-Inline /v:Quiet C:\CCBuild\Git\Dev\LocalClient\Client.IntegrationTests\bin\x86\Debug\Client.IntegrationTests.dll</buildArgs>
<description>Client Tests</description>
</exec>
请解释一下示例代码,因为cc.net和MsBuild对我来说都是新手 谢谢
答案 0 :(得分:3)
1:
我建议手动安装服务。
然后让巡航控制停止然后启动服务。
否则,您需要在尝试之前确定是否已安装该服务。
您可以添加一个exec任务,您可以调用net stop servicename
来停止该服务。然后在msbuild之后再次启动它的另一个任务(使用net start servicename
)。
net.exe
是一个库存Windows控制台应用,因此它位于c:\windows\system32
2:
如果上述任务失败(即停止/构建/启动失败),则不会执行以下测试任务。
答案 1 :(得分:1)
要安装Windows服务,您可以使用命令行和Installutil或 - 如果您更喜欢它 - 您编写MSBuild脚本并使用WindowsService tasks from the MSBuild.ExtensionPack。
如果将CCNET服务器配置为按顺序执行任务,则只有在前面的任务成功时才会执行Gallio任务。
<tasks>
<!-- 1st... -->
<msbuild>
<!-- build server -->
</msbuild>
<!-- either... -->
<exec>
<!-- execute Installutil -->
<executable>cmd.exe</executable>
<buildArgs>/C C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe YourAssembly</buildArgs>
</exec>
<!-- or... -->
<msbuild>
<!-- execute WindowsService MSBuild script -->
</msbuild>
<!-- then... -->
<msbuild>
<!-- build client -->
</msbuild>
<!-- finally... -->
<exec>
<!-- execute Gallio -->
</exec>
</tasks>
这是如何使用简单的Windows服务。关于服务设置WiX项目的输出,我有点不确定。如果它产生一些花哨的ServiceSetup.msi,包括ServiceInstall,那么你应该最好地了解哪些参数将被传递。