2

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"

どんな助けでも大歓迎です。

4

1 に答える 1

1

コマンド プロンプトから ccnet を実行してみて、テストが失敗するか成功するかを確認します。実行するしかないと思いますccservice.exe

ccnet が Windows サービスとして実行されている場合、なぜこれが失敗するのか理解できました。Windows サービスは新しいウィンドウを作成できません*。

この Microsoft ドキュメントhttp://msdn.microsoft.com/en-us/library/aa514604.aspxInkPictureは、表示するウィンドウと画像との対話を作成する ac# ラッパーであると述べています。

The run time user interface for this control is a window with an opaque background (single color, picture background, or both) that contains opaque ink.

*システムとして実行される Windows サービスはinteraction with the desktop、ウィンドウの作成を許可するように設定できます。サポートは段階的に行われているようですが、Microsoft によるものです。

于 2012-11-21T20:39:36.060 に答える