Mike,

This is all pretty new for me, but only found the .ini file in C:\Documents
and Settings\mli\Local Settings\Application Data\assembly, and indeed it
contained the ref I need, but surely it can not be the idea to find it
there.

Again, asking for the properties of a gac-ed assembly using the .Net
Configuration MMC snap-in, nicely shows the path, even if this file was
added /i only.

Where can it come from ?

Thanks,
michel.





On Tue, 18 Feb 2003 13:03:31 -0700, Mike Woodring (DevelopMentor)
<[EMAIL PROTECTED]> wrote:

>You're right - I'd completely forgotten about /ir.  That flag does cause
>gacutil.exe to record the original installed-from location (apparently
>in the __AssemblyInfo__.ini file in the directory where the assembly is
>placed in the GAC tree).  That's why I said "that I know of", which
>implies for "of course, that doesn't mean it doesn't exist" :-).
>
>That said, I still don't know of an API for extracting that information
>programmatically, even if you could guarantee that you only went looking
>for that information from assemblies you know were installed using /ir.
>Of course, you could always just parse it out of the ini file yourself,
>but that presumes the use of a lot of undoc'd information.  Seems like
>fusion.dll should make that information available somewhere, so it's
>worth a look.  CreateInstallReferenceEnum looks particularly
>interesting...
>
>-Mike
>DevelopMentor
>http://staff.develop.com/woodring
>
>
>> -----Original Message-----
>> From: Moderated discussion of advanced .NET topics.
>> [mailto:[EMAIL PROTECTED]] On Behalf Of
>> John St. Clair
>> Sent: Tuesday, February 18, 2003 12:07 PM
>> To: [EMAIL PROTECTED]
>> Subject: Re: [ADVANCED-DOTNET] Original CodeBase from GAC assembly
>>
>>
>> Mike,
>>
>> I thought that's what gacutil -ir and gacutil -ur were for.
>> If I'm wrong
>> -- which is probably the case, would you mind explaining the point of
>> the FILEPATH reference?
>>
>> John
>>
>> John St. Clair
>> Prosjekt- og teamleder
>> Reaktor AS
>>
>>
>> -----Original Message-----
>> From: Moderated discussion of advanced .NET topics.
>> [mailto:[EMAIL PROTECTED]] On Behalf Of
>> Mike Woodring
>> (DevelopMentor)
>> Sent: 18. februar 2003 19:08
>> To: [EMAIL PROTECTED]
>> Subject: Re: [ADVANCED-DOTNET] Original CodeBase from GAC assembly
>>
>>
>> The issue is that when you install an assembly into the GAC, no record
>> is made anywhere (that I know of) as to where the assembly originally
>> came from.  In fact, the original dll need not exist anymore (can be
>> deleted, or as in the case of assemblies installed into the gac from
>> removable media such as CDs).
>>
>> The CodeBase and Location properties are only different when the
>> assembly resolver arrives at a decision to download an assembly from
>> off-host (such as in a smart client or whenever codeBase redirects are
>> used in configuration files).  In this situation, the
>> assembly resolver
>> identifies the "CodeBase" from whence a DLL should be loaded
>> as being X,
>> and then, if the CodeBase is off-host, downloads the bits for the
>> assembly to the temporary download cache in the local file system
>> ("Location").  In these situations, you can inspect either
>> the CodeBase
>> or Location properties for a given assembly depending on what you're
>> trying to determine (where it originally came from versus where it's
>> sitting in the local file system right now).
>>
>> But for assemblies installed in the GAC, no record is kept of the
>> original where-it-was-at-the-time-it-was-installed location.
>> So as for
>> what support the runtime might already have built-in, you're
>> out of luck
>> if that's what you need to know and will have to pursue rollowing your
>> own solution (ex: a custom GAC installer that records the original
>> installed-from location in some location to be consulted later; like a
>> config file, the registry, etc.
>>
>> -Mike
>> DevelopMentor
>> http://staff.develop.com/woodring
>>
>>
>> > -----Original Message-----
>> > From: Moderated discussion of advanced .NET topics.
>> > [mailto:[EMAIL PROTECTED]] On Behalf Of James
>> > Crowley
>> > Sent: Tuesday, February 18, 2003 9:43 AM
>> > To: [EMAIL PROTECTED]
>> > Subject: Re: [ADVANCED-DOTNET] Original CodeBase from GAC assembly
>> >
>> >
>> > Try
>> >
>> > Assembly.GetExecutingAssembly().Location
>> >
>> > Instead. According to msdn docs this is
>> >
>> > ~~
>> > The location of the loaded file that contains the manifest. If the
>> > loaded file was shadow-copied, the Location is that of the
>> file before
>>
>> > being shadow-copied.
>> > ~~
>> >
>> > Alternatively,
>> >
>> > System.Reflection.Assembly.GetAssembly(typeof(whatever)).CodeBase;
>> >
>> > Should work.
>> >
>> > ~ James Crowley
>> >
>>

Reply via email to