1

クライアントと Win サービス プロジェクトをビルドするために、cc.net と MS ビルドを使用しています。
これは、サービスが構築されている方法
です。これを 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サービスを停止するために呼び出すことができる exec タスクを追加できます。そして、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 プロジェクトの出力については、少し確信が持てません。ServiceInstallを含むいくつかの凝った ServiceSetup.msi が生成される場合は、どのパラメーターを渡すかを自分でよく知っておく必要があります。

于 2012-10-28T07:00:28.210 に答える