Visual studio 2008 如何使用Visual Studio 2008探查器工具评测一个库解决方案?
我已经阅读并练习了这本书。但是我找不到一种方法来评测库解决方案(库的“启动时评测”按钮被禁用)Visual studio 2008 如何使用Visual Studio 2008探查器工具评测一个库解决方案?,visual-studio-2008,profiler,Visual Studio 2008,Profiler,我已经阅读并练习了这本书。但是我找不到一种方法来评测库解决方案(库的“启动时评测”按钮被禁用) 到目前为止,我能想到的唯一解决方案是创建一个可执行项目,仅用于分析目的 我已经使用Visual Studio Team System的测试框架为我的库编写了单元测试,所以我想我可以将它们用于概要文件,就像Rick Minerich对NUnit所做的那样。 任何人都可以给我指出正确的方向吗?评测是一种运行时技术,因此如果我很了解,您必须运行您的软件,以便您可以在运行时评测它 您也不能正常运行库,最简单的
任何人都可以给我指出正确的方向吗?评测是一种运行时技术,因此如果我很了解,您必须运行您的软件,以便您可以在运行时评测它
您也不能正常运行库,最简单的选择是运行测试或创建使用库的简单exe。您可以只插入dll,以便只在需要的地方配置文件。这没有多大意义。VisualStudio探查器不会对代码执行静态分析以报告其速度。它允许您运行它,并在估计代码的每一部分所需的时间时,插入代码或获取正在运行的代码的样本 考虑到这一点,您打算如何描述您的库?VisualStudio如何知道您的测试,以及您希望运行哪些测试来进行分析
答:您创建一个可执行文件并调用这些测试,这就是它如何知道的。可以使用您的测试进行概要分析。您只需在启动测试的任何对象上运行探查器,并将要分析的程序集指定为探查器目标。然而,如果不知道您在测试和分析中使用的是什么基础设施,就很难为您找到解决方案 因为我使用NUnit,所以我将以它为例。您可以创建一个测试类别,并将其称为概要测试。然后,您可以使用/include命令行选项从探查器运行nunit.exe来指定这些测试:
nunit-console myassembly.dll /include:Profile
您可以使用Analyze->Performance向导执行此操作。dll路径将是您的程序集,可执行路径将是nunit控制台命令行,如上所述
我也知道。使用它,您只需右键单击一个测试并选择“profiletestname”。虽然它确实需要钱,但我认为有一个评估版本你可以去看看
另外,请注意,一定要使用发行版库配置文件。发行版和调试版通常有很多不同的性能配置文件。默认情况下,所有项目都必须进行程序测试。这是更容易练习代码的模式。现在你应该考虑覆盖所有可能的条目。他还将使用覆盖工具 实际上,您可以将任何可执行文件添加到目标列表中(右键单击目标) Program.cs的文本非常简单:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace ConsoleTest
{
class Program
{
static void Main(string[] args)
{
YourDllLibrary.Tests.TestClass t = new YourDllLibrary.Tests.TestClass();
t.Init();
MethodInfo[] m = t.GetType().GetMethods();
for (int i = 0; i < m.Length; i++)
{
MethodInfo mi = m[i];
if (mi.DeclaringType.Name != t.GetType().Name )
continue;
if(Attribute.GetCustomAttribute(mi,
typeof(Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute)) == null)
continue;
try
{
Console.Write(mi.Name + " - ");
mi.Invoke(t, null);
Console.WriteLine("passed");
}
catch
{
Console.WriteLine("failed");
}
}
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
运用系统反思;
名称空间控制台测试
{
班级计划
{
静态void Main(字符串[]参数)
{
YourDllLibrary.Tests.TestClass t=new YourDllLibrary.Tests.TestClass();
t、 Init();
MethodInfo[]m=t.GetType().GetMethods();
对于(int i=0;i
我使用的是VisualStudioTeamStudio测试框架或一些人所称的MSTest。这就是我的问题的原因:如果NUnit有办法做到这一点,为什么MSTest没有,或者如果有,在哪里可以找到它?如果你了解MSTest的工作原理,你就会知道为什么你的答案不能完全满足我。MSTest生成多个文件夹,每次我运行一个测试时一个文件夹,因此我无法自动化分析过程。因此,使用MSTest,您几乎可以完全按照我指定的方式执行。只需将对nunit控制台的调用替换为MSTest.exe/test:[TestName]请参阅MSTest.exe上的MSDN文档以了解更详细的使用信息: