2016-07-01 14 views
0

現在、Windows UIフォームとComboBoxを使用して、実行する特定のテストを選択します。コード内では、実行するテストの名前を特に指定します。実行するテストの名前は、アプリケーションに渡されます。 ComboBoxをUIフォームで取得して、デフォルトのコレクションまたはそのフォルダ内のエクスプローラを読み込んで、ソリューション内のプロジェクト名とプロジェクト名を取得する方法があるかどうかは疑問です。ComboBoxでソリューションとプロジェクトを検索する

たとえば、 の場合、ComboBox_1はフォルダ内のソリューションを見つけ、1つを選択できます。 ComboBox_2は、その下にあるすべてのプロジェクトに対して選択されたソリューションの内部を調べ、そのうちの1つを選択できます。 Button_1は、選択したプロジェクトを実行します。

他に必要なことがある場合や明確でない場合は教えてください。 前もって乾杯。

+0

を取得するには、このようなものを使用することができ、むしろローカルファイルシステムよりも、TFSからなるように、この必要性をしていますか?もしそうなら、TFS REST API、あるいはもっと簡単にTFSコマンドラインツールを使ってTFSコンテンツのローカルコピーを更新し、 –

答えて

0

フォルダ内のファイルを一覧表示し、拡張子が「.sln」のファイルでフィルタリングできます。これはフォルダ内のソリューションファイルになります。

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

その後、溶液中のプロジェクト

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

Okをナビゲートしてどこかに移動しなければならないと思います。私はあなたの1番目のスニペットを使用し、コンボボックスに.slnファイルを入力してください。別のコンボで提供した2番目のスニペットを実行してプロジェクトをプルするにはどうすればよいですか? – geneticmaterial

+0

2つ目のコードスニペットを関数として定義し、解のパスをパラメータとして渡すことができます。ソリューションパスを取得し、フルパスを含むプロジェクトリストをプロジェクトリストに取り込みます –

関連する問題