private Assembly Domain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args)
        {
            var message = new StringBuilder();

            message.AppendFormat("Resolve Assembly {0}", args.Name);

            if (args.RequestingAssembly != null)
            {
                message
                .AppendLine()
                .AppendFormat("Requesting Assembly {0}", args.RequestingAssembly.FullName)
                ;
            }

            Assembly result = null;

            var assemblyName = new AssemblyName(args.Name);

            foreach (var knownedAssemblyName in _knownCrmAssemblies)
            {
                if (string.Equals(assemblyName.Name, knownedAssemblyName, StringComparison.InvariantCultureIgnoreCase))
                {
                    var temp = Assembly.Load(knownedAssemblyName + ", Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL");

                    message
                    .AppendLine()
                    .AppendFormat("Resolving from Knowed Assembly {0}", temp.FullName)
                    .AppendLine()
                    .AppendFormat("Resolving from path {0}", temp.CodeBase)
                    ;

                    result = Assembly.ReflectionOnlyLoadFrom(temp.CodeBase);
                }
            }

            if (result == null)
            {
                string fileName = assemblyName.Name + ".dll";

                foreach (string probeSubdirectory in AssemblyProbeSubdirectories)
                {
                    string filePath = Path.Combine(Path.Combine(_assemblyDirectory, probeSubdirectory), fileName);

                    if (File.Exists(filePath))
                    {
                        message
                        .AppendLine()
                        .AppendFormat("Resolving from File {0}", filePath)
                        ;

                        Assembly assembly2 = Assembly.Load(AssemblyName.GetAssemblyName(filePath));

                        if (assembly2 != null)
                        {
                            message
                            .AppendLine()
                            .AppendFormat("Resolving from CodeBase : {0}", assembly2.CodeBase)
                            ;

                            result = Assembly.ReflectionOnlyLoadFrom(assembly2.CodeBase);
                        }
                    }
                }
            }

            if (result == null)
            {
                message
                .AppendLine()
                .Append("Resolving by Default")
                ;

                var temp = Assembly.Load(args.Name);

                if (temp != null)
                {
                    message
                    .AppendLine()
                    .AppendFormat("Resolving by Default from : {0}", temp.CodeBase)
                    ;

                    result = Assembly.ReflectionOnlyLoadFrom(temp.CodeBase);
                }
            }

            message.AppendLine().AppendLine();

            if (result == null)
            {
                message.Append("Assembly NOT RESOLVED.");

                DTEHelper.WriteToLog(message.ToString());
            }

            return(result);
        }