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); }
/// <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; } }
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; }
/// <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; } } } }