Less assemblies

Topics: Metadata Model, PDB Reader, PDB Writer, PE reader, PE Writer, Source Model
May 25, 2010 at 1:02 PM

I wish this was all in one assembly or maybe two. I find it hard to keep track of what is in where and it's kind of gross too.

Coordinator
May 25, 2010 at 2:13 PM

Things are factored in order to allow different uses to have smaller deployed footprints.

You can use ilmerge to link together the assemblies that you need: http://www.microsoft.com/downloads/details.aspx?familyid=22914587-b4ad-4eae-87cf-b14ae6a939b0&displaylang=en

Or you can create your own solution and projects to build everything together.

May 25, 2010 at 3:25 PM

I'm not too keen on forking the code if I don't have to. But seriously, every assembly that references MetadataModel also references MetadataModelHelper, can't those be combined? Every assembly that refrences PEWriter also references PEReader, same with PdbReader and Writer. And most of the test projects reference all of them! How do you have a smaller deployment footprint when you have tons of assemblies? Isn't there a fair amount of overhead in an assembly that would go away by merging assemblies?

Also, having more assemblies results in longer load times (than if they were combined). And if a user really wanted just a subset of the assemblies they could just use Mono.Cecil (http://www.mono-project.com/Cecil) to do static compilation and reduce the deployment footprint. Besides the total size of the Cci assemblies is 2.44 MB (for cciast). Reduction from 15 assemblies to 2 would be worth a few extra K if you ask me.

Also, is the plan for the Cci to go into the framework eventually? If so you'll need to deploy all of this anyway, multiple assemblies doesn't help at all in that case.