This chapter contains information helpful in planning how to use Side-by-Side technology. It does not require working knowledge of the program but it is very helpful to understand the basics of Side-by-Side. We strongly suggest that you read the introduction to Side-by-Side prior to studying this topic.
What is an Assembly
In the Quick Start Guide we were using the term manifest to describe the file created by Manifest Maker and used by Windows Side-by-Side. When talking about software distribution we should introduce an assembly.
An assembly is a collection of files described by a common manifest, including the manifest itself.
Technically there is no restriction on what files can be included in an assembly and listed in the manifest. Windows will use the manifest to locate files loaded with the various versions of LoadLibrary and to locate COM resources - classes, type libraries, proxies, progid's etc. The application program, or the assembly DLLs, may be written to look for other files in the same directory as some of the DLLs. You may find it helpful to include those other files in your assembly. This is especially attractive when distributing shared assemblies.
Windows provides a set of APIs to access and manipulate the activation context, you may find it advantageous to access the activation context in your code. For more details see Activation Context Reference on the Microsoft MSDN Library website.
More Advanced Topics
What are the different assembly types, what are they for.
How to deal with missing modules and not registered COM classes.
What do you need to know about building shared assemblies.
What do you need to consider when planning corporate deployment of side-by-side.
Development and distribution considerations for distributing your application.
Detailed information on selected aspects of Manifest Maker configuration.
Explanation of where do the duplicate ProgID's come from and how to deal with them.
Why does CLSIDFromProgID return an arbitrary GUID instead of the GUID hard-coded in the COM DLL.
Why does VB6 fail to handle events fired from a .Net COM object and what is <comInterfaceExternalProxyStub>.
Building manifest from the command line in Visual Studio or other environments.
Discussion on when to call the activation context API in code and how best to do it.