Home All Groups Group Topic Archive Search About

Search path for assemblies

Author
29 Nov 2004 7:46 AM
Johannes Salmenhaara
Hi,

Common framework looks for assemblies either from GAC or from the same
directory where the application is located. However some of my asseblies are
not in the application directory and they can not be added to GAC. Is there
any way the application can set the additional locations where to look for
assemblies?

Best regards,
Jaakko
Author
29 Nov 2004 11:18 AM
Joyjit Mukherjee
Hi,

yes, you can add a probing element to your app.config file: -

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <probing privatePath="bin1;bin2\bin3;..\MyPrivatePath"/>
      </assemblyBinding>
   </runtime>
</configuration>

Here, it will search for the referenced assemblies in the path bin1,
bin2\bin3 relative to your assembly's path, and MyPrivatePath as root
relative to your assembly's path.

Let me know if you need anything else.

Thanks
Joyjit


Show quoteHide quote
"Johannes Salmenhaara" <johannes.salmenhaara@REMOTETHIS_24.fi> wrote in
message news:OgKFDee1EHA.2316@TK2MSFTNGP15.phx.gbl...
> Hi,
>
> Common framework looks for assemblies either from GAC or from the same
> directory where the application is located. However some of my asseblies
are
> not in the application directory and they can not be added to GAC. Is
there
> any way the application can set the additional locations where to look for
> assemblies?
>
> Best regards,
> Jaakko
>
>
Are all your drivers up to date? click for free checkup

Author
29 Nov 2004 11:36 AM
Jaakko Salmenius
Hi Joyjit,

Are you sure that ..\MyPrivatePath will work? At least I have not managed to
get anything but sub directories working. It seems that DLLs can only locate
on the root dir or on the sub directories but not on any other dir or drive.

Jaska
Author
29 Nov 2004 2:23 PM
Jakob Christensen
The probing element only works for sub directories.  But you can use
<codeBase> to specify any path as long as your assemblies are strongly named.

HTH, Jakob.


Show quoteHide quote
"Jaakko Salmenius" wrote:

> Hi Joyjit,
>
> Are you sure that ..\MyPrivatePath will work? At least I have not managed to
> get anything but sub directories working. It seems that DLLs can only locate
> on the root dir or on the sub directories but not on any other dir or drive.
>
> Jaska
>
>
>
Author
29 Nov 2004 6:58 PM
Christian Benien
Hi Jaska,

...\MyPrivatePath won't work. Your only chance to load assemblies
outside your executable's directory is Assembly.LoadFrom, but that
suffers from some limitations. You should find more than enough
information in Suzanne Cook's blog, which helped me a lot:

http://blogs.msdn.com/suzcook/

Christian

Show quoteHide quote
"Jaakko Salmenius" <jaska@REMOTETHIS_multilizer.com> wrote in message news:<Oqq3deg1EHA.3820@TK2MSFTNGP11.phx.gbl>...
> Hi Joyjit,
>
> Are you sure that ..\MyPrivatePath will work? At least I have not managed to
> get anything but sub directories working. It seems that DLLs can only locate
> on the root dir or on the sub directories but not on any other dir or drive.
>
> Jaska
Author
29 Nov 2004 3:18 PM
Richard Blewett [DevelopMentor]
You can only extend the probing path to subdirectories under the appbase, sibling directories will not be searched via probing.

The whole point of this is that without strong names there is no way for the runtime to guarantee that its picked up the correct assembly as it only performs file name matching. So you could accidently pick up an assembly that someone else wrote that just happened to have the same name as the one you intended. Thats why for non-strong named assemblies the assembly resolver works on the basis that the child assemblies are physically constrined within the Appbase and its subdirectories

Regards

Richard Blewett - DevelopMentor
http://www.dotnetconsult.co.uk/weblog
http://www.dotnetconsult.co.uk

   Hi,

yes, you can add a probing element to your app.config file: -

<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin1;bin2\bin3;..\MyPrivatePath"/>
</assemblyBinding>
</runtime>
</configuration>

Here, it will search for the referenced assemblies in the path bin1,
bin2\bin3 relative to your assembly's path, and MyPrivatePath as root
relative to your assembly's path.

Let me know if you need anything else.

Thanks
Joyjit

Bookmark and Share