Really? I'm really surprised by that. I did it twice in a row, copying
off the generated TLB file after the first time and looked in OLE View.
The uuid had definately changed.



Patrick Burrows
Well I woke up this morning With the cold water
--------------------
Now Playing: tori amos - cornflake girl (patcast)
--------------------



> -----Original Message-----
> From: Brent E. Rector [mailto:[EMAIL PROTECTED]] 
> Sent: Friday, May 31, 2002 1:57 PM
> To: [EMAIL PROTECTED]
> Subject: Re: COM Interop calling a C# DLL from VB6
> 
> 
> The best technique is setting the GUID/IID/CLSID's using the
> GuidAttribute. However, a recompile with no changes does not cause the
> guids to change. In fact, I just tested that to make sure the 
> docs were
> correct. I recompiled your code below numberous times without 
> making any
> changes to the source and the generated GUIDs were always the same.
> 
> -- Brent Rector, .NET Wise Owl
> Demeanor for .NET - an obfuscation utility
> http://www.wiseowl.com/Products/Products.aspx
> 
> 
> 
> -----Original Message-----
> From: Patrick Burrows [mailto:[EMAIL PROTECTED]] 
> Sent: Friday, May 31, 2002 10:16 AM
> To: [EMAIL PROTECTED]
> Subject: Re: [DOTNET] COM Interop calling a C# DLL from VB6
> 
> 
> Also, it seems better to have all your classes implement an interface,
> and then use those interfaces for the TypeLibs. 
> 
> Question: Is the compiler at this point handling all the binary
> compatibility issues?
> 
> If I have a DLL and it implements an interface like the code pasted
> below. It will generate the TypeLibrary just fine and I can use that
> from VB6 without any issues. It works great, in fact. 
> 
> If I then compile a second time (without making any changes in
> code--just two compiles in a row), the references from within 
> my VB6 app
> are broken, and, indeed, the uuids are different.
> 
> 
>         public interface ICMyTest
>         {
>                 DateTime AddTwoHoursFromNow();
>         }
> 
>         [ClassInterface(ClassInterfaceType.None)]
>         public class CMyTest : ICMyTest
>         {
>                 public CMyTest()
>                 {
>                       
>                 }
>               
>                 public DateTime AddTwoHoursFromNow()
>                 {
>                         //adds two hours to whatever the 
> current time is
> and returns that value
>                         DateTime dtCurTime = DateTime.Now;
>                         return dtCurTime.AddHours(2);
>                 }
>        }
> 
> 
> Is there a way to set a binary compatible reference?
> 
> 
> Patrick Burrows
> Well I woke up this morning With the cold water
> --------------------
> Now Playing: willie joe - unitar rock.mp3 (patcast)
> --------------------
> 
> 
> 
> > -----Original Message-----
> > From: Sam Gentile [mailto:[EMAIL PROTECTED]]
> > Sent: Friday, May 31, 2002 12:24 PM
> > To: [EMAIL PROTECTED]
> > Subject: Re: COM Interop calling a C# DLL from VB6
> > 
> > 
> > The .snk files are only key files generated and used when you
> > are signing
> > and generating a Strong Name. As Brent said, you only need a 
> > Strong Name
> > when putiing Inetrops in the GAC. This is not neccessary to 
> > call .NET code
> > from COM. Some examples show it that way but it is 100% not 
> > required. You
> > can perfectly use Private assemblies as long as they are in 
> > the right place
> > (also as Brent said).
> > 
> > 
> > >From: Patrick Burrows <[EMAIL PROTECTED]>
> > >Reply-To: dotnet discussion <[EMAIL PROTECTED]>
> > >To: [EMAIL PROTECTED]
> > >Subject: Re: [DOTNET] COM Interop calling a C# DLL from VB6
> > >Date: Fri, 31 May 2002 11:30:55 -0400
> > >
> > >FWIW, I just found 
> > >http://www.codeproject.com/dotnet/cominterop.asp#PART2
> > >
> > >Which seems to be a very good and detailed discussion of doing COM 
> > >interop. I'm about to sit down and read it, but from the
> > sample I just
> > >looked at, there is nothing in there at all about needing 
> .SNK files.
> > >
> > >Patrick Burrows
> > >In this sinking board walk town
> > >--------------------
> > >Now Playing: no artist - audiotrack 11 (patcast)
> > >--------------------
> > >
> > >
> > >
> > > > -----Original Message-----
> > > > From: Brent E. Rector [mailto:[EMAIL PROTECTED]]
> > > > Sent: Friday, May 31, 2002 11:11 AM
> > > > To: [EMAIL PROTECTED]
> > > > Subject: Re: COM Interop calling a C# DLL from VB6
> > > >
> > > >
> > > > The docs are wrong when the claim a .NET assembly used
> > via COM interop
> > > > must have a strong name. As you state, they only need a
> > strong name in
> > > > order to be added to the GAC. As long as you understand
> > the assembly
> > > > search rules, you can use an assembly via COM interop
> > (i.e. by a COM
> > > > client) by placing the assembly in the client's private 
> assembly 
> > > > search path.
> > > >
> > > > -- Brent Rector, .NET Wise Owl
> > > > Demeanor for .NET - an obfuscation utility 
> > > > http://www.wiseowl.com/Products/Products.aspx
> > > >
> > > >
> > > >
> > > > -----Original Message-----
> > > > From: Richard Birkby [mailto:[EMAIL PROTECTED]]
> > > > Sent: Friday, May 31, 2002 7:41 AM
> > > > To: [EMAIL PROTECTED]
> > > > Subject: Re: [DOTNET] COM Interop calling a C# DLL from VB6
> > > >
> > > >
> > > > COM classes are globally registered in the Registry. To
> > do this, they
> > > > need a unique ID - a GUID.
> > > >
> > > > By default, .Net classes are not globally registered. To
> > do this, you
> > > > must place the assembly in the GAC (the equivalent of the
> > > > registry) and
> > > > give it a strong name (the equivalent of a GUID).
> > > >
> > > >
> > > > Richard
> > > >
> > > > > -----Original Message-----
> > > > > From: dotnet discussion
> > > > [mailto:[EMAIL PROTECTED]]On Behalf
> > > > > Of Patrick
> > > > Burrows
> > > > > Sent: 31 May 2002 14:22
> > > > > To: [EMAIL PROTECTED]
> > > > > Subject: [DOTNET] COM Interop calling a C# DLL from VB6
> > > > >
> > > > >
> > > > > Ok... I guess I'm not understanding what a strong name
> > is (in .NET
> > > > > terms). Why do I need a snk file? All I want to do is call
> > > > my C# DLL
> > > > > from VB6.
> > > > >
> > > > > I use sn.exe to create an SNK file. And I set
> > AssemblyKeyFile and
> > > > > AssemblyKeyName properties. But it is still saying my
> > > > Assembly doesn't
> > > >
> > > > > have a strong name.
> > > > >
> > > > > And I *truly* don't understand what any of this has to
> > do with COM
> > > > > interop. What does some sort of public key encryption have
> > > > to do with
> > > > > COM?
> > > > >
> > > > >
> > > > > Patrick Burrows
> > > > > What's he building in there?
> > > > > --------------------
> > > > > Now Playing: unknown artist - frank sinatra - 05 - the way
> > > > y (patcast)
> > > > > --------------------
> > > > >
> > > > > You can read messages from the DOTNET archive, 
> unsubscribe from 
> > > > > DOTNET, or subscribe to other DevelopMentor lists at 
> > > > > http://discuss.develop.com.
> > > >
> > > > You can read messages from the DOTNET archive, unsubscribe from 
> > > > DOTNET, or subscribe to other DevelopMentor lists at
> > > > http://discuss.develop.com.
> > > >
> > > > You can read messages from the
> > > > DOTNET archive, unsubscribe from DOTNET, or
> > > > subscribe to other DevelopMentor lists at
> > http://discuss.develop.com.
> > > >
> > >
> > >You can read messages from
> > the DOTNET archive, unsubscribe from DOTNET, or
> > >subscribe to other DevelopMentor lists at 
> http://discuss.develop.com.
> > 
> > 
> > 
> > 
> > 
> ---------------------
> > Sam Gentile
> > .NET Consultant
> > Co-author: Wrox Visual C++ .NET: A primer for C++ developers
> > BLOG: http://radio.weblogs.com/0105852/ 
> > http://www.project-inspiration.com/sgentile/DotNet.htm
> > http://www.project-inspiration.com/sgentile/
> > ---------------------------
> > 
> > 
> > 
> > 
> > _________________________________________________________________
> > Get your FREE download of MSN Explorer at
> > http://explorer.msn.com/intl.asp.
> > 
> > You can read messages from
> > the DOTNET archive, unsubscribe from DOTNET, or
> > subscribe to other DevelopMentor lists at 
> http://discuss.develop.com.
> > 
> 
> You can read messages from 
> the DOTNET archive, unsubscribe from DOTNET,
> or
> subscribe to other DevelopMentor lists at http://discuss.develop.com.
> 
> You can read messages from the DOTNET archive, unsubscribe 
> from DOTNET, or
> subscribe to other DevelopMentor lists at http://discuss.develop.com.
> 

You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to