As I've been investigating this here I've found a few odd things about SA that I'd like to get clarified.
1. Version Numbers
If assembly AA with v 220.127.116.11 refers to assembly BB with v 18.104.22.168 and we obfuscate AA, then it seems that SA may locate some other version of BB (say v 22.214.171.124) and assume this is the correct referenced assembly.
The obfuscated assembly AA then has a ref to BB v 126.96.36.199 whereas prior to obfuscation AA referred to v 188.8.131.52 of BB.
I've carefully verified this and seen this behaviour and have to say that I'm astonished.
The version numbers of other referenced assemblies stored in an assembly's manifest is sacrosanct and any tool that alters this has to be misbehaving surely?
If during obfuscation the SA tool cannot find a referenced assembly that has the required version then I'd expect an error to be reported not blindly use the assembly and refer to incorrect versions.
It seems that we could obfuscate a set of assemblies and ship them to customers and then risk bizarre runtime issues due to this.
Can someone at SA please explain and justify this behaviour because I am very concerned about this.
2. Referenced Assemblies
The issue I'm still chasing with RedGate is bewildering, but seems to stem from a weak policy for specifying the location of referenced assemblies.
When I start a new obfuscation project I specify the location of the assembly to obfuscate but never get an opportunity to specify the location of any referenced assemblies.
As a result SA relies upon some heuristic to locate these when we run an obfuscation, it does not tell us exactly where it finds referenced assemblies and offers no opportunity to formally specify where.
There is a thing called 'MandatoryPath' but this must be set using a text editor by editing the project settings file and is cumbersome and needs to be tweaked if ever we want to change it, moving a set of SA projects to a different disk causes mayhem for example.
All in all this is bewildering and I think needs to be improved, a straightforwrad GUI enhancement to SA could support a "References" capability where we can explicitly set the path for each referenced assembly - or at least some helpful GUI support, right now its damned confusing and I'm a very experienced .Net developer.
Has anyone else experienced similar issues?