如何以编程方式获取有关其他解决方案的信息? (Visual Studio,C#)

时间:2014-10-01 15:02:27

标签: c# visual-studio

我设法编写了可以清理和构建另一个解决方案的代码,并从解决方案中运行所有MSTests(以及其他可能的NUnit等),但我需要能够获得所有测试类和方法名称,以便单独运行测试(或者我可以在输出字符串同时运行时从输出字符串中提取传递/失败测试的名称 - 但这不是很长期可靠的。)

我觉得这应该是一个单独的程序/插件,然后我可以在我的项目中使用我需要的方式 - 但肯定有人已经写过这样的东西了?

我想象我能做的事情如下:

var solution = new Solution("C:\Documents\VisualStudioFolder\MySolution.sln");
solution.Clean();
solution.Build(); // could return a bool to check it was successful
List<Test> tests = solution.GetTests();
foreach (Test test in tests) {
    if (test.Run()) {
        Console.WriteLine("Test passed");
    }
}

这种事情是否存在?

1 个答案:

答案 0 :(得分:0)

我需要做的是编写一个Visual Studio包(一个插件),您可以在其中访问当前打开的解决方案:

var solution = ((DTE) GetService(typeof (DTE))).Solution;

然后:

var buildObject = solution.SolutionBuild;
buildObject.Build(true); // saves and builds
if (buildObject.LastBuildInfo == 0) {
    //then build was successful
}

我仍然没有找到一种运行测试的好方法,但希望这一点可能在将来帮助某人。