0

Opencover で -register オプションを使用すると、未処理の例外が発生します

C:\hudson\jobs\SPIN.Accounts.AccountNode\workspace>"C:\Program Files (x86)\OpenCover\OpenCover.Console.exe" -target:"C:\Program Files (x86)\NUnit 2.5.10\bin\net-2.0\nunit-console.exe"  -targetargs:"/noshadow mydll.dll" -output:"coverage-result.xml" -filter:"+[myNamespace]*" -register:user 

An exception occured: Object reference not set to an instance of an object.
stack:    at OpenCover.Framework.ProfilerRegistration.ExecuteRegsvr32(Boolean userRegistration, Boolean register, Boolean is64)
   at OpenCover.Framework.ProfilerRegistration.ExecuteRegsvr32(Boolean userRegistration, Boolean register)
   at OpenCover.Console.Program.Main(String[] args)

-register と -register:user を試しましたが、どちらも同じエラーが発生します。これは、Jenkins で実行した場合にのみ発生します。

-register パラメータの重要性と、これを Jenkins で機能させるにはどうすればよいかを説明できる人がいますか? ありがとう。

更新: Jenkins で -register パラメーターが機能しなかった理由はわかりませんが、Jenkins の外部でプロファイラーを登録することになり、現在は機能しています。理想的ではありませんが、少なくとも回避策があります。ただし、これに対する適切な解決策を見つけたいと思います。他の誰かがこの問題を抱えているかどうかはわかりませんが、GitHub の小さな wiki エントリの価値があるかもしれません。

4

1 に答える 1

0

ジェンキンスはサービス アカウントで実行されていますか?

その場合、COM オブジェクトを登録する権限はありますか?

-register:user オプションは、すべてのユーザーに対してサービスを登録する権限を持たないアカウント用ですが、サービスとして実行している場合、これは機能しません。

プロファイラーを正しいアクセス許可を持つアカウントに登録するのが正しい方法であり、TeamCity などの他の CI システムでも同じです。

于 2011-10-15T09:43:12.157 に答える