internal static FabricWorkerEntryPoint CreateFromAssemblyDescription(DllHostHostedDllDescription hostedDllDescription)
        {
            Debug.Assert(hostedDllDescription.Kind == DllHostHostedDllKind.Managed, "Kind must be ManagedAssembly");

            var assemblyDescription           = (DllHostHostedManagedDllDescription)hostedDllDescription;
            FabricWorkerEntryPoint entryPoint = FabricWorkerEntryPoint.CreateFromAssemblyName(assemblyDescription.AssemblyName);

            entryPoint.assemblyDescription = assemblyDescription;

            return(entryPoint);
        }
        private static FabricWorkerEntryPoint CreateFromAssemblyName(string assemblyName)
        {
            Assembly assembly = null;

            try
            {
                assembly = Assembly.Load(new AssemblyName(assemblyName));
            }
            catch (Exception e)
            {
                AppTrace.TraceSource.WriteExceptionAsError("FabricWorkerEntryPoint.CreateFromAssemblyName", e, "Failed to load assembly {0}", assemblyName);
                throw;
            }

            Type entryPointType = null;

            try
            {
                entryPointType = FabricWorkerEntryPoint.GetEntryPointTypeFromAssembly(assembly);
            }
            catch (Exception e)
            {
                AppTrace.TraceSource.WriteExceptionAsError("FabricWorkerEntryPoint.CreateFromAssemblyName", e, "Did not find FabricWorkerEntryPoint in assembly {0}", assemblyName);
                throw;
            }

            try
            {
                return((FabricWorkerEntryPoint)Activator.CreateInstance(entryPointType));
            }
            catch (Exception e)
            {
                AppTrace.TraceSource.WriteExceptionAsError("FabricWorkerEntryPoint.CreateFromAssemblyName", e, "Did not find FabricWorkerEntryPoint in assembly {0}", assemblyName);
                throw;
            }
        }