private void Initialise(string assemblyName)
        {
            IAssemblyName fusionName = null;
            int           hr;

            //  If we have an assembly name, create the assembly name object.
            if (assemblyName != null)
            {
                hr = FusionImports.CreateAssemblyNameObject(out fusionName, assemblyName,
                                                            CREATE_ASM_NAME_OBJ_FLAGS.CANOF_PARSE_DISPLAY_NAME, IntPtr.Zero);

                //  Check the result.
                if (hr < 0)
                {
                    Marshal.ThrowExceptionForHR(hr);
                }
            }

            //  Create the assembly enumerator.
            hr = FusionImports.CreateAssemblyEnum(out assemblyEnumerator, IntPtr.Zero,
                                                  fusionName, ASM_CACHE_FLAGS.ASM_CACHE_GAC, IntPtr.Zero);

            //  Check the result.
            if (hr < 0)
            {
                Marshal.ThrowExceptionForHR(hr);
            }
        }
        public InstallReferenceEnumerator(String assemblyName)
        {
            IAssemblyName fusionName = null;

            int hr = FusionImports.CreateAssemblyNameObject(
                out fusionName,
                assemblyName,
                CREATE_ASM_NAME_OBJ_FLAGS.CANOF_PARSE_DISPLAY_NAME,
                IntPtr.Zero);

            if (hr >= 0)
            {
                hr = FusionImports.CreateInstallReferenceEnum(out _refEnum, fusionName, 0, IntPtr.Zero);
            }

            if (hr < 0)
            {
                Marshal.ThrowExceptionForHR(hr);
            }
        }