I need to place DLLs for my application inside subfolder. It is possible to set this subfolder via app.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="Libs"/>
</assemblyBinding>
</runtime>
But for some reasons I don't want to use .config file in this case. Is it possible to set probing path directly from application code? I am sure that DLLs always be within this folder.
Any ideas?
The process of locating an assembly involves the following steps: If a <codeBase> element is found in the application configuration file, the runtime checks the specified location. If a match is found, that assembly is used and no probing occurs. If the assembly is not found there, the binding request fails.
config file is located in the %SystemRoot%\Microsoft.NET\Framework\%VersionNumber%\CONFIG\ directory. In the Machine. config file, locate the configuration setting you want to override in your Web.
The probing path is defined by the AppDomainSetup for the primary app domain. In the default CLR host, that AD gets automatically created before your code starts running. The only way to configure its setup is to use a .config file, it must have the same name as the exe. After which it is frozen, any changes you make in your code won't have an effect.
Workarounds are to create your own AD so you can change its setup or implementing the AppDomain.AssemblyResolve event. Neither of which compares favorably to the simple solutions: a .config file or just keeping the assembly in the right directory. Ymmv.
You could just subscribe to AppDomain.CurrentDomain.AssemblyResolve and check your specific location in your handler...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With