Windows 7 Pro 専用ビルド マシンに CruiseControl.NET (v 1.6.7981.1) をセットアップしました。Gallio.Echo.exe を使用して MBUnit テストをビルドして実行するための VS2012 プロジェクトのセットアップがあります。私の問題は、CC.NETがこれらのテストを実行すると、いくつかのテストで失敗することですが、コマンドラインからまったく同じプログラムを実行すると、CCタスクで指定されたものとまったく同じパラメーターを使用して、すべてのテストに合格します。何が起こっているのか理解できないようです。CruiseControl を実行すると一部のテストが失敗するが、実行すると成功する理由を誰か説明できますか? CruiseControl サービスが実行されているのと同じアカウントでそれらを実行しようとしたので、権限の問題ではないと思います。私はそれをオフにしてからもう一度オンにしてみました(マシン)。
CruiseControl は、管理者権限でログオンした Windows サービスとして実行されています。私たちの VS プロジェクトは .NET 4.0 デスクトップ アプリですが、以前に .NET 3.5 用にビルドされ、.NET 4.0 にアップグレードされたレガシー プロジェクトが含まれています。このプロジェクトは Microsoft.Ink アセンブリ (v 6.1.0.0) を参照しており、これがビルド マシンの GAC にあることを確認しました。実際、失敗したテストは、このアセンブリを使用するアプリケーションの一部をテストしています。このレガシー プロジェクトは後で置き換える予定ですが、今のところはそのままにしておく必要があります。
以下は、CruiseControl のテスト レポートのエラーです。
System.Runtime.InteropServices.COMException: 致命的なエラー (HRESULT からの例外: 0x8000FFFF (E_UNEXPECTED)) エラーコード: -2147418113 at Microsoft.Ink.InkOverlayClass.set_Enabled(Boolean Collecting) at Microsoft.Ink.InkPicture.set_InkEnabled(Boolean value) at in .vb:1201行目.......
失敗する(VB.NET)コードは次のとおりです
Dim inkPictureObject As New Microsoft.Ink.InkPicture()
...
inkPictureObject.InkEnabled = False
inkPictureObject.Ink = New Ink()
inkPictureObject.InkEnabled = True '<-- fails here
これ以外のエラーに関する情報を見つけることができないようです ( COMException occured: ErrorCode = -2147287036 ) とこれ ( VS 2010 で実行中のみ: COMException: Catastrophic Failure: Error Code: -2147418113 ) どちらも持っていませんリソースを割り当てていないため、VS2012でプログラムを実行するときにその行にアクセスしても問題がないため、役に立ちました。本当のキッカーは、(前述のように) コマンド プロンプト (CruiseControl サービスが実行されているのと同じユーザーとしてログイン) から、CruiseControl 構成で指定されたものと同じパラメーターを使用してテストを実行すると、テストが完全に機能することです。
Gallio.Echo.exe /rnf:test-report /rt:Xml-Inline /v:Quiet "C:\My project\testAssembly.dll"
どんな助けでも大歓迎です。