//---------------------------------------------------------- // GetNextDependentFileInfo //---------------------------------------------------------- public DependentFileInfo GetNextDependentFileInfo() { if (_dependentFiles == null) { _dependentFiles = _assembly.GetModules(true); } if (_fileCount >= _dependentFiles.Length) { return(null); } if (String.Compare(_dependentFiles[_fileCount].ScopeName, _manifestFileName) == 0) { _fileCount++; } if (_fileCount >= _dependentFiles.Length) { return(null); } DependentFileInfo dfi = new DependentFileInfo(); dfi["name"] = _dependentFiles[_fileCount].ScopeName; dfi["hash"] = null; // damn, we have to fix this!!!! _fileCount++; return(dfi); }
public static IAssemblyManifestImport GetAssemblyManifestImport(string fileName) { DefaultAssemblyManifestImport retVal = null; AssemblyManifestParser amp = new AssemblyManifestParser(); string fullPath = Path.GetFullPath(fileName); if (!File.Exists(fileName)) { throw new FileNotFoundException("The path " + fullPath + " does not refer to a file."); } else { bool checkInit = amp.InitFromFile(fileName); if (checkInit) { AssemblyIdentity impAssmID = amp.GetAssemblyIdentity(); int numDepAssms = amp.GetNumDependentAssemblies(); DependentAssemblyInfo[] impDepAssmInfoArr = new DependentAssemblyInfo[numDepAssms]; for (int i = 0; i < numDepAssms; i++) { impDepAssmInfoArr[i] = amp.GetDependentAssemblyInfo(i); if (impDepAssmInfoArr[i] == null) { throw new BadImageFormatException("Cannot access dependent assembly information from " + fullPath); } } int numDepFiles = amp.GetNumDependentFiles(); DependentFileInfo[] impDepFileInfoArr = new DependentFileInfo[numDepFiles]; for (int i = 0; i < numDepFiles; i++) { impDepFileInfoArr[i] = amp.GetDependentFileInfo(i); if (impDepFileInfoArr[i] == null) { throw new BadImageFormatException("Cannot access dependent file information from " + fullPath); } } retVal = new DefaultAssemblyManifestImport(impAssmID, impDepAssmInfoArr, impDepFileInfoArr); } else { throw new BadImageFormatException("The file " + fullPath + " is not an assembly."); } } return(retVal); }
//---------------------------------------------------------- // GetNextDependentFileInfo //---------------------------------------------------------- public DependentFileInfo GetNextDependentFileInfo() { if (_xPathFileIterator == null) { XPathNavigator myXPathNavigator = _xmlDocument.CreateNavigator(); _xPathFileIterator = myXPathNavigator.Select("/assembly/file"); } if (_xPathFileIterator.MoveNext() == false) { return(null); } DependentFileInfo dfi = new DependentFileInfo(); dfi["name"] = _xPathFileIterator.Current.GetAttribute("name", ""); dfi["hash"] = _xPathFileIterator.Current.GetAttribute("hash", ""); return(dfi); }