private void WriteSrcSrv(string path, PdbSrcSrvSection section) { var tempPath = Path.Combine(runner.WorkingPath, Path.GetRandomFileName()); try { File.WriteAllText(tempPath, section.ToString()); runner.Run( output => { throw new Exception(output); }, error => { throw new Exception(error); }, new[] { "-w", string.Format("-p:{0}", path), string.Format("-i:{0}", tempPath), "-s:srcsrv" }, false, null, Encoding.UTF8); } finally { File.Delete(tempPath); } }
private PdbSrcSrvSection ReadSrcSrv(string path) { var builder = new StringBuilder(); runner.Run( output => { builder.AppendLine(output); return(null); }, error => { throw new Exception(error); }, new[] { "-r", string.Format("-p:\"{0}\"", path), "-s:srcsrv" }, false, null, Encoding.UTF8); return(PdbSrcSrvSection.Parse(builder.ToString())); }
public void WriteSrcSrv(Stream input, Stream output, PdbSrcSrvSection section) { var tempPath = Path.Combine(runner.WorkingPath, Path.GetRandomFileName()); try { using (var tempStream = File.OpenWrite(tempPath)) input.CopyTo(tempStream); WriteSrcSrv(tempPath, section); using (var tempStream = File.OpenRead(tempPath)) tempStream.CopyTo(output); } finally { File.Delete(tempPath); } }
public static PdbSrcSrvSection Parse(string text) { if (string.IsNullOrEmpty(text)) { return(null); } var result = new PdbSrcSrvSection(); string ini = text.Remove(0, text.IndexOf(SrcSrvIni) + SrcSrvIni.Length); ini = ini.Remove(ini.IndexOf(SrcSrvVariables)).Trim(); string variables = text.Remove(0, text.IndexOf(SrcSrvVariables) + SrcSrvVariables.Length); variables = variables.Remove(variables.IndexOf(SrcSrvSources)).Trim(); string sources = text.Remove(0, text.IndexOf(SrcSrvSources) + SrcSrvSources.Length); sources = sources.Remove(sources.IndexOf(SrcSrvEnd)).Trim(); foreach (string line in ini.Split('\n').Select(l => l.Trim()).Where(l => !string.IsNullOrEmpty(l))) { result.Ini.Add(line.Remove(line.IndexOf("=")), line.Substring(line.IndexOf("=") + 1)); } foreach (string line in variables.Split('\n').Select(l => l.Trim()).Where(l => !string.IsNullOrEmpty(l))) { result.Variables.Add(line.Remove(line.IndexOf("=")), line.Substring(line.IndexOf("=") + 1)); } foreach (string line in sources.Split('\n').Select(l => l.Trim()).Where(l => !string.IsNullOrEmpty(l))) { result.Sources.Add(new List <string>(line.Split('*'))); } return(result); }