ComboBox查找解决方案和项目

时间:2016-07-01 09:56:50

标签: c# tfs combobox

我们目前使用Windows UI表单和ComboBox来选择要运行的特定测试。在代码中,我们专门提供要运行的测试名称,并将其传递给应用程序以运行它们。 我只是想知道是否有办法让UI形式的ComboBox读取默认集合下的资源管理器,或者其中的文件夹,并在解决方案中提取解决方案和项目的名称。

例如 ComboBox_1会在文件夹中找到解决方案,您可以选择一个。 ComboBox_2将查看所选解决方案中的所有项目,并且可以选择其中一个。 然后Button_1将运行所选项目。

如果您还有其他需要或者不清楚,请告诉我。 提前干杯。

1 个答案:

答案 0 :(得分: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