internal override void ExecuteInternal(IBuildConfiguration config)
        {
            if (string.IsNullOrEmpty(ManifestPath))
            {
                Log.LogWarning("No value was provided for the Manifest. Unable to process Manifest Tokens");
                return;
            }

            if (!File.Exists(ManifestPath))
            {
                Log.LogWarning($"Unable to process Manifest Tokens, no manifest was found at the path '{ManifestPath}'");
                return;
            }

            IGenerator generator = null;

            switch (config.Platform)
            {
            case Platform.iOS:
                generator = new TemplatedPlistGenerator(config)
                {
                    ManifestOutputPath = ManifestPath
                };
                break;

            case Platform.Android:
                generator = new TemplatedAndroidAppManifestGenerator(config, ReferenceAssemblyPaths)
                {
                    ManifestOutputPath = ManifestPath
                };
                break;
            }

            generator?.Execute();
        }
        internal override void ExecuteInternal(IBuildConfiguration config)
        {
            if (string.IsNullOrEmpty(ManifestPath))
            {
                Log.LogWarning("No value was provided for the Manifest. Unable to process Manifest Tokens");
                return;
            }

            if (!File.Exists(ManifestPath))
            {
                Log.LogWarning($"Unable to process Manifest Tokens, no manifest was found at the path '{ManifestPath}'");
                return;
            }

            if (string.IsNullOrEmpty(OutputManifestPath))
            {
                OutputManifestPath = ManifestPath;
            }

            BaseTemplatedManifestGenerator generator = null;

            switch (config.Platform)
            {
            case Platform.iOS:
            case Platform.macOS:
            case Platform.TVOS:
                generator = new TemplatedPlistGenerator(config)
                {
                    ManifestInputPath  = ManifestPath,
                    ManifestOutputPath = OutputManifestPath
                };
                break;

            case Platform.Android:
                generator = new TemplatedAndroidAppManifestGenerator(config)
                {
                    ManifestInputPath  = ManifestPath,
                    ManifestOutputPath = OutputManifestPath
                };
                break;
            }

            generator?.Execute();

            if (File.Exists(generator.Outputs))
            {
                ProcessedManifest = new TaskItem(generator.Outputs);
            }

            PackageId = generator?.GetBundId() ?? string.Empty;
        }