Итак, у меня есть код, который может читать методы из файла .coverage ...
using (CoverageInfo info = CoverageInfo.CreateFromFile(this.myCoverageFile))
{
CoverageDS ds = info.BuildDataSet();
foreach (ICoverageModule coverageModule in info.Modules)
{
CodeModule currentModule = new CodeModule(coverageModule.Name);
byte[] coverageBuffer = coverageModule.GetCoverageBuffer(null);
using (ISymbolReader reader = coverageModule.Symbols.CreateReader())
{
Method currentMethod;
while (reader.GetNextMethod(out currentMethod, coverageBuffer))
{
if (currentMethod != null)
{
currentModule.Methods.Add(currentMethod);
}
}
}
returnModules.Add(currentModule);
}
}
... но я хочу иметь возможность читать файлы .coverage, которые были экспортированы вXML тоже.Причина этого заключается в том, что для файлов .coverage требуется, чтобы исходные dll находились в том же месте, в котором они находились при измерении покрытия кода, что не работает для меня.
Когда я пытаюсь загрузить файл coverxml с помощью CreateFromFile(строка) Я получаю следующее исключение.
Microsoft.VisualStudio.Coverage.Analysis.InvalidCoverageFileException не обработано. Сообщение = файл покрытия "unittestcoverage.coveragexml" недействителен или поврежден.
Файл coverxml открывается в Visual Studio просто отлично, поэтому я не думаю, что есть какие-либо проблемы с форматом файла.
Я знаю, что CoverageDS может импортировать файл xml, но API менее интуитивен иединственный пример, который я могу найти для его использования, это ...
using(CoverageInfo info = CoverageInfo.CreateFromFile(fileString))
{
CoverageDS data = info.BuildDataSet();
data.ExportXml(xmlFile);
}
..., который ничего не говорит мне о том, как на самом деле прочитать данные покрытия из этого файла.
Кто-то знаетКак обработать данные покрытия кода из файла .coveragexml?