1

我正在使用 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 对我来说是新的。
谢谢你

4

2 回答 2

3

1:
我建议手动安装服务。然后让巡航控制停止然后启动服务。否则,您需要在尝试之前确定该服务是否已安装。

您可以添加一个可执行任务,您可以调用net stop servicename它来停止服务。然后 msbuild 之后的另一个任务再次启动它(使用net start servicename)。

net.exe是一个股票 Windows 控制台应用程序,所以它位于c:\windows\system32

2:
如果上述任务失败(即停止/构建/启动失败),则不会执行以下测试任务。

于 2012-10-28T09:08:23.117 回答
1

对于 Windows 服务的安装,您可以使用命令行和Installutil,或者 - 如果您喜欢它更方便一点 - 您可以编写一个 MSBuild 脚本并使用MSBuild.ExtensionPack 中的 WindowsService 任务

如果您将 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,那么您应该自己最清楚要传递哪些参数。

于 2012-10-28T07:00:28.210 回答