after more searching I found this:
If you have found this thread because
you are trying to get NCover 1.5.8 to
work with .NET 4 then the following
should fix this error:
Open a command prompt and type the
following set
COMPLUS_ProfAPI_ProfilerCompatibilitySetting=EnableV2Profiler
This instructs the .NET 4 CLR to load
the .NET Framework 2.0 Profiler.
For more information see:
http://msdn.microsoft.com/en-us/library/dd778910.aspx
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:
- Adding to the nunit-console-x86.exe.config the following section:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"/>
</startup>
</configuration>
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