Пример #1
0
 /// <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);
     }
 }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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());
        }