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 中工作?谢谢。

更新:我不确定为什么 -register 参数在 Jenkins 中不起作用,但我最终在 Jenkins 之外注册了分析器,现在它可以工作了。不理想,但至少有一个解决方法。尽管如此,仍然想找到一个适当的解决方案。我不确定其他人是否有这个问题,但也许值得在 GitHub 上进行一些 wiki 条目。

4

1 回答 1

0

jenkins 是否在服务帐户下运行?

如果是这样,它是否有权注册 COM 对象?

-register:user 选项适用于无权为所有用户注册服务的帐户,但是 AFAIK 这在作为服务运行时不起作用。

在具有正确权限的帐户下注册分析器是正确的方法,对于其他 CI 系统(例如 TeamCity)也是如此。

于 2011-10-15T09:43:12.157 回答