/// <summary> /// Populates the provided <paramref name="collection"/> with the assemblies generated by this silo. /// </summary> /// <param name="collection">The collection to populate.</param> public void UpdateGeneratedAssemblies(GeneratedAssemblies collection) { var generatedAssemblies = CodeGeneratorManager.GetGeneratedAssemblies(); foreach (var asm in generatedAssemblies) { collection.Add(asm.Key, asm.Value); } }
protected internal bool GenerateDaoAssembly(TypeSchema typeSchema, out CompilationException compilationEx) { try { compilationEx = null; SchemaDefinition schema = SchemaDefinitionCreateResult.SchemaDefinition; string assemblyName = "{0}.dll"._Format(schema.Name); string writeSourceTo = TypeSchemaTempPathProvider(schema, typeSchema); CompilerResults results = GenerateAndCompile(assemblyName, writeSourceTo); GeneratedDaoAssemblyInfo info = new GeneratedDaoAssemblyInfo(schema.Name, results) { TypeSchema = typeSchema, SchemaDefinition = schema }; info.Save(); GeneratedAssemblies.SetAssemblyInfo(schema.Name, info); Message = "Type Dao Generation completed successfully"; FireEvent(GenerateDaoAssemblySucceeded, new GenerateDaoAssemblyEventArgs(info)); TryDeleteDaoTemp(writeSourceTo); return(true); } catch (CompilationException ex) { Message = ex.Message; if (!string.IsNullOrEmpty(ex.StackTrace)) { Message = "{0}:\r\nStackTrace: {1}"._Format(Message, ex.StackTrace); } compilationEx = ex; FireEvent(GenerateDaoAssemblyFailed, EventArgs.Empty); return(false); } }
public Assembly GetDaoAssembly(bool useExisting = true) { GeneratedDaoAssemblyInfo info = GeneratedAssemblies.GetGeneratedAssemblyInfo(SchemaName) as GeneratedDaoAssemblyInfo; if (info == null) { TypeSchema typeSchema = SchemaDefinitionCreateResult.TypeSchema; SchemaDefinition schemaDef = SchemaDefinitionCreateResult.SchemaDefinition; string schemaName = schemaDef.Name; string schemaHash = typeSchema.Hash; info = new GeneratedDaoAssemblyInfo(schemaName, typeSchema, schemaDef); // check for the info file if (info.InfoFileExists && useExisting) // load it from file if it exists { info = info.InfoFilePath.FromJsonFile <GeneratedDaoAssemblyInfo>(); if (info.TypeSchemaHash == null || !info.TypeSchemaHash.Equals(schemaHash)) // regenerate if the hashes don't match { ReportDiff(info, typeSchema); GenerateOrThrow(schemaDef, typeSchema); } else { GeneratedAssemblies.SetAssemblyInfo(schemaName, info); } } else { GenerateOrThrow(schemaDef, typeSchema); } info = GeneratedAssemblies.GetGeneratedAssemblyInfo(SchemaName) as GeneratedDaoAssemblyInfo; } return(info.GetAssembly()); }