/// <summary>
        /// Adds an individual file to the manifest
        /// </summary>
        /// <param name="fileName">Full file path of file to add</param>
        /// <param name="appfiles">The application files collection to add to</param>
        /// <param name="appManifest">The app manifest the file is associated with</param>
        public static void AddFile(string fileName, IList <ApplicationFile> appfiles, ApplicationManifest appManifest)
        {
            BaseReference fileRef;

            // Check to see if it is an assembly
            AssemblyIdentity assemId = AssemblyIdentity.FromFile(fileName);

            if (assemId != null)             // valid assembly
            {
                // Add as assembly
                fileRef = appManifest.AssemblyReferences.Add(fileName);
            }
            else
            {
                // Add as a file
                fileRef = appManifest.FileReferences.Add(fileName);
            }

            // Add it to bound list of file information
            ApplicationFile appFile = new ApplicationFile();

            appFile.FileName = Path.GetFileName(fileRef.TargetPath);
            string appManifestFolder = Path.GetDirectoryName(appManifest.SourcePath);

            appFile.RelativePath = ManifestHelper.GetRelativeFolderPath(fileName, appManifestFolder);
            appfiles.Add(appFile);
        }
        /// <summary>
        /// Returns a collection of application files from the assembly and file references in the provided app manifest
        /// </summary>
        /// <param name="appManifest">App manifest to inspect</param>
        /// <returns>List of ApplicationFile instances with the info from the manifest file list</returns>
        public static BindingList <ApplicationFile> GetFiles(ApplicationManifest appManifest)
        {
            BindingList <ApplicationFile> files = new BindingList <ApplicationFile>();

            // Populate collection with assembly references
            foreach (AssemblyReference assemRef in appManifest.AssemblyReferences)
            {
                if (assemRef.IsPrerequisite)
                {
                    continue;
                }
                ApplicationFile appFile = new ApplicationFile();
                appFile.FileName     = Path.GetFileName(assemRef.TargetPath);
                appFile.RelativePath = Path.GetDirectoryName(assemRef.TargetPath);
                appFile.DataFile     = false;
                if (appManifest.EntryPoint == assemRef)
                {
                    appFile.EntryPoint = true;
                }
                files.Add(appFile);
            }

            // Populate collection with file references
            foreach (FileReference fileRef in appManifest.FileReferences)
            {
                ApplicationFile appFile = new ApplicationFile();
                appFile.FileName     = Path.GetFileName(fileRef.TargetPath);
                appFile.RelativePath = Path.GetDirectoryName(fileRef.TargetPath);
                appFile.DataFile     = fileRef.IsDataFile;
                files.Add(appFile);
            }
            return(files);
        }