internal void WriteData(MyBinaryWriter bw) { DataOffset = (int)bw.BaseStream.Position; bw.Write(file_name); if (guid == null) { guid = new byte[16]; } if (hash == null) { try { using (var fs = PclFileAccess.OpenFileStream(file_name)) { var md5 = Microsoft.CodeAnalysis.CryptographicHashProvider.TryGetAlgorithm(System.Reflection.AssemblyHashAlgorithm.MD5); hash = md5.ComputeHash(fs); } } catch { hash = new byte [16]; } } bw.Write(guid); bw.Write(hash); bw.Write((byte)(auto_generated ? 1 : 0)); }
public bool CheckChecksum() { try { using (var fs = PclFileAccess.OpenFileStream(file_name)) { var md5 = Microsoft.CodeAnalysis.CryptographicHashProvider.TryGetAlgorithm(System.Reflection.AssemblyHashAlgorithm.MD5); byte[] data = md5.ComputeHash(fs); for (int i = 0; i < 16; i++) { if (data [i] != hash [i]) { return(false); } } return(true); } } catch { return(false); } }
public void WriteSymbolFile(Guid guid) { foreach (SourceMethodBuilder method in methods) { method.DefineMethod(file); } if (stream != null) { file.CreateSymbolFile(guid, stream); } else { try { // We mmap the file, so unlink the previous version since it may be in use PclFileAccess.Delete(filename); } catch { // We can safely ignore } using (var fs = PclFileAccess.CreateFileStream(filename)) { file.CreateSymbolFile(guid, fs); } } }
public static MonoSymbolFile ReadSymbolFile(string mdbFilename) { return(ReadSymbolFile(PclFileAccess.OpenFileStream(mdbFilename))); }