Let's say I've written SuperTest on top of nUnit 2.1 and I'd like to share my creation with the world. Jess would love to use my library and she also wants to use nUnit directly as well. Her app HeadBook uses nUnit 2.8
The scenarios I can see for a source release:
- She checks out the SuperTest source which ships with nUnit 2.1, copies in nUnit 2.8, recompiles SuperTest, copies SuperTest.dll into HeadBook
- She checks out the SuperTest source which doesn't ship with nUnit but contains a reference which must be supplied. She copies in nUnit 2.8, recompiles SuperTest, copies SuperTest.dll into HeadBook
The scenarios I see for a binary release:
- She downloads SuperTest 1.0 binaries, puts SuperTest.dll and nUnit 2.1 into the GAC and references SuperTest from the GAC
- She downloads SuperTest 1.0 binaries, copies the dlls into HeadBook and recompiles HeadBook to work with nUnit 2.1
- She downloads SuperTest 1.0 binaries which have been ILMERGED into one dll, copies into headbook and references that
I'm trying to work out the best way to set up this project. It seems like the best way to do it is to include a copy of nUnit, have a local reference and ilmerge as a build step.
I'd like to avoid SuperTest being recompiled with different versions of dependencies I haven't tested against but I probably also want to avoid the gac so deployment is painless.
Would ilmerge be the best approach?