最近在研究 CruiseControl.NET 与 NCover 、NUnit 、NAnt 的集成构建,在用 DotNetTools Workflow 0.1.0版(移植自osworkflow的.NET实现版)作为测试例子时,碰到了问题,郁闷了两天,最后总算搞明白问题所在了。
我在DotNetTools Workflow 源代码-DotNetTools.Test工程中的NAnt脚本中添加了一个Target,用于执行NCover:
然后我在命令行运行该脚本:>nant ncover,在NUnit即将运行完成后,出现错误(如下图),但是我直接在NUnit中运行DotNetTools.Test测试工程,并没有错误。
经过艰苦的跟踪调试,终于发现问题出在:DotNetTools.Workflow工程中Util\Vsa\VsaBase.cs的Prepared()方法,其Assembly.LoadFile(Path.GetFullPath(assembly))会导致上图所示错误,
原来Assembly.LoadFile()方法内部需要对assembly进行严格的安全权限检查。
在我试过强签名,安全策略等等一系列方法后,问题仍然存在,又郁闷了一天...
今天偶然在发现cnblogs上发现