Hintpath vs referencepath?

G

Guest

Hello,

I'm trying to get a grip on how .NET handles finding dependent assemblies.
The "Reference Path" property that can be found in the IDE's project
properties dialog seems to correspond to the ReferencePath attribute of the
settings element of the myproj.vbproj.user file. There also is a "hintpath"
attribute for each reference listed in the myproj.vbproj file:

<Reference
Name = "ClassLibrary1"
AssemblyName = "ClassLibrary1"
HintPath = "..\..\ClassLibrary1.dll"
Private = "False"
/>

What is the relationship between the hintpath and the referencepath? These
both seem to be only used at buildtime. Is that correct?

If I set the "copy local" setting to false of an assembly reference for an
assembly that's not in the GAC, whenever the code runs and tries to access
that assembly, a "System.IO.FileNotFoundException" is thrown. Is there no way
to have this work with the copy local setting set to false? Is there a place
to specify paths that the .NET loader should search at runtime for referenced
assemblys? Preferablly and application specific option, not a system wide one.

Thanks!

-Ben
 
S

Steven Cheng[MSFT]

Hi Ben,

Welcome to MSDN newsgroup.
Regarding on the quesiton of the VS.NET're project assembly reference
setting and ..NET's runtime assembly locating, here are some of my
understandings:

As for the "Referece Path" or "Hint Path" in the VS.NET project's setting
files, they're all design-time /dev-time setting used by the IDE. As
described in the IDE's help doc, "Reference Path" are used by the VS.NET
IDE to load all the assembliy references when the Project is loaded into
the VS.NET IDE. And the "Hit Path" is mainly used for building time, when
the IDE will build the project, it'll locate the assemblies which is
required to link through the "Hint Path". Anyway, they're all internally
used by the VS.NET IDE, and is possibly to change in sequential version and
they have nothing to do with the .NET framework CLR's runtime assembly
locating.

For .net framework CLR's runtime assembly locating, it'll follow a well
defined steps, generally, it'll check GAC (if strong-named) first, then,
codebase settting , and private path probing. Here is a MSDN reference
which describing the .NET framework's runtime assembly locating:

#How the Runtime Locates Assemblies
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconhowruntimelocatesa
ssemblies.asp?frame=true

In addition, if you have interests, I'd recommend you the following books:

Don Box's "Essential dotNet"
and Steven Pratschner's "Customzing the Microsoft .NET Framework CLR"

which has detailed description on .NET runtime's assembly binding and
loading.

Hope helps. Thanks,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)








--------------------
| Thread-Topic: Hintpath vs referencepath?
| thread-index: AcXCsdELyAVsj/L6RR2ph9HIcFaPpA==
| X-WBNR-Posting-Host: 129.33.1.37
| From: =?Utf-8?B?QmVuIFIu?= <[email protected]>
| Subject: Hintpath vs referencepath?
| Date: Mon, 26 Sep 2005 08:49:02 -0700
| Lines: 28
| Message-ID: <[email protected]>
| MIME-Version: 1.0
| Content-Type: text/plain;
| charset="Utf-8"
| Content-Transfer-Encoding: 7bit
| X-Newsreader: Microsoft CDO for Windows 2000
| Content-Class: urn:content-classes:message
| Importance: normal
| Priority: normal
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
| Newsgroups: microsoft.public.dotnet.general
| NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.2.250
| Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGXA03.phx.gbl
| Xref: TK2MSFTNGXA01.phx.gbl microsoft.public.dotnet.general:50694
| X-Tomcat-NG: microsoft.public.dotnet.general
|
| Hello,
|
| I'm trying to get a grip on how .NET handles finding dependent
assemblies.
| The "Reference Path" property that can be found in the IDE's project
| properties dialog seems to correspond to the ReferencePath attribute of
the
| settings element of the myproj.vbproj.user file. There also is a
"hintpath"
| attribute for each reference listed in the myproj.vbproj file:
|
| <Reference
| Name = "ClassLibrary1"
| AssemblyName = "ClassLibrary1"
| HintPath = "..\..\ClassLibrary1.dll"
| Private = "False"
| />
|
| What is the relationship between the hintpath and the referencepath?
These
| both seem to be only used at buildtime. Is that correct?
|
| If I set the "copy local" setting to false of an assembly reference for
an
| assembly that's not in the GAC, whenever the code runs and tries to
access
| that assembly, a "System.IO.FileNotFoundException" is thrown. Is there no
way
| to have this work with the copy local setting set to false? Is there a
place
| to specify paths that the .NET loader should search at runtime for
referenced
| assemblys? Preferablly and application specific option, not a system wide
one.
|
| Thanks!
|
| -Ben
|
 
S

Steven Cheng[MSFT]

You're welcome Ben,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)

--------------------
| Thread-Topic: Hintpath vs referencepath?
| thread-index: AcXERHAhj0K7y4NpRh2QIqZvSDexOA==
| X-WBNR-Posting-Host: 129.33.1.37
| From: =?Utf-8?B?QmVuIFIu?= <[email protected]>
| References: <[email protected]>
<[email protected]>
| Subject: RE: Hintpath vs referencepath?
| Date: Wed, 28 Sep 2005 08:51:06 -0700
| Lines: 122
| Message-ID: <[email protected]>
| MIME-Version: 1.0
| Content-Type: text/plain;
| charset="Utf-8"
| Content-Transfer-Encoding: 7bit
| X-Newsreader: Microsoft CDO for Windows 2000
| Content-Class: urn:content-classes:message
| Importance: normal
| Priority: normal
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
| Newsgroups: microsoft.public.dotnet.general
| NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.2.250
| Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGXA03.phx.gbl
| Xref: TK2MSFTNGXA01.phx.gbl microsoft.public.dotnet.general:50883
| X-Tomcat-NG: microsoft.public.dotnet.general
|
| Thank you for the clarification, Steven. Your info was very useful!
|
| -Ben
|
| "Steven Cheng[MSFT]" wrote:
|
| > Hi Ben,
| >
| > Welcome to MSDN newsgroup.
| > Regarding on the quesiton of the VS.NET're project assembly reference
| > setting and ..NET's runtime assembly locating, here are some of my
| > understandings:
| >
| > As for the "Referece Path" or "Hint Path" in the VS.NET project's
setting
| > files, they're all design-time /dev-time setting used by the IDE. As
| > described in the IDE's help doc, "Reference Path" are used by the
VS.NET
| > IDE to load all the assembliy references when the Project is loaded
into
| > the VS.NET IDE. And the "Hit Path" is mainly used for building time,
when
| > the IDE will build the project, it'll locate the assemblies which is
| > required to link through the "Hint Path". Anyway, they're all
internally
| > used by the VS.NET IDE, and is possibly to change in sequential version
and
| > they have nothing to do with the .NET framework CLR's runtime assembly
| > locating.
| >
| > For .net framework CLR's runtime assembly locating, it'll follow a well
| > defined steps, generally, it'll check GAC (if strong-named) first,
then,
| > codebase settting , and private path probing. Here is a MSDN reference
| > which describing the .NET framework's runtime assembly locating:
| >
| > #How the Runtime Locates Assemblies
| >
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconhowruntimelocatesa
| > ssemblies.asp?frame=true
| >
| > In addition, if you have interests, I'd recommend you the following
books:
| >
| > Don Box's "Essential dotNet"
| > and Steven Pratschner's "Customzing the Microsoft .NET Framework CLR"
| >
| > which has detailed description on .NET runtime's assembly binding and
| > loading.
| >
| > Hope helps. Thanks,
| >
| > Steven Cheng
| > Microsoft Online Support
| >
| > Get Secure! www.microsoft.com/security
| > (This posting is provided "AS IS", with no warranties, and confers no
| > rights.)
| >
| >
| >
| >
| >
| >
| >
| >
| > --------------------
| > | Thread-Topic: Hintpath vs referencepath?
| > | thread-index: AcXCsdELyAVsj/L6RR2ph9HIcFaPpA==
| > | X-WBNR-Posting-Host: 129.33.1.37
| > | From: =?Utf-8?B?QmVuIFIu?= <[email protected]>
| > | Subject: Hintpath vs referencepath?
| > | Date: Mon, 26 Sep 2005 08:49:02 -0700
| > | Lines: 28
| > | Message-ID: <[email protected]>
| > | MIME-Version: 1.0
| > | Content-Type: text/plain;
| > | charset="Utf-8"
| > | Content-Transfer-Encoding: 7bit
| > | X-Newsreader: Microsoft CDO for Windows 2000
| > | Content-Class: urn:content-classes:message
| > | Importance: normal
| > | Priority: normal
| > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
| > | Newsgroups: microsoft.public.dotnet.general
| > | NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.2.250
| > | Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGXA03.phx.gbl
| > | Xref: TK2MSFTNGXA01.phx.gbl microsoft.public.dotnet.general:50694
| > | X-Tomcat-NG: microsoft.public.dotnet.general
| > |
| > | Hello,
| > |
| > | I'm trying to get a grip on how .NET handles finding dependent
| > assemblies.
| > | The "Reference Path" property that can be found in the IDE's project
| > | properties dialog seems to correspond to the ReferencePath attribute
of
| > the
| > | settings element of the myproj.vbproj.user file. There also is a
| > "hintpath"
| > | attribute for each reference listed in the myproj.vbproj file:
| > |
| > | <Reference
| > | Name = "ClassLibrary1"
| > | AssemblyName = "ClassLibrary1"
| > | HintPath = "..\..\ClassLibrary1.dll"
| > | Private = "False"
| > | />
| > |
| > | What is the relationship between the hintpath and the referencepath?
| > These
| > | both seem to be only used at buildtime. Is that correct?
| > |
| > | If I set the "copy local" setting to false of an assembly reference
for
| > an
| > | assembly that's not in the GAC, whenever the code runs and tries to
| > access
| > | that assembly, a "System.IO.FileNotFoundException" is thrown. Is
there no
| > way
| > | to have this work with the copy local setting set to false? Is there
a
| > place
| > | to specify paths that the .NET loader should search at runtime for
| > referenced
| > | assemblys? Preferablly and application specific option, not a system
wide
| > one.
| > |
| > | Thanks!
| > |
| > | -Ben
| > |
| >
| >
|
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top