2016-07-01 5 views
0

Wir verwenden derzeit ein Windows-Benutzeroberflächenformular und ComboBox, um einen bestimmten Test zur Ausführung auszuwählen. Innerhalb des Codes geben wir speziell den Namen der Tests ein, die ausgeführt werden sollen und die an die Anwendung übergeben werden, um sie auszuführen. Ich frage mich nur, ob es eine Möglichkeit gibt, die ComboBox in der UI-Form zu erhalten, um den Explorer unter der Standardsammlung oder einen Ordner darin zu lesen und die Namen der Lösungen und der Projekte innerhalb der Lösung zu ziehen.ComboBox zum Nachschlagen Lösungen und Projekte

Für zB ComboBox_1 würde die Lösungen in einem Ordner finden und Sie könnten einen auswählen. ComboBox_2 würde für alle darunter liegenden Projekte in die gewählte Lösung schauen und eine davon könnte ausgewählt werden. Button_1 würde dann das ausgewählte Projekt ausführen.

Bitte lassen Sie mich wissen, wenn Sie etwas anderes benötigen oder wenn das nicht klar ist. Prost im Voraus.

+0

Ist diese Notwendigkeit von TFS zu sein, anstatt dem lokalen Dateisystem? Wenn dies der Fall ist, müssen Sie die TFS-REST-API oder, einfacher gesagt, ein TFS-Befehlszeilentool verwenden, um eine lokale Kopie des TFS-Inhalts zu aktualisieren. Sie können dann durch –

Antwort

0

Sie können Dateien unter einem Ordner auflisten und sie nach Dateien mit der Erweiterung ".sln" filtern. Dies sind die Lösungsdateien im Ordner.

string[] files=Directory.GetFiles("folder path"); 
     List<string> lstSolutions = new List<string>(); 
     foreach (string file in files) 
     { 
      if (file.Contains(".sln")) 
       lstSolutions.Add(file); 
     } 

Dann können Sie so etwas wie diese verwenden, um Projekte in der Lösung zu bekommen

var Content = File.ReadAllText(SlnPath); 
Regex projReg = new Regex(
    "Project\\(\"\\{[\\w-]*\\}\"\\) = \"([\\w _]*.*)\", \"(.*\\.(cs|vcx|vb)proj)\"" 
    , RegexOptions.Compiled); 
var matches = projReg.Matches(Content).Cast<Match>(); 
var Projects = matches.Select(x => x.Groups[2].Value).ToList(); 
for (int i = 0; i < Projects.Count; ++i) 
{ 
    if (!Path.IsPathRooted(Projects[i])) 
     Projects[i] = Path.Combine(Path.GetDirectoryName(SlnPath), 
      Projects[i]); 
    Projects[i] = Path.GetFullPath(Projects[i]); 
} 

List projects in a solution

+0

navigieren. Ich habe Ihr erstes Snippet verwendet und eine Combobox mit den .sln-Dateien gefüllt. Wie führe ich dann das zweite Snippet aus, das Sie in einer separaten Combo bereitgestellt haben, um die Projekte zu erstellen? – geneticmaterial

+0

Sie können das zweite Code-Snippet als Funktion definieren und den Lösungspfad als Parameter übergeben. Es nimmt den Lösungspfad und füllt die Projektliste mit Projekten, einschließlich des vollständigen Pfads –

Verwandte Themen