Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'System.Drawing.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
Using AltCover 9.0.1 via dotnet tool install --global altcover.global. My project is a very large C# .NET 4.8 desktop app with more than 2500 DLLs.
When cd-ing to my \bin folder and executing altcover.exe --verbose --dependency=C:\Windows\Microsoft.NET\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll I get an exception:
Console output: Assembly symbol GUID = d97695fa-e174-4fd2-a9fd-47c0a0c60943 mvid = 3a74029b-fd96-4ca0-9a97-bcae076fb83a Symbol file \yetanother.pdb GUID = d97695fa-e174-4fd2-a9fd-47c0a0c60943 Assembly \yetanother.exe symbols from folder '"\yetanother.pdb"' __Instrumented\yetanother.exe <= yetanother, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
ERROR *** Instrumentation phase failed
Failed to resolve assembly: 'System.Drawing.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
Details written to __Instrumented\AltCover-2025-05-16--11-50-17.log
AltCover-2025-05-16--11-50-17.log output:
Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'System.Drawing.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)
at Mono.Cecil.DefaultAssemblyResolver.Resolve(AssemblyNameReference name)
at Mono.Cecil.MetadataResolver.Resolve(TypeReference type)
at Mono.Cecil.MetadataResolver.GetType(ModuleDefinition module, TypeReference reference)
at Mono.Cecil.MetadataResolver.Resolve(TypeReference type)
at Mono.Cecil.MetadataBuilder.GetConstantType(TypeReference constant_type, Object constant)
at Mono.Cecil.MetadataBuilder.AddConstant(IConstantProvider owner, TypeReference type)
at Mono.Cecil.MetadataBuilder.AddParameters(MethodDefinition method)
at Mono.Cecil.MetadataBuilder.AddMethods(TypeDefinition type)
at Mono.Cecil.MetadataBuilder.AddType(TypeDefinition type)
at Mono.Cecil.MetadataBuilder.BuildModule()
at Mono.Cecil.MetadataBuilder.BuildMetadata()
at Mono.Cecil.ModuleWriter.<>c.<BuildMetadata>b__2_0(MetadataBuilder builder, MetadataReader )
at Mono.Cecil.ModuleDefinition.Read[TItem,TRet](TItem item, Func3 read) at Mono.Cecil.ModuleWriter.Write(ModuleDefinition module, Disposable1 stream, WriterParameters parameters)
at Mono.Cecil.ModuleWriter.WriteModule(ModuleDefinition module, Disposable1 stream, WriterParameters parameters) at AltCover.Instrument.I.writeAssembly(AssemblyDefinition assembly, String path) in /_//AltCover.Engine/Instrument.fs:line 515 at AltCover.Instrument.I.writeAssemblies(AssemblyDefinition definition, String file, IEnumerable1 targets, FSharpFunc2 sink) in /_//AltCover.Engine/Instrument.fs:line 871 at AltCover.Instrument.I.visitAfterAssembly(InstrumentContext state, AssemblyEntry assembly) in /_//AltCover.Engine/Instrument.fs:line 1102 at AltCover.Instrument.I.instrumentationVisitorWrapper(FSharpFunc2 core, InstrumentContext state, Node node) in ///AltCover.Engine/Instrument.fs:line 1455
at [email protected](T node) in ///AltCover.Engine/Visitor.fs:line 1703
at Microsoft.FSharp.Primitives.Basics.List.mapToFreshConsTail[a,b](FSharpList1 cons, FSharpFunc2 f, FSharpList1 x) in D:\a\_work\1\s\src\FSharp.Core\local.fs:line 236 at Microsoft.FSharp.Primitives.Basics.List.map[T,TResult](FSharpFunc2 mapping, FSharpList1 x) in D:\a\_work\1\s\src\FSharp.Core\local.fs:line 245 at Microsoft.FSharp.Collections.SeqModule.Fold[T,TState](FSharpFunc2 folder, TState state, IEnumerable1 source) in D:\a\_work\1\s\src\FSharp.Core\seq.fs:line 907 at AltCover.Visitor.visit(IEnumerable1 visitors, IEnumerable1 assemblies) in /_//AltCover.Engine/Visitor.fs:line 1688 at [email protected](Unit unitVar0) in /_//AltCover.Engine/Main.fs:line 784 at AltCover.PathOperation.DoPathOperation[TAny](FSharpFunc2 operation, FSharpFunc`2 handle) in ///AltCover.Engine/Output.fs:line 21
AssemblyReference =
System.Drawing.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
FileName =
I've added various System.Drawing.Common.dll paths to --depedency, like "system.drawing.common\6.0.0\lib\net461\System.Drawing.Common.dll", but the error persist.
Workaround: I've removed all DLLs that referenced System.Drawing.dll, then re-added around 10 due to some other "file not found" error. I think it won't be an acceptable solution since a few DLLs that I want instrumented; aren't now instrumented. But acceptable enough to continue evaluating AltCover. EDIT: But I have a hunch that my problem can be mitigated via --dependency or --assemblyExcludeFilter