Exemplo n.º 1
0
        private Dictionary <string, byte[]> TryGetGeneratedAssemblies(SiloHandle siloHandle)
        {
            var tryToRetrieveGeneratedAssemblies = Task.Run(() =>
            {
                try
                {
                    var silo = siloHandle.Silo;
                    if (silo?.TestHook != null)
                    {
                        var generatedAssemblies = new Silo.TestHooks.GeneratedAssemblies();
                        silo.TestHook.UpdateGeneratedAssemblies(generatedAssemblies);

                        return(generatedAssemblies.Assemblies);
                    }
                }
                catch (Exception exc)
                {
                    WriteLog("UpdateGeneratedAssemblies threw an exception. Ignoring it. Exception: {0}", exc);
                }

                return(null);
            });

            // best effort to try to import generated assemblies, otherwise move on.
            if (tryToRetrieveGeneratedAssemblies.Wait(TimeSpan.FromSeconds(3)))
            {
                return(tryToRetrieveGeneratedAssemblies.Result);
            }

            return(null);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Imports assemblies generated by runtime code generation from the provided silo.
        /// </summary>
        /// <param name="siloHandle">The silo.</param>
        private static void ImportGeneratedAssemblies(SiloHandle siloHandle)
        {
            try
            {
                var silo = siloHandle.Silo;
                if (silo != null && silo.TestHook != null)
                {
                    var generatedAssemblies = new Silo.TestHooks.GeneratedAssemblies();
                    silo.TestHook.UpdateGeneratedAssemblies(generatedAssemblies);

                    foreach (var assembly in generatedAssemblies.Assemblies)
                    {
                        // If we have never seen generated code for this assembly before, or generated code might be
                        // newer, store it for later silo creation.
                        byte[] existing;
                        if (!additionalAssemblies.TryGetValue(assembly.Key, out existing) || assembly.Value != null)
                        {
                            additionalAssemblies[assembly.Key] = assembly.Value;
                        }
                    }
                }
            }
            catch (Exception exc)
            {
                Console.WriteLine("UpdateGeneratedAssemblies threw an exception. Ignoring it. Exception: {0}", exc);
                return;
            }
        }
Exemplo n.º 3
0
        private Dictionary<string, byte[]> TryGetGeneratedAssemblies(SiloHandle siloHandle)
        {
            var tryToRetrieveGeneratedAssemblies = Task.Run(() =>
            {
                try
                {
                    var silo = siloHandle.Silo;
                    if (silo?.TestHook != null)
                    {
                        var generatedAssemblies = new Silo.TestHooks.GeneratedAssemblies();
                        silo.TestHook.UpdateGeneratedAssemblies(generatedAssemblies);

                        return generatedAssemblies.Assemblies;
                    }
                }
                catch (Exception exc)
                {
                    WriteLog("UpdateGeneratedAssemblies threw an exception. Ignoring it. Exception: {0}", exc);
                }

                return null;
            });

            // best effort to try to import generated assemblies, otherwise move on.
            if (tryToRetrieveGeneratedAssemblies.Wait(TimeSpan.FromSeconds(3)))
            {
                return tryToRetrieveGeneratedAssemblies.Result;
            }

            return null;
        }
Exemplo n.º 4
0
 /// <summary>
 /// Imports assemblies generated by runtime code generation from the provided silo.
 /// </summary>
 /// <param name="siloHandle">The silo.</param>
 private static void ImportGeneratedAssemblies(SiloHandle siloHandle)
 {
     try
     {
         var silo = siloHandle.Silo;
         if (silo != null && silo.TestHook != null)
         {
             var generatedAssemblies = new Silo.TestHooks.GeneratedAssemblies();
             silo.TestHook.UpdateGeneratedAssemblies(generatedAssemblies);
             
             foreach (var assembly in generatedAssemblies.Assemblies)
             {
                 // If we have never seen generated code for this assembly before, or generated code might be
                 // newer, store it for later silo creation.
                 byte[] existing;
                 if (!additionalAssemblies.TryGetValue(assembly.Key, out existing) || assembly.Value != null)
                 {
                     additionalAssemblies[assembly.Key] = assembly.Value;
                 }
             }
         }
     }
     catch (Exception exc)
     {
         Console.WriteLine("UpdateGeneratedAssemblies threw an exception. Ignoring it. Exception: {0}", exc);
         return;
     }
 }
Exemplo n.º 5
0
 /// <summary>
 /// Imports assemblies generated by runtime code generation from the provided silo.
 /// </summary>
 /// <param name="siloHandle">The silo.</param>
 private static void ImportGeneratedAssemblies(SiloHandle siloHandle)
 {
     var silo = siloHandle.Silo;
     if (silo != null && silo.TestHook != null)
     {
         var generatedAssemblies = new Silo.TestHooks.GeneratedAssemblies();
         silo.TestHook.UpdateGeneratedAssemblies(generatedAssemblies);
         foreach (var assembly in generatedAssemblies.Assemblies)
         {
             // If we have never seen generated code for this assembly before, or generated code might be
             // newer, store it for later silo creation.
             byte[] existing;
             if (!additionalAssemblies.TryGetValue(assembly.Key, out existing) || assembly.Value != null)
             {
                 additionalAssemblies[assembly.Key] = assembly.Value;
             }
         }
     }
 }