[seasar-dotnet:1497] Re: PartCover Nunit S2Container.netでカバレッジが取得できない(例外が発生する)
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2009年 9月 29日 (火) 11:52:01 JST
菊池です
どうやらアセンブリ参照の解決がらみの問題ではない気がします。
アセンブリ参照以前の問題で落ちてますね
> [中間進捗]
> 1.assemblyコンパイルのタイミングで'System.AccessViolationException' が発
> 生している
> (保護されたメモリに対して読み取りまたは書き込みを行おうとするとスローされ
> る例外)
> 発生位置: CompilerResults results =
> _provider.CompileAssemblyFromSource(parameters, EVAL_SOURCE);
> の行を実行時。
> (JScriptUtilのstaticイニシャライザにて)
実行ユーザーでJScript コンパイラの利用するテンポラリディレクトリに妥当な(書
きこみ)
権限が無いという問題ではないでしょうか。
もしかするとPartCover 自体が何らかのインストルメンテーションを実行していて
(実行
コードへカバレッジマーキング処理の埋め込み等)、JScriptでコンパイルされた
コードに
ちょっかい出ししようとして失敗してるという可能性も疑う必要がありそうです。
2009/09/29 1:29 早川貴彦 <[E-MAIL ADDRESS DELETED]>:
> 菊池さん
> 確認すべき箇所を指摘いただきありがとうございます。早川です。
> [中間進捗]
> 1.assemblyコンパイルのタイミングで'System.AccessViolationException' が発
> 生している
> (保護されたメモリに対して読み取りまたは書き込みを行おうとするとスローされ
> る例外)
> 発生位置: CompilerResults results =
> _provider.CompileAssemblyFromSource(parameters, EVAL_SOURCE);
> の行を実行時。
> (JScriptUtilのstaticイニシャライザにて)
> 2.アセンブリバインディングログビューアには 動的に生成されるJScript関連の
> DLLは
> 一切表示されない(1が先に発生しているためにその所までたどり着いていない)
> 3.Seasar.XmlSerializers というアセンブリだけが
> ログビューアにおいて
> *** アセンブリ バインド ログ エントリ (2009/09/29 @ 0:47:39) ***
> 操作に失敗しました。
> バインド結果: hr = 0x80070002. 指定されたファイルが見つかりません
> 中略
> ログ: DisplayName = Seasar.XmlSerializers, Version=1.3.9.0,
> Culture=neutral, PublicKeyToken=1d0d0c484d50ca62,
> processorArchitecture=MSIL
> (Fully-specified)
> 呼び出しているアセンブリ: System.Xml, Version=2.0.0.0, Culture=neutral,
> PublicKeyToken=b77a5c561934e089
> ===
> 後略
> と表示されている。 (この名前のdllってありましたっけ?)
> 〜詳細〜
> 1.のSystem.AccessViolationException の発見方法について
> 先日のメール記載では
> PartCover→Nunitの、Nunitのコンソールログをコピペしました
> もう少し深く潜って調べることが出来るのでは?と
> PartCover→Nunitを起動後、Visual Studio側にて
> [メニューバー] [デバッグ][プロセスにアタッチ]にて
> プロセスとしてNunit.exeを選択して実行したところ
> Visual Studioの出力ウィンドウに下記のログが表示されました
> 前略
> 'nunit.exe' (マネージ型):
> 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.JScript\8.0.0.0__b03f5f7f11d50a3a\Microsoft.JScript.dll'
> が読み込まれました
> 'nunit.exe' (マネージ型):
> 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\9.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll'
> が読み込まれました
> 'nunit.exe' (マネージ型):
> 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.Vsa\8.0.0.0__b03f5f7f11d50a3a\Microsoft.Vsa.dll'
> が読み込まれました
> 'System.AccessViolationException' の初回例外が Microsoft.JScript.dll で発
> 生しました。
> 'System.TypeInitializationException' の初回例外が Microsoft.JScript.dll で
> 発生しました。
> 'System.TypeInitializationException' の初回例外が Microsoft.JScript.dll で
> 発生しました。
> 'Microsoft.Vsa.VsaException' の初回例外が Microsoft.JScript.dll で発生しま
> した。
> 'nunit.exe' (マネージ型):
> 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.JScript.resources\8.0.0.0_ja_b03f5f7f11d50a3a\Microsoft.JScript.resources.dll'
> が読み込まれました
> 'System.IO.FileNotFoundException' の初回例外が mscorlib.dll で発生しまし
> た。
> 'System.TypeInitializationException' の初回例外が Seasar.dll で発生しまし
> た。
> 'System.Reflection.TargetInvocationException' の初回例外が mscorlib.dll で
> 発生しました。
> 'NUnit.Core.NUnitException' の初回例外が nunit.core.dll で発生しました。
> スレッド 0xd00 はコード 0 (0x0) で終了しました。
> スレッド 0x9fc はコード 0 (0x0) で終了しました。
> [アセンブリバインディングログの取得]メモ書き
> 1)[スタート][すべてのプログラム][Microsoft Windows SDK v6.0A][Fusion ログ
> ビューア]の実行
> 2)[設定] すべてのバインドをディスクに記録する チェック
> カスタムログを有効にする チェック
> パス: テストdllが存在するbin\debug フォルダ
> に設定
> 3)PartCoverからNunitを起動し、ログビューアにて
> [最新の情報に更新]でログが表示され始める
> (このときのは起動に関連するdll系のみ?)
> 4)Nunitからテストを実行しログの最新を更新。
> [アセンブリバインディングログの抜粋(ごく一部]
> 最後のlog単位は log4net その直前はMicrosoft JScript
> (log4netが最後にでるのも何か気にはなるのですが、
> JScriptもlog4netも 「操作に成功」という文字と
> *** アセンブリ バインド ログ エントリ (2009/09/29 @ 0:33:37) ***
> 操作に成功しました。
> バインド結果: hr = 0x0. この操作を正しく終了しました。
> アセンブリ マネージャの読み込み元:
> c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
> 実行可能ファイル下で実行しています。 C:\Program Files\NUnit
> 2.5.1\bin\net-2.0\nunit.exe
> --- 詳細エラー ログは以下のとおりです。
> 中略
> ===
> ログ: このバインドは default の読み込みコンテキストで開始します。
> ログ: アプリケーション構成ファイル C:\Documents and Settings\ユーザ名\My
> Documents\Visual
> Studio
> 2008\Projects\sample\S2WindowsExample.Tests\bin\Debug\S2WindowsExample.Tests.dll.config
> を使用します。
> ログ: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config
> からのコンピュータ構成ファイルを使用します。
> ログ: バインドに成功しました。C:\Documents and Settings\ユーザ名\My
> Documents\Visual
> Studio 2008\Projects\sample\S2WindowsExample.Tests\bin\Debug\log4net.dll
> からアセンブリを返します。
> エラー: アセンブリは default 読み込みコンテキストで読み込まれています
> ↑
> この表現は気にはなりましたが、他のログとあわせてみる限り
> 正常を意味している (?)
> ・・・という状態です。
> [残課題]
> >参照解決に失敗したアセンブリ
> > 関連チェックポイント
> > ・GAC前提となっているアセンブリが正しくGAC登録されているか
> > ・コンパイル時と実行時でバージョンの異なるアセンブリを利用していないか
> 上記の内、参照解決に失敗したアセンブリとしては
> Seasar.XmlSerializersですが、どうも真因では無い気がしますし、バージョン違
> いやGACの件はまだ調べ切れてはおりません。
> (テストDLLをexeにして、そこからnunitを呼んでしまう
> PartCover → テストExe(内部でnunit)→アプリ
> なんてことを考えていたのですがちょっと時間が無いので
> そういったテストを後回しにしています。)
> 仕事の都合上、しばらくはこの件については後回しに
> なってしまうのですが、
> もし何か気がついた点がございましたら引き続き教えていただけると助かります。
> どうぞよろしくお願い致します
> 2009年9月28日14:46 [E-MAIL ADDRESS DELETED]>:
> > 菊池です
> >
> > アセンブリの参照解決で問題が発生しているように見えますね。
> >
> > http://msdn.microsoft.com/ja-jp/library/e74a18c4(VS.80).aspx
> > fuslogvw.exe
> >
> > でのアセンブリバインディングで実際の参照関係とエラーの詳細の確認と
> >
> > http://msdn.microsoft.com/ja-jp/library/yx7xezcf(VS.80).aspx
> > ランタイムがアセンブリを検索する方法
> >
> > と
> >
> > http://msdn.microsoft.com/ja-jp/library/efs781xb(VS.80).aspx
> > 要素
> >
> > を参照して参照解決に失敗したアセンブリを app.config で明示的にcodeBase指
> 定してみてください。
> > (またはアセンブリのある場所を pobing対象にしてください)
> >
> > 関連チェックポイント
> > ・GAC前提となっているアセンブリが正しくGAC登録されているか
> > ・コンパイル時と実行時でバージョンの異なるアセンブリを利用していないか
> >
> > この辺も確認してみてください。
> >
> --
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-dotnet/attachments/20090929/765427b7/attachment.html>
seasar-dotnet メーリングリストの案内