【发布时间】:2011-02-11 02:51:08
【问题描述】:
我需要以编程方式生成 .coverage 文件。 This post 解释了一个 C# 代码,如下所示。
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using Microsoft.VisualStudio.Coverage;
using Microsoft.VisualStudio.Coverage.Analysis;
// You must add a reference to Microsoft.VisualStudio.Coverage.Monitor.dll
namespace Microsoft.VisualStudio
{
class DumpProgram
{
static void Main(string[] args)
{
Process p = new Process();
StringBuilder sb = new StringBuilder("/COVERAGE ");
sb.Append("hello.exe");
p.StartInfo.FileName = "vsinstr.exe";
p.StartInfo.Arguments = sb.ToString();
p.Start();
p.WaitForExit();
// TODO: Look at return code – 0 for success
// A guid is used to keep track of the run
Guid myrunguid = Guid.NewGuid();
Monitor m = new Monitor();
m.StartRunCoverage(myrunguid, "hello.coverage");
// Complete the run
m.FinishRunCoverage(myrunguid);
不幸的是,当我编译这段代码时,我得到了以下错误。
bin2xml.cs(26,22): error CS0246: The type or namespace name 'Monitor' could not be found (are you
missing a using directive or an assembly reference?)
bin2xml.cs(26,38): error CS0246: The type or namespace name 'Monitor' could not be found (are you
missing a using directive or an assembly reference?)
正如this post 所说,VS2008 和 VS2010 之间存在一些变化,我认为 Monitor 类位于一些不同的命名空间中。
可能出了什么问题?如何使用 Visual Studio 2010 以编程方式生成 .coverage 文件?
已解决
从 Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\DataCollectors\x86 复制 Microsoft.VisualStudio.Coverage.Monitor.dll
在源码中添加
using Microsoft.VisualStudio.CodeCoverage;- 运行
csc bin2xml.cs /r:Microsoft.VisualStudio.Coverage.Analysis.dll /r:Microsoft.VisualStudio.Coverage.Monitor.dll。
【问题讨论】:
-
您是否将 ref 添加到 Microsoft.VisualStudio.Coverage.Monitor.dll
-
@K lvanov : 我在 C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies 目录(VS2010 Ultimate 版本)中找不到 dll。
标签: visual-studio-2010 code-coverage profiler