【问题标题】:ComboBox to look up Solutions and Projects用于查找解决方案和项目的组合框
【发布时间】:2016-11-03 16:32:40
【问题描述】:

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

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

如果您需要其他任何内容或不清楚,请告诉我。 提前干杯。

【问题讨论】:

  • 这是否需要来自 TFS,而不是本地文件系统?如果是这样,我认为您将不得不使用 TFS REST API,或者更简单地说,使用 TFS 命令行工具来更新您可以导航的 TFS 内容的本地副本

标签: c# tfs combobox


【解决方案1】:

您可以列出文件夹下的文件,并按扩展名为“.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

【讨论】:

  • 好的,现在到某个地方。我已经使用了您的第一个 sn-p 并有一个填充了 .sln 文件的组合框。然后如何运行您在单独的组合中提供的第二个 sn-p 以提取项目?
  • 可以将第二段代码sn -p定义为函数,将解法路径作为参数传递。它采用解决方案路径并使用项目填充项目列表,包括完整路径
猜你喜欢
  • 2012-03-20
  • 2011-01-09
  • 2018-05-07
  • 1970-01-01
  • 2014-04-17
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
相关资源
最近更新 更多