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.