Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 如何使用Visual Studio 2008探查器工具评测一个库解决方案?_Visual Studio 2008_Profiler - Fatal编程技术网

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所做的那样。 任何人都可以给我指出正确的方向吗?评测是一种运行时技术,因此如果我很了解,您必须运行您的软件,以便您可以在运行时评测它 您也不能正常运行库,最简单的

我已经阅读并练习了这本书。但是我找不到一种方法来评测库解决方案(库的“启动时评测”按钮被禁用)

  • 到目前为止,我能想到的唯一解决方案是创建一个可执行项目,仅用于分析目的
  • 我已经使用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文档以了解更详细的使用信息: