All of this is a matter of localizing the CLR and binding to your assemblies at runtime.
Since your client directly calls your DAL.dll, it needs a link to the DAL.dll file at compile time. Similarly, since your DAL.dll directly calls EL.Logging.dll, it needs a link to the EL.Logging.dll file at compile time.
However, since the Client is not directly dependent on EL.Logging.dll, it does not require a compilation link. However, during the execution of the CLR, you will have to search and link all 3 assemblies: Client, DAL.dll and EL.Logging.dll.
You do not need to add a link to the compilation, but at the same time, if the Copy local checkbox is set to true, you deploy the EL.Logging.dll file in the Client folder. Now at runtime, all DLL files are local.
Other ways to achieve the same effect are:
- Register your corporate library with the GAC
- Create an action to create messages
- Manually deploy the XCopy required DLL files.
- Specify
<codebase> in the configuration to find assemblies - Use
<probing> in the configuration to search for subdirectories (maybe it doesn't suit you)
source share