public void Generate(TemplateGeneratorParameters parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }
            parameters.Validate();

            var name            = parameters.Name;
            var outputDirectory = parameters.OutputDirectory;

            // Creates the package
            var package = NewPackage(name);

            // Setup the default namespace
            package.Meta.RootNamespace = parameters.Namespace;

            // Setup the path to save it
            package.FullPath = UPath.Combine(outputDirectory, new UFile(name + Package.PackageFileExtension));

            // Set the package
            parameters.Package = package;

            // Add it to the current session
            var session = parameters.Session;

            session.Packages.Add(package);

            // Load missing references
            session.LoadMissingReferences(parameters.Logger);
        }
        public override Action PrepareForRun(TemplateGeneratorParameters parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }
            parameters.Validate();

            return(() => Generate(parameters));
        }