24

開発サーバーに CruiseControl.NET バージョン 1.4 をセットアップしました。開発者がコードをチェックインするたびに、コンパイルが行われます。

これで、テスターに​​アプリケーションを提供できるようになりました。ClickOnce を使用してアプリケーションを配布したいと考えています。テスターがアプリケーションをテストするときに、最新のビルドを持っているという考えに基づいています。

CruiseControl.NET でそれを実現する方法が見つかりません。MSBUILD を使用してビルドを実行しています。

4

5 に答える 5

22

私たちはこれを行い、開始するためのいくつかの指針を提供することができます.

あなたが知っておくべき2つのこと:

  • MSBuild は、必要な配置ファイルを生成できます。
  • MSBuild は、ファイルを FTP または UNC 共有にデプロイしません。これには別の手順が必要です。

MSBuild を使用して ClickOnce マニフェストを生成するには、次のコマンドを発行する必要があります。

msbuild /target:publish /p:Configuration=Release /p:Platform=AnyCPU; "c:\yourProject.csproj"

これにより、MSBuild がプロジェクトをビルドし、bin\Release\YourProject.publishディレクトリ内に ClickOnce 配置ファイルを生成するように指示されます。

あとは、これらのファイルを FTP/UNC 共有/どこにでもコピーするだけで、準備は完了です。

これらの MSBuild パラメーターを使用してビルドするように CruiseControl.NET に指示できます。

次に、CruiseControl.NET ビルド タスクを使用して、生成された配置ファイルを取得し、それらを FTP または UNC 共有にコピーする必要があります。これにはカスタムの小さな C# コンソール プログラムを使用しますが、Powershell スクリプトを使用することも同じくらい簡単です。

于 2008-08-15T17:29:01.757 に答える
4

昨年、私が取り組んでいた ClickOnce プロジェクトでこれを行ったことを覚えています。理解するのに永遠にかかったのを覚えていますが、ここにあります。私がスクリプトに実行させたかったのは、開発環境を指す別のインストーラーと製品用の別のインストーラーを生成することでした。それだけでなく、正しいバージョン管理情報を挿入して、既存のクライアントがそこに新しいバージョンがあることを「認識」する必要がありました。これが clickOnce の要点です。このスクリプトでは、独自のサーバー名などに置き換える必要があります。秘訣は、publish.htm および project.publish ファイルを保存し、CC.NET から提供されたバージョンに基づいて新しいバージョン番号を挿入することです。

私のビルドスクリプトは次のようになります。

<target name="deployProd">
  <exec program="<framework_dir>\msbuild.exe" commandline="<project>/<project>.csproj /property:Configuration=PublishProd /property:ApplicationVersion=${build.label}.*;PublishUrl=\\<prod_location>\binups$\;InstallUrl=\\<prod_location>\binups$\;UpdateUrl=\\<prod_location>\binups$\;BootstrapperComponentsUrl=\\<prod_location>\prereqs$\ /target:publish"/>

  <copy todir="<project>\bin\PublishProd\<project>.publish">

    <fileset basedir=".">
      <include name="publish.htm"/>
    </fileset>

    <filterchain>
      <replacetokens>
        <token key="CURRENT_VERSION" value="${build.label}"/>
      </replacetokens>
     </filterchain>
  </copy>

</target>

お役に立てれば

于 2008-09-19T17:05:04.703 に答える
0

CCNET.configmsbuildタスクで${CCNetLabel}を渡すことができれば、大幅に改善されます。

于 2009-04-03T14:27:04.673 に答える
-1

msbuild で ClickOnce マニフェスト生成タスクを使用したい。このプロセスは少し長いので、いくつかのリンクを紹介します。msdnのリファレンスと、うまくいけば開始するためのサンプル記事を次に示します。

于 2008-08-15T17:22:33.423 に答える