/// <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); }