I want to run coverage from the command line, but can't seem to get NCover 1.5.8 to instrument the code. It must be possible as when I run coverage tests with TestDriven.net it works. the difference seems to be that TD.NET is able to get NCover to use framework 4.0 (you get this in the log when it runs : MESSAGE: v4.0.30319
) but from the command line I can't make it (I get this in the log : MESSAGE: v2.0.50727
)
So how can I make NCover play nice with nunit from the commandline, like it does with TD.NET?
after more searching I found this:
at the end of the thread here
which seems to solve my problem
EDIT:
it doesn't solve my problem really. Now it just allows the coverage.xml to be generated, but it only contains the v2.0 framework assemblies, so only the .net 2.0 assemblies are profiled....
Grrr. back to the drawing board...
EDIT 2
Hallelujah! I have figured this out by a process of random googling and changing. anyway, due to some pointers found here I was able to figure out that what I needed to do was to alter the exe.config of the application running the code (nunit.console-x86.exe in this case) file to not only force a specific version of the .net framework to be loaded but also to allow the legacy activation policy to be used. To cut a long story short I was able to solve this by:
setting these in the environment that the command is launched from:
set ProfAPI_ProfilerCompatibilitySetting=EnableV2Profiler
set COMPLUS_ProfAPI_ProfilerCompatibilitySetting=EnableV2Profiler
(not sure both are necessary, but that's what I did)
I also added a similar setting to the NCover.Console.Exe.config, but it turns out that is unnecessary.
EDIT 3
this is the command line I am using (note that I copied all of ncover and nunit and my test assemblies into one directory to simplify things)
NCover.Console.exe nunit-console-x86.exe /framework=4.0.30319 Your.Test.Assembly.dll //x coverage.xml //reg