Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / .NET Framework / New Users / January 2008

Tip: Looking for answers? Try searching our database.

Assembly.LoadFrom

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Luis F. Rodas - 22 Jan 2008 15:01 GMT
Hi all,

I am using Assembly.LoadFrom( ) to load an assembly:

Assembly as =
Assembly.LoadFrom("C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll");

I noted 'CodeBase' and 'Location' properties from 'as' variable display the
GAC path, that is, the assembly was loaded from GAC and not from path
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\". Questions:

1) Why ?

2) I need load some assemblies (they are installed on GAC too) from original
path (e.g. C:\Program Files\MyProgram\MyControls\MyAssembly.dll) and not
from GAC. Any way ?

Best Regards,
Luis F.
(Indusoft Team)
Linda Liu[MSFT] - 23 Jan 2008 06:59 GMT
Hi Luis,

I performed several tests on this issue and the result I got is that as
long as a strong-named assembly is added to the GAC, the Load or LoadFrom
or LoadFile method of the Assembly class always loads and returns the
assembly cached in the GAC, no matter whether there's the same assembly
file in the same path of the executable.

So the Runtime always checks the GAC to search for the required assembly
first and then check the application directory if there's no matching in
the GAC. This is behavior is by design and unfortunately we have no chance
to change it.

The workaround to your problem is to uninstall your assembly from the GAC
and copy the assembly file to the application directory(if necessary).

Hope this helps.
If you have any question, please feel free to let me know.

Sincerely,
Linda Liu
Microsoft Online Community Support

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
schneider - 23 Jan 2008 19:52 GMT
Also note:

LoadFrom: .NET caches the assembly, so if the assembly was already loaded
earlier (assembly with no strong name) it returns the first assembly loaded
(hashed by name?), regardless of version number. The path is basically
ignored.
This method also looks for and loads all dependant assembly items.

http://msdn2.microsoft.com/en-us/library/1009fa28.aspx

Also Load and/or LoadFile only loads the specified assembly, and not the
related/dependant items, which can cause problems.

Eric Schneider

> Hi Luis,
>
[quoted text clipped - 39 lines]
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
Luis F. Rodas - 24 Jan 2008 12:13 GMT
Hi Linda and Eric,

Thanks for your replies!

I would like to know how Visual Studio 2005 gets the original directories
from some assemblies, such as: System.Design.dll, System.Windows.Forms.dll.
I saw this in the 'References/Properties/Path'. Also probably Visual Studio
loads these asssemblies from the original directories.

Again thanks and best regards!

Luis F.
(Indusoft Team)

> Also note:
>
[quoted text clipped - 57 lines]
>> This posting is provided "AS IS" with no warranties, and confers no
>> rights.
Linda Liu[MSFT] - 28 Jan 2008 08:12 GMT
Hi Luis,

Thank you for your reply!

Open a WinForm application project in VS and right click on the project
item in the Solution Explorer and choose Add Reference command, which will
open the Add Reference dialog.

In the Add Reference dialog, the assemblies shown in the .NET tab are all
retrieved from the original directories by VS, not from GAC.

However, when the WinForm application is run, all the referenced assemblies
that have been cached in the GAC are loaded from the GAC, instead of from
the original directories.

If you have anything unclear, please feel free to let me know.

Sincerely,
Linda Liu
Microsoft Online Community Support
Luis F. Rodas - 29 Jan 2008 10:47 GMT
Hi Linda,

Do you have any idea how VS gets the original directories in the Add
Reference dialog ? In my program I would like to display the path of the
controls from the original directories too.

Best Regards,
Luis F.
(Indusoft Team)

> Hi Luis,
>
[quoted text clipped - 17 lines]
> Linda Liu
> Microsoft Online Community Support
Linda Liu[MSFT] - 31 Jan 2008 10:29 GMT
Hi Luis,

Thank you for your reply!

> Do you have any idea how VS gets the original directories in the Add
Reference dialog ?

IMO, VS searches the assemblies file in some specific directories. So the
original directories are shown in the Add Reference dialog. Note that the
assemblies are not loaded when they are referenced by VS.

> In my program I would like to display the path of the controls from the
original directories too.

The only suggestion I can make is to remove your assembly from GAC. Then
you load the assembly from the original directory.

Sincerely,
Linda Liu
Microsoft Online Community Support
schneider - 24 Jan 2008 16:46 GMT
I think you would need to use the Load or LoadFile method, but then you
would need to load all the dependencies also.
Basically create your own LoadFrom functionality. Maybe not loading your
assembly into GAC is the answer.

Schneider

> Hi all,
>
[quoted text clipped - 16 lines]
> Luis F.
> (Indusoft Team)

Rate this thread:







Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.