public static PdbSrcSrvSection Parse(string text)
        {
            if (string.IsNullOrEmpty(text))
                return null;

            var result = new PdbSrcSrvSection();

            string ini = text.Remove(0, text.IndexOf(SrcSrvIni, System.StringComparison.Ordinal) + SrcSrvIni.Length);
            ini = ini.Remove(ini.IndexOf(SrcSrvVariables, System.StringComparison.Ordinal)).Trim();
            string variables = text.Remove(0, text.IndexOf(SrcSrvVariables, System.StringComparison.Ordinal) + SrcSrvVariables.Length);
            variables = variables.Remove(variables.IndexOf(SrcSrvSources, System.StringComparison.Ordinal)).Trim();
            string sources = text.Remove(0, text.IndexOf(SrcSrvSources, System.StringComparison.Ordinal) + SrcSrvSources.Length);
            sources = sources.Remove(sources.IndexOf(SrcSrvEnd, System.StringComparison.Ordinal)).Trim();

            foreach (string line in ini.Split('\n').Select(l => l.Trim()).Where(l => !string.IsNullOrEmpty(l)))
                result.Ini.Add(line.Remove(line.IndexOf("=", System.StringComparison.Ordinal)), line.Substring(line.IndexOf("=", System.StringComparison.Ordinal) + 1));

            foreach (string line in variables.Split('\n').Select(l => l.Trim()).Where(l => !string.IsNullOrEmpty(l)))
                result.Variables.Add(line.Remove(line.IndexOf("=", System.StringComparison.Ordinal)), line.Substring(line.IndexOf("=", System.StringComparison.Ordinal) + 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;
        }
Exemple #2
0
 private static PdbSrcSrvSection CreatePdbSrcSrvSection(Project currentProject, PdbStoreManager pdbStoreManager,
     string pdbFile)
 {
     var srcSrvSection = new PdbSrcSrvSection();
     srcSrvSection.Ini.Add("VERSION", "2");
     srcSrvSection.Ini.Add("INDEXVERSION", "2");
     srcSrvSection.Ini.Add("DATETIME", DateTime.Now.ToString(CultureInfo.InvariantCulture));
     srcSrvSection.Variables.Add("SRCSRVTRG", "%var2%");
     var sourceList = GetSourceList(currentProject, pdbStoreManager, pdbFile);
     foreach (var source in sourceList){
         srcSrvSection.Sources.Add(new[]{source});
     }
     return srcSrvSection;
 }
 public string WriteSrcSrv(string pdbFilePath, PdbSrcSrvSection srcSrvSection)
 {
     string tempFile = Path.GetTempFileName();
     var currentDirectory = Environment.CurrentDirectory;
     try{
         File.WriteAllText(tempFile, srcSrvSection.ToString());
         Environment.CurrentDirectory = Path.GetDirectoryName(PdbStrPath())+"";
         var processStartInfo = new ProcessStartInfo{
             FileName = Path.Combine(Environment.CurrentDirectory,"pdbstr.exe"),
             Arguments =@"-w -p:""" +pdbFilePath + @""" -i:""" + tempFile+@""" -s:srcsrv",
             UseShellExecute = false,CreateNoWindow = true,RedirectStandardOutput = true
         };
         using (var pdbstrProcess=new Process{StartInfo = processStartInfo}){
             pdbstrProcess.Start();
             string result = pdbstrProcess.StandardOutput.ReadToEnd();
             pdbstrProcess.WaitForExit();
             return result;
         }
     }
     finally{
         Environment.CurrentDirectory=currentDirectory;
         File.Delete(tempFile);
     }
 }