We are experiencing strange problems with RedGate SmartAssembly while obfuscating a solution using MSBuild.
Let me explain in detail.
1) The error we've got:
SmartAssembly build failed:
Cannot find dependency 'Interop.SHDocVw, Version=22.214.171.124, Culture=neutral, PublicKeyToken=null', which is required for assembly:
AxInterop.SHDocVw, Version=126.96.36.199, Culture=neutral, PublicKeyToken=null
HTMLEditorControl, Version=1.0.4923.24795, Culture=neutral, PublicKeyToken=49fa31e76fed3520
OrganizationWeaver, Version=188.8.131.52, Culture=neutral, PublicKeyToken=49fa31e76fed3520
Ensure that this dependency is in the main assembly folder, or in the Global Assembly Cache (GAC).
2) We tried to do this on various computers, and all of them got the error like that. But it happened with different dll's (NLog, Antlr3.Runtime)
3) .saproj file contains:
<Assembly AssemblyName="Interop.SHDocVw, Version=184.108.40.206, Culture=neutral, PublicKeyToken=null" MandatoryPath="..\\Prereqs\\Interop.SHDocVw.dll">
<ControlFlow Obfuscate="0" />
<MemberRefsProxy Proxy="0" />
<Embedding Embed="1" />
As you can see, we intentionally specified MandatoryPath attribute, and all the dll's are there.
How could we tackle this problem?
May be we incorrectly understand path calculcation in SmartAssembly? What path it takes as a starting point?