I won’t go into too much internal COM detail because this article is primarily about . A Guid value is defined on the interface and on the class.NET classes as COM classes, but I’ll provide some explanation of that traditional behavior because (for example) a C client program is still dependent on it. These values are used by COM clients to locate the assembly that implements the COM class.In addition, changing the interface or the method parameters may result in enough difference that Visual Studio will generate a new Guid, if you don’t specify one yourself.In other words, you’ll have an unpredictable series of Guids that make diagnosing problems rather difficult. Again, you will get a default Prog Id based on the namespace and the class name, but Prog Ids need to be unique to a system, so the best practice is to base them on a company name and a product name rather than let the default be generated.Shared side-by-side assemblies can be installed by an operating system update, or by a Windows Installer package that installs or updates an application.For more information, see Installation of Win32 Assemblies.For more information, see About Isolated Applications and Side-by-Side Assemblies.
Sometimes I’ll use terminology from traditional COM, because COM client programs still behave the way that COM clients have always behaved. NET programmer, but what we’re doing here is COM programming, and that’s based on interfaces, so declare an interface: ) these two types will be found.
Apart from the standard reasons for using a strong name, it also makes your assembly unique because assembly name, strong name and assembly version are all used to identify a unique assembly.
When updating a COM interface, the contract on the original interface must remain the same, otherwise you risk shipping a new version of your assembly and immediately breaking existing client programs.
Prior to Windows XP, shared assemblies were registered globally and installed in the Windows System folder.
In this case, the latest installed version of the assembly is available to any application that binds to it.
It means that the compiler and the IDE know, at development time, the structure of the interfaces and methods and can perform type checking and be validated at compile time. It means that the code does not know at compile time whether the methods that are being called actually exist or whether the parameters are correct.