2009-05-02 17 views
1

私は初めてCruiseControl.netサーバーを構成しています。私のチームはすでにNAntビルドスクリプトを使用しているので、スクリプトを実行してNAntにすべての作業をさせるだけです。CruiseControl.NetとNAntビルドの問題

あなたが見ることができるように、それは非常に簡単です:

<project name="ChannelIP"> 
    <tasks> 
     <nant> 
      <executable>C:\Program Files\nant-0.86-beta1\bin\nant.exe</executable> 
      <baseDirectory>D:\mypath</baseDirectory> 
      <buildFile>D:\mypath\myNAnt.build</buildFile> 
      <targetList> 
       <target>build</target> 
      </targetList> 
     </nant> 
    </tasks> 
</project> 

問題は、私はCCの下でそれを実行したときに、私は次のエラーを取得することです:

Function call failed. Expression: ${framework::get-framework-directory('net-3.5')}/msbuild.exe

  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

Microsoft .NET Framework 3.5 (net-3.5) is not installed, or not correctly configured. Object reference not set to an instance of an object.

私は、実際には、 msbuild.exeのパスを取得するには、$ {framework :: get-framework-directory( 'net-3.5')}変数を使用します。しかし、このコードはこれまでに失敗したことはありません。 CCが実行しているユーザーアカウントを使用してサーバーにRDPを作成し、NAntビルドファイルを直接実行しても問題ありません。

CCがそれを実行しているときに、この細かいファイルが失敗するのはなぜですか?

NOTE -CCは、私は通常、CCサービスは、おそらく適切な権限を持つアカウントで実行されていない

答えて

1

これはNAntの問題のように聞こえますが、.NET 3.5ではいくつか問題がありました。どのバージョンのNAntを使用していますか?

さらに、Using 0.86 beta 1 for .NET 3.5を見ましたか?その男はNAntによって投げられた同じエラーメッセージを持っています。提案された解決策は、最新の夜間ビルドを使用することでした。

+0

最新の夜間ビルドを使用して、トリックを行った。本当の問題は、ccnet.configファイルのNAntへのパスをハードコーディングし、最新のビルドを指すのを忘れたことでした。みんな助けてくれてありがとう! –

2

からのビルドスクリプトを実行して、同じマシン上で実行されています。同じ問題があるかどうかを確認するためにコマンドライン(ログオンしたユーザーとして実行される)を使ってCCを実行しようとしましたか?

+0

良い提案ですが、実際はそれは私が以前に問題を抱えていたものの、見つかって修正されたものでした。しかし、考えをありがとう。 –