Пример #1
0
        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));
        }
Пример #2
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);
     }
 }
Пример #3
0
        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)));
 }