<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Visual Studio Profiler Team Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/profiler/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/profiler/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 04:03:27 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Automatic NGEN PDB generation</title>
      <link>https://docs.microsoft.com/archive/blogs/profiler/automatic-ngen-pdb-generation</link>
      <pubDate>Wed, 09 Jul 2014 17:22:00 GMT</pubDate>
      <dc:creator><![CDATA[Aditya Mandaleeka]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/profiler/2014/07/09/automatic-ngen-pdb-generation/</guid>
      <description><![CDATA[On Windows 8 or higher, when sampling managed applications, you may have noticed that samples in...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;">On Windows 8 or higher, when sampling managed applications, you may have noticed that samples in native images created through NGEN (these images are generated ahead of time from .NET assemblies in order to avoid the cost of JIT compilation) appear as "[&lt;name&gt;.ni.dll]" instead of being resolved to useful function names.</span></p>
<p><span style="font-size: small;">Back in 2012, we posted an <a style="font-size: 12px;" href="https://blogs.msdn.com/b/visualstudioalm/archive/2012/12/10/creating-ngen-pdbs-for-profiling-reports.aspx">explanation of why this occurs</a> and provided some manual steps on how you can generate PDB files for these images in order to be able to resolve symbols for them.</span></p>
<p><span style="font-size: small;">We recognized at the time that this wasn't an ideal solution and began working on improving this experience. That's why in Visual Studio 2013, when using the CPU Sampling tool from the <a style="font-size: 12px;" href="https://blogs.msdn.com/b/visualstudioalm/archive/2013/07/12/performance-and-diagnostics-hub-in-visual-studio-2013.aspx">Performance and Diagnostics hub</a> (or the new CPU Usage tool that was released in VS 2013 Update 2), we automatically generate these PDBs after your profiling session.</span></p>
<p><span style="font-size: small;">PDBs generated this way contain function names and some other basic information about the symbols in the corresponding images, but don't contain detailed information such as source line numbers for functions. This is because we perform the PDB generation using only the native images themselves as input rather than requiring additional information like the original PDBs that were created with the .NET assemblies (which may not be available). Thus, you won't be able to use the navigate-to-source functionality for functions in your profiling reports which come from NGEN'd modules. If this is important to you, the solution is to continue generating PDBs manually for NGEN'd images using the instructions mentioned in the blog post (be sure to follow the steps under the <em>"If you do need to get back to source"</em> section).</span></p>
<p><span style="font-size: small;">If you're not on VS 2013 or above, or are not using either the CPU Sampling or CPU Usage tool in the Performance and Diagnostics hub, you won't be able to benefit from automatic NGEN PDB generation. Profiling sessions started via the Performance Wizard or Performance Explorer will continue to require manual PDB generation for NGEN'd images, if desired. Here's a tip, though: John Robbins has a PowerShell script that will enumerate the GAC and generate PDBs for all the .NET Framework NGEN'd binaries (or all NGEN'd binaries if desired). Find out more by reading&nbsp;<a style="font-size: 12px;" href="https://www.wintellect.com/blogs/jrobbins/wintellectpowershell-create-ngen-pdbs-for-easier-profiling-on-win8-server-2012">John's blog post</a> about it.</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio 2012 Profiler on Windows 8.1</title>
      <link>https://docs.microsoft.com/archive/blogs/profiler/visual-studio-2012-profiler-on-windows-8-1</link>
      <pubDate>Sat, 05 Apr 2014 20:42:00 GMT</pubDate>
      <dc:creator><![CDATA[Aditya Mandaleeka]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/profiler/2014/04/05/visual-studio-2012-profiler-on-windows-8-1/</guid>
      <description><![CDATA[If you've used sampling to profile your application on Windows 8.1 with any version of Visual Studio...]]></description>
      <content:encoded><![CDATA[<p>If you've used sampling to profile your application on Windows 8.1 with any version of Visual Studio 2012 other than Update 4, you may have run into an issue where symbols are not resolved for some code even if you have the correct <a title="https://en.wikipedia.org/wiki/Program_database" href="https://en.wikipedia.org/wiki/Program_database">PDB files</a> available on your symbol path. You can tell if this is the case because the profiling report will show module names in square brackets where you would expect to see function names, as in the image below. Note that all the functions in DemoApp1.exe, which is an app I built and have symbols for, are unresolved and appear the same way as functions in msvcp120d.dll (part of the runtime, which I don't have symbols for).</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/2500.ReportWithoutSymbols.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42/2500.ReportWithoutSymbols.PNG"><img style="float: left; margin-left: 10px; margin-right: 10px;" title="Function names not resolved" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/2500.ReportWithoutSymbols.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/379x193/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42/2500.ReportWithoutSymbols.PNG" alt="Function names not resolved" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>This behavior is the result of changes that occurred in Windows 8.1 to the underlying system in Windows that the profiler uses to identify binaries during a profiling session. Because of this, in versions of Visual Studio before 2012 Update 4, the profiler is unable to store information in reports that makes it possible to determine where the matching symbol information (PDB) is for each binary, and whether any given PDB matches a binary that was present at collection time. Visual Studio 2012 Update 4 (and any newer version of Visual Studio) includes modifications to the profiler which make it compatible with the changes in Windows 8.1. Once you update Visual Studio, the profiler will once again be able to locate and read PDB files to resolve symbols in your profiling data.</p>]]></content:encoded>
    </item>
    <item>
      <title>It's quiet in here</title>
      <link>https://docs.microsoft.com/archive/blogs/profiler/its-quiet-in-here</link>
      <pubDate>Thu, 03 Apr 2014 15:56:00 GMT</pubDate>
      <dc:creator><![CDATA[Andrew B Hall - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/profiler/2014/04/03/its-quiet-in-here/</guid>
      <description><![CDATA[&nbsp;
Posting on behalf of Aditya Mandaleeka
You may have noticed that the last entry on this...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<p><em>Posting on behalf of Aditya Mandaleeka</em></p>
<p>You may have noticed that the last entry on this blog was posted in 2012.&nbsp;We just wanted to let you know that we haven't stopped working hard to bring you performance and diagnostics capabilities in Visual Studio or blogging about them.&nbsp;We&rsquo;ve just been blogging&nbsp;in a new location; you can find our most recent posts on the diagnostic tools channel on the <a href="https://blogs.msdn.com/b/visualstudioalm/">Visual Studio ALM blog</a>.</p>
<p>If you haven&rsquo;t been following the ALM blog so far, here are a few of the Profiler team&rsquo;s posts you may have missed:</p>
<ul>
<li><a href="https://blogs.msdn.com/b/visualstudioalm/archive/2014/04/04/diagnosing-mobile-website-issues-on-windows-phone-8-1-with-visual-studio.aspx">Diagnosing Mobile Website Issues on Windows Phone 8.1 with Visual Studio</a> (April 2014)</li>
<li><a href="https://blogs.msdn.com/b/visualstudioalm/archive/2014/04/03/performance-profiling-on-windows-phone-8-1-with-visual-studio.aspx">Performance Profiling on Windows Phone 8.1 with Visual Studio</a>&nbsp;(April 2014)</li>
<li><a href="https://blogs.msdn.com/b/visualstudioalm/archive/2014/04/02/diagnosing-memory-issues-with-the-new-memory-usage-tool-in-visual-studio.aspx">Diagnosing memory issues with the new Memory Usage Tool in Visual Studio</a> (April 2014)</li>
<li><a href="https://blogs.msdn.com/b/visualstudioalm/archive/2014/02/28/new-cpu-usage-tool-in-the-performance-and-diagnostics-hub-in-visual-studio-2013.aspx">New CPU Usage tool in the Performance and Diagnostics hub in Visual Studio 2013</a> (February 2014)</li>
<li><a href="https://blogs.msdn.com/b/visualstudioalm/archive/2014/02/11/combining-tools-in-the-performance-and-diagnostics-hub-in-visual-studio-2013.aspx">Combining Tools in the Performance and Diagnostics Hub in Visual Studio 2013</a> (February 2014)</li>
<li><a href="https://blogs.msdn.com/b/visualstudioalm/archive/2013/07/12/performance-and-diagnostics-hub-in-visual-studio-2013.aspx">Performance and Diagnostics Hub in Visual Studio 2013</a> (July 2013)</li>
<li><a href="https://blogs.msdn.com/b/visualstudioalm/archive/2013/02/27/how-to-profile-a-xaml-windows-store-app.aspx">How to profile a XAML Windows Store App</a> (February 2013)</li>
<li><a href="https://blogs.msdn.com/b/visualstudioalm/archive/2012/12/10/creating-ngen-pdbs-for-profiling-reports.aspx">Creating NGEN PDBs for Profiling Reports</a> (December 2012)</li>
</ul>
<p>You can also follow us on <a href="https://twitter.com/VSProfiler">Twitter (@VSProfiler)</a> for the latest news and updates from the team.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Visual Studio Profiler on Windows 8</title>
      <link>https://docs.microsoft.com/archive/blogs/profiler/the-visual-studio-profiler-on-windows-8</link>
      <pubDate>Mon, 10 Dec 2012 09:39:00 GMT</pubDate>
      <dc:creator><![CDATA[Andrew B Hall - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/profiler/2012/12/10/the-visual-studio-profiler-on-windows-8/</guid>
      <description><![CDATA[Windows 8 brought a lot of great changes to Windows including a stronger security model and new...]]></description>
      <content:encoded><![CDATA[<p>Windows 8 brought a lot of great changes to Windows including a stronger security model and new capabilities for performance tools. I am excited about how the new capabilities allow us to deliver new performance tooling not previously possible, e.g. the <a href="https://msdn.microsoft.com/en-us/library/windows/apps/jj819177.aspx">JavaScript Memory Analyzer for Windows Store apps</a>. However because of the stronger security model there was also some impact to the existing profiling tools on Windows 8. In this post I will discuss the change to Windows that required us to redesign the way the Visual Studio Profiler works and the resulting impact to profiling features on Windows 8.</p>
<p><em>Note: The changes discussed in this post are only applicable when running Visual Studio on Windows 8, there are no changes to functionality on Windows 7.</em></p>
<h4>Background</h4>
<p>In order to understand why profiling functionality is different on Windows 8, I need to start with a brief overview of the profiler&rsquo;s implementation. Once you understand how the profiler was implemented in Visual Studio 2010, the behavior differences on Windows 8 should make more sense.</p>
<p>All versions of Visual Studio through 2010 rely on a kernel mode driver to collect data. The driver was originally developed for CPU sampling so it can register for a callback based on CPU clock cycles (the default is 10 million cycles) in order to sample at a regular interval. Data collection for <a href="https://msdn.microsoft.com/en-us/library/dd264966.aspx">.NET Memory Allocation</a>, and <a href="https://blogs.msdn.com/b/profiler/archive/2010/04/23/resource-contention-concurrency-profiling-in-visual-studio-2010-performance-investigation-flows.aspx">Concurrency profiling</a> were then also integrated into the driver. <a href="https://msdn.microsoft.com/en-us/library/ms182369.aspx">Instrumentation profiling</a> is a bit different because it does not rely on the driver for the instrumentation data, but it does use the driver to calculate <a href="https://blogs.msdn.com/b/profiler/archive/2004/08/04/208286.aspx">application time</a> (you&rsquo;ll see why this is relevant below).</p>
<h4>The changes</h4>
<p>The profiling driver was registering for the callback in a way that interfered with a Windows kernel operation; and Windows 8 added a security feature that detects when non-operating system code modifies kernel memory (the&nbsp;callback was registered by changing kernel memory). When this condition is detected, Windows does a <a href="https://msdn.microsoft.com/en-us/library/windows/hardware/ff547224(v=vs.85).aspx">bug check</a> that results in a blue screen since the operating system can no longer trust the integrity of the kernel. However the supported way to register for the CPU cycle callback does not allow the callback handler to inspect information about user processes due to security concerns.</p>
<p>Since the driver was now at odds with the enhanced security model we needed to move away from the driver to the new capabilities of Windows added since the driver was first created for Visual Studio 2005.</p>
<h4>Impact on Visual Studio 2010 and prior versions</h4>
<p>Unfortunately, given the need to rewrite the collection and analysis components we were not able to release an update to Visual Studio 2010 to fix the issue. Since customers don&rsquo;t want to blue screen their operating system, Windows 8 added logic to prevent all incompatible versions of the profiling driver from starting (2010, 2008, and 2005).</p>
<p>This means that when you try to start profiling with an incompatible version you will receive the message &ldquo;<em>Error VSP1398: The monitor was unable to start the VS performance driver. Access is denied. Consider using the /Admin:Driver,Start and /Admin:Security options of VSPerfCmd from an elevated environment.</em>&rdquo;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/0250.image_16BF06DE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42-metablogapi/0250.image_5F00_16BF06DE.png"><img style="display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/8272.image_thumb_7AAE47F2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42-metablogapi/8272.image_5F00_thumb_5F00_7AAE47F2.png" alt="image" width="868" height="152" border="0" /></a></p>
<p>Which will result in the following behavior when running Visual Studio 2010 (or earlier) on Windows 8.</p>
<ul>
<li>CPU Sampling, .NET Memory Allocation, and Concurrency profiling will fail to start on Windows 8. The only workaround on Windows 8 is to use Visual Studio 2012 Professional or higher, or to profile on Windows 7.</li>
<li>Instrumentation profiling can be launched, but the <a href="https://blogs.msdn.com/b/profiler/archive/2004/08/04/208286.aspx">application and elapsed times</a> will be exactly the same (this should have little impact on your ability to analyze the report, just note the elapsed time on the title bar of the summary page may not match the length of your profiling trace).</li>
</ul>
<h4>Impact on Visual Studio 2012</h4>
<p>In Visual Studio 2012, we had to stop using the now incompatible driver for CPU sampling and instead use <a href="https://blogs.msdn.com/b/ntdebugging/archive/2009/08/27/etw-introduction-and-overview.aspx">ETW (Event Tracing for Windows)</a>. However the move to ETW required a complete rewrite of the collection and analysis components for sampling, which unfortunately due to resource constraints meant we did not have time to add all of the existing sampling functionality to the new implementation. This has the following impact when profiling on Windows 8:</p>
<ul>
<li><a href="https://blogs.msdn.com/b/habibh/archive/2009/06/30/walkthrough-using-the-tier-interaction-profiler-in-visual-studio-team-system-2010.aspx">Tier Interaction Profiling (TIP) data</a> cannot be collected in conjunction with CPU sampling data (this continues to work with instrumentation profiling, and on Windows 7).</li>
<li><a href="https://blogs.msdn.com/b/profiler/archive/2010/06/22/cpu-performance-counters-in-visual-studio-2010-profiler.aspx">The &ldquo;Sampling&rdquo; performance session properties</a> cannot be configured, instead you will see the message &ldquo;These settings are not supported for CPU sampling on this version of Windows&rdquo; on the property page. It is important to note that CPU sampling works as expected with the default settings, it just does not allow for changing the advanced settings. The workaround to be able to use the advanced settings is to profile on Windows 7.</li>
<li><a href="https://technet.microsoft.com/en-us/subscriptions/bb763113(v=vs.90).aspx">Windows performance counters</a> cannot be collected while CPU sampling. The workaround is to use Windows 7 if you need to collect this information while sampling.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/6138.image_366DE0A6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42-metablogapi/6138.image_5F00_366DE0A6.png"><img style="display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/7608.image_thumb_1652D3E9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42-metablogapi/7608.image_5F00_thumb_5F00_1652D3E9.png" alt="image" width="686" height="552" border="0" /></a></li>
<li>CPU samples for all functions executing inside NGEN&rsquo;d modules will appear in the report as [NI module name], instead of the actual function name showing due to the way ETW reports the data (to resolve this <a href="https://blogs.msdn.com/b/visualstudioalm/archive/2012/12/10/creating-ngen-pdbs-for-profiling-reports.aspx">see my blog post on Creating NGEN PDBs for Profiling Reports</a>).</li>
<li><a href="https://msdn.microsoft.com/en-us/library/ms182403.aspx">vsperfcmd.exe</a> cannot be used to collect CPU sampling data from the command line and will fail with either the error code &ldquo;<em>VSP1535&rdquo; or &ldquo;VSP1336&rdquo; and the message &ldquo;To collect sampling data on this version of Windows, use vsperf.exe</em>&rdquo;). The correct way to collect CPU sampling data from the command line is to use <a href="https://msdn.microsoft.com/en-us/library/hh977161.aspx">vsperf.exe</a> instead.</li>
</ul>
<p>Hope this information is useful to some of you and please let me know if you have any questions.</p>]]></content:encoded>
    </item>
    <item>
      <title>VS2010: Just My Code</title>
      <link>https://docs.microsoft.com/archive/blogs/profiler/vs2010-just-my-code</link>
      <pubDate>Fri, 13 May 2011 09:46:20 GMT</pubDate>
      <dc:creator><![CDATA[profiler1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/profiler/2011/05/13/vs2010-just-my-code/</guid>
      <description><![CDATA[The ‘Just My Code’ feature in the profiler has a few differences to the ‘Just My Code’ feature in...]]></description>
      <content:encoded><![CDATA[<p>The ‘Just My Code’ feature in the profiler has a few differences to the ‘Just My Code’ feature in the debugger so this post should provide a useful introduction.</p>  <h2>Example Program</h2>  <p>Here’s a very simple program I’ll use in this post.</p>  <table border="1" cellspacing="0" cellpadding="2" width="400"><tbody>     <tr>       <td valign="top" width="400">         <pre class="csharpcode"><span class="kwrd">using</span> System;

<span class="kwrd">namespace</span> ConsoleApplication1
{
    <span class="kwrd">class</span> Program
    {
        <span class="kwrd">static</span> <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[] args)
        {
            Foo();
        }

        <span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">void</span> Foo()
        {
            <span class="kwrd">double</span> d = 0;
            <span class="kwrd">for</span> (<span class="kwrd">int</span> i = 0; i &lt; 100000000; ++i)
            {
                d += Math.Sqrt(i);
            }
            Console.WriteLine(d);
        }
    }
}</pre>
        </td>
    </tr>
  </tbody></table>

<h2>&#160;</h2>

<h2>Why ‘Just My Code’?</h2>

<p>Typically when profiling you are most interested in optimizing code that you either wrote or you have control over. Sure, sometimes there will be issues in the frameworks that you are using or in other binaries, but even then you often control the calls into those frameworks.&#160; Just My Code or JMC is intended to filter the data that is displayed in profiler reports so that more of the code you control shows up in the reports and the reports are more manageable.</p>

<p>For example, the Call Tree after collecting sampling data for the simple program above, with JMC off, is shown below: 
  <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/8182.jmc_off_calltree_1_7AF191AC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42-metablogapi/8182.jmc_5F00_off_5F00_calltree_5F00_1_5F00_7AF191AC.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="jmc_off_calltree_1" border="0" alt="jmc_off_calltree_1" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/4885.jmc_off_calltree_1_thumb_6CB318BC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42-metablogapi/4885.jmc_5F00_off_5F00_calltree_5F00_1_5F00_thumb_5F00_6CB318BC.png" width="640" height="328" /></a></p>

<p>With the default JMC options, this reduces down to: 
  <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/7522.jmc_on_calltree_1_2C7CFF42.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42-metablogapi/7522.jmc_5F00_on_5F00_calltree_5F00_1_5F00_2C7CFF42.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="jmc_on_calltree_1" border="0" alt="jmc_on_calltree_1" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/0268.jmc_on_calltree_1_thumb_534B1582.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42-metablogapi/0268.jmc_5F00_on_5F00_calltree_5F00_1_5F00_thumb_5F00_534B1582.png" width="640" height="96" /></a></p>

<h2>What is ‘My Code’?</h2>

<p>There are two conditions for code being considered ‘My Code’ by the profiler and they are both at the Module level (Module Name column in the screenshots above). In the example above, this means the checks are made against the clr.dll, mscoreee.dll, mscoreei.dll and ConsoleApplication1.exe binaries. </p>

<p>Modules considered ‘My Code’:</p>

<ol>
  <li>the copyright string for the module does not contain ‘Microsoft’, OR: </li>

  <li>the module name is the same as the module name generated by building any project in the currently open Solution in Visual Studio. 
    <br /></li>
</ol>

<h2>How do I turn JMC on or off?</h2>

<p>You can temporarily toggle JMC on or off on the profiler Summary Page in the Notifications area using ‘Show All Code’ or ‘Hide All Code’ (shown in red below): 
  <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/4382.jmc_on1_7A192BC2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42-metablogapi/4382.jmc_5F00_on1_5F00_7A192BC2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="jmc_on1" border="0" alt="jmc_on1" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/3326.jmc_on1_thumb_24F18FD5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42-metablogapi/3326.jmc_5F00_on1_5F00_thumb_5F00_24F18FD5.png" width="640" height="391" /></a></p>

<p>The default setting may be configured as discussed in the following section.</p>

<h2>How do I configure JMC?</h2>

<p>Use Tools –&gt; Options –&gt; Performance Tools –&gt; General and set options in the ‘Just My Code’ section: 
  <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/3302.jmc_options_44A0699D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42-metablogapi/3302.jmc_5F00_options_5F00_44A0699D.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="jmc_options" border="0" alt="jmc_options" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/8105.jmc_options_thumb_046A5023.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42-metablogapi/8105.jmc_5F00_options_5F00_thumb_5F00_046A5023.png" width="559" height="322" /></a></p>

<p>The default has JMC on, showing one level of non-user callee functions. In the example above with JMC on, this is why we see the call to COMDouble::Sqrt(dobule) showing up in the call tree.</p>

<p>It is also possible to show one-level of non-user code calling user code, which in the example above would add one level of the non-user code that calls main, as shown below: 
  <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/2742.jmc_on_calltree_callers_1_5925B91B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42-metablogapi/2742.jmc_5F00_on_5F00_calltree_5F00_callers_5F00_1_5F00_5925B91B.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="jmc_on_calltree_callers_1" border="0" alt="jmc_on_calltree_callers_1" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/4478.jmc_on_calltree_callers_1_thumb_7FF3CF5B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-42-metablogapi/4478.jmc_5F00_on_5F00_calltree_5F00_callers_5F00_1_5F00_thumb_5F00_7FF3CF5B.png" width="640" height="117" /></a></p>

<h2>Why is ‘Just My Code’ only available for sampling?</h2>

<p>When you instrument binaries for profiling, you have already performed some level of JMC. Only binaries that you instrument and first-level calls into other binaries will show up in the instrumentation report, so JMC is not really necessary.</p>

<p>[<a href="https://blogs.msdn.com/b/colinth/">Colin Thomsen</a>]</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Profile IIS Express with Visual Studio 2010 SP1</title>
      <link>https://docs.microsoft.com/archive/blogs/profiler/how-to-profile-iis-express-with-visual-studio-2010-sp1</link>
      <pubDate>Mon, 02 May 2011 13:20:15 GMT</pubDate>
      <dc:creator><![CDATA[Andrew B Hall - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/profiler/2011/05/02/how-to-profile-iis-express-with-visual-studio-2010-sp1/</guid>
      <description><![CDATA[&#160;  While IIS Express support shipped in Visual Studio 2010 SP1, unfortunately profiling code...]]></description>
      <content:encoded><![CDATA[<p>&#160;</p>  <p><font size="2">While IIS Express support shipped in Visual Studio 2010 SP1, unfortunately profiling code running in IIS Express does not just work out of the box.&#160; The issue is that the profiler does not “know” how to setup and launch the IIS Express process to enable the various profiling methods.&#160; If this is a blocking issue for you, fortunately this can be manually worked around to profile IIS Express.</font></p>  <p><font size="2">The instructions for how to do this, vary depending on the method of profiling you would like to use, and the target framework</font></p>  <p><font size="2"><b>CPU Sampling</b>:</font></p>  <ul>   <li><font size="2">If you’re profiling .NET 4.0 after you’ve launched your site in IIS Express, manually attach to the IISExpress.exe process (Analyze -&gt; Profiler -&gt; Attach/Detach…) and you will be collecting CPU sampling data</font> </li>    <li><font size="2">· If you’re profiling .NET &lt;= 3.5:</font>       <ul>       <li><font size="2">From a Visual Studio command prompt, type:</font>           <ul>           <li><font size="2">vsperfclrenv /sampleon</font> </li>            <li><font size="2">devenv</font> </li>         </ul>       </li>        <li><font size="2">From the instance of Visual Studio that launches, launch your site in IIS Express and manually attach as in the step for profiling .NET 4.0</font> </li>     </ul>   </li> </ul>  <p><b><font size="2">.NET Memory Profiling (Sampling)</font></b></p>  <ul>   <li><font size="2">From a Visual Studio command prompt, type:</font>       <ul>       <li><font size="2">vsperfclrenv /&lt;memory option you want—see </font><a href="https://msdn.microsoft.com/en-us/library/bb385759.aspx"><font size="2">vsperfclrenv documentation</font></a><font size="2"> for options&gt; </font></li>        <li><font size="2">devenv</font> </li>     </ul>   </li>    <li><font size="2">From the instance of Visual Studio that launches, launch your site in IIS Express and manually attach as in the CPU sampling scenarios</font> </li> </ul>  <p><b><font size="2">Instrumentation (including .NET memory instrumentation)</font></b></p>  <ul>   <li><font size="2">From a Visual Studio command prompt, type:</font>       <ul>       <li><font size="2">For method timing: vsperfclrenv /traceon            <br /><i>if you want memory, see <a href="https://msdn.microsoft.com/en-us/library/bb385759.aspx">vsperfclrenv documentation</a> for options</i></font> </li>        <li><font size="2">devenv</font> </li>        <li><a href="https://msdn.microsoft.com/en-us/library/ms182402(v=VS.100).aspx"><font size="2">vsinstr</font></a><font size="2"> &lt;your binaries that will run inside IIS Express&gt;</font> </li>        <li><a href="https://msdn.microsoft.com/en-us/library/ms182403(v=VS.100).aspx"><font size="2">vsperfcmd</font></a><font size="2"> /start:trace /output:&lt;report name&gt;</font> </li>     </ul>   </li>    <li><font size="2">From the instance of Visual Studio that launches, launch your website in IIS Express and run your scenario</font> </li>    <li><font size="2">From the command prompt type: vsperfcmd /shutdown</font> </li>    <li><font size="2">Close IIS Express</font> </li>    <li><font size="2">Open the resulting .vsp file in Visual Studio</font> </li> </ul>  <p><b><font size="2">Resource Contention Profiling</font></b></p>  <ul>   <li><font size="2">Launch your website in IIS Express</font> </li>    <li><font size="2">From a Visual Studio Command Prompt:</font>       <ul>       <li><font size="2">vsperfcmd /start:concurrency,resourceonly /output:&lt;report.vsp&gt;</font> </li>        <li><font size="2">vsperfcmd /attach:&lt;IISExpress.exe’s PID&gt;</font> </li>        <li><font size="2">Run your scenario</font> </li>        <li><font size="2">vsperfcmd /shutdown</font> </li>        <li><font size="2">close IIS Express</font> </li>     </ul>   </li>    <li><font size="2">Open the resulting .vsp file in Visual Studio</font> </li> </ul>]]></content:encoded>
    </item>
    <item>
      <title>“Performance reports must be created on a local drive”</title>
      <link>https://docs.microsoft.com/archive/blogs/profiler/performance-reports-must-be-created-on-a-local-drive</link>
      <pubDate>Mon, 25 Apr 2011 15:26:17 GMT</pubDate>
      <dc:creator><![CDATA[profiler1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/profiler/2011/04/25/performance-reports-must-be-created-on-a-local-drive/</guid>
      <description><![CDATA[For better performance, VS Profiler requires the report to be on a local drive. If you change the...]]></description>
      <content:encoded><![CDATA[<p>For better performance, VS Profiler requires the report to be on a local drive. If you change the report file location through Performance Session properties page (right click on performance session in Performance Explorer –&gt; Properties –&gt; General):</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/0216.image_09055E8B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/0216.image_5F00_09055E8B.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/4010.image_thumb_16A7F4C6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/4010.image_5F00_thumb_5F00_16A7F4C6.png" width="671" height="96" /></a></p>  <p>then you end up with an error like that:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/6866.image_28848893.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/6866.image_5F00_28848893.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/8055.image_thumb_7D3FF18B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/8055.image_5F00_thumb_5F00_7D3FF18B.png" width="478" height="180" /></a></p>  <p>The rationale behind usage of local drives is that VS Profiler attempts to make logging to the file fast, while usage of network drives might introduce logging delays (up to blocking your application execution in some cases).</p>  <p>However, if you absolutely have to use your network drives for that purpose, you can achieve that through usage of <a href="https://msdn.microsoft.com/en-us/library/aa365680(VS.85).aspx">Symbolic Links</a>. A symbolic link can be easily created with <strong><a href="https://technet.microsoft.com/en-us/library/cc753194(WS.10).aspx">mklink</a> </strong>utility. For example, </p>  <p><font face="Courier New">mklink /D C:\Foo </font><a href="file://\\MyNetwork\MyValut"><font face="Courier New">\\MyNetwork\MyValut</font></a></p>  <p>After that you can use C:\Foo as a location for profiling reports. Keep in mind, though, that your network access can be slower than a local drive access, and it can impact your profiling session.</p>  <p>[<a href="https://blogs.msdn.com/b/mgoldin/">Maxim Goldin</a>]</p>]]></content:encoded>
    </item>
    <item>
      <title>How to profile ASP.NET and Silverlight at the same time</title>
      <link>https://docs.microsoft.com/archive/blogs/profiler/how-to-profile-asp-net-and-silverlight-at-the-same-time</link>
      <pubDate>Wed, 09 Feb 2011 19:40:39 GMT</pubDate>
      <dc:creator><![CDATA[Andrew B Hall - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/profiler/2011/02/09/how-to-profile-asp-net-and-silverlight-at-the-same-time/</guid>
      <description><![CDATA[In Visual Studio 2010 SP1 we enabled the ability to profile Silverlight applications from the Visual...]]></description>
      <content:encoded><![CDATA[<p><font size="2">In Visual Studio 2010 SP1 we enabled the ability to profile Silverlight applications from the Visual Studio UI.&#160; Unfortunately there is a limitation where we cannot automatically attach to multiple processes on launch from inside Visual Studio, so you are still unable to profile ASP.NET and Silverlight at the same time without manually attaching to Internet Explorer after launch.&#160; Fortunately, this is relatively simple.&#160; </font></p>  <p><font size="2">To profile both Silverlight and ASP.NET at the same time:</font></p>  <ol>   <li><font size="2">Launch your CPU sampling session against your ASP.NET application from Visual Studio</font> </li>    <li><font size="2">In the Performance Explorer window click “Attach/Detach”        <br />        <br /></font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/4212.image_7FD4D388.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/4212.image_5F00_7FD4D388.png"><font size="2"></font></a><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/7848.image_2C695396.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/7848.image_5F00_2C695396.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/5466.image_thumb_533769D6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/5466.image_5F00_thumb_5F00_533769D6.png" width="373" height="232" /></a>       <br /></li>    <li><font size="2">Select the Internet Explorer process that is running your Silverlight application—if you only have one instance of Internet Explorer open with a single tab, the process will be the “iexplore” process <strong>without</strong> a Window Title.&#160; <br />        <br /></font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/7455.image_1301505C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/7455.image_5F00_1301505C.png"><font size="2"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/7853.image_thumb_24DDE429.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/7853.image_5F00_thumb_5F00_24DDE429.png" width="571" height="330" /></font></a>       <br />      <ul>       <li><font size="2">If you have multiple instances of Internet Explorer open, or multiple tabs inside internet explorer, you can either:</font>           <ul>           <li><font size="2">Try looking at the CPU consumption of your iexplore.exe processes in Task Manager</font> to see which one is most active</li>            <li><font size="2">Use </font><a href="https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"><font size="2">Process Explorer</font></a>               <ul>               <li><font size="2">Find –&gt;&#160; “Find Handle or DLL…” (ctrl + F)</font> </li>                <li><font size="2">Search for “coreclr.dll”</font> </li>                <li><font size="2">The “iexplore.exe” process with this dll loaded is the PID you want to attach to                    <br />                    <br /></font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/7838.image_12951D67.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/7838.image_5F00_12951D67.png"><font size="2"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/5707.image_thumb_2471B134.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/5707.image_5F00_thumb_5F00_2471B134.png" width="644" height="332" /></font></a>                   <br /></li>             </ul>           </li>         </ul>       </li>     </ul>   </li>    <li><font size="2">You are now profiling ASP.NET and Silverlight at the same time</font> </li> </ol>  <p><font size="2"></font></p>  <p><font size="2"></font></p>  <p><font size="2"></font></p>  <p><font size="2"></font></p>  <p><font size="2"></font></p>  <p><font size="2"></font></p>  <p><font size="2"></font></p>  <p><font size="2"></font></p>  <p><font size="2"></font></p>  <p><font size="2"></font></p>]]></content:encoded>
    </item>
    <item>
      <title>VS2010 SP1: Silverlight 4 profiling from Visual Studio UI</title>
      <link>https://docs.microsoft.com/archive/blogs/profiler/vs2010-sp1-silverlight-4-profiling-from-visual-studio-ui</link>
      <pubDate>Tue, 21 Dec 2010 10:13:28 GMT</pubDate>
      <dc:creator><![CDATA[profiler1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/profiler/2010/12/21/vs2010-sp1-silverlight-4-profiling-from-visual-studio-ui/</guid>
      <description><![CDATA[&#160;  If you install recently published VS2010 SP1 Beta, you can discover that VS Profiler team...]]></description>
      <content:encoded><![CDATA[<p>&#160;</p>  <p>If you install recently published <a href="https://www.microsoft.com/downloads/en/details.aspx?FamilyID=11ea69cb-cf12-4842-a3d7-b32a1e5642e2&amp;displaylang=en"><font color="#0066dd"><u>VS2010 SP1 Beta</u></font></a><a href="https://www.microsoft.com/downloads/en/details.aspx?FamilyID=11ea69cb-cf12-4842-a3d7-b32a1e5642e2&amp;displaylang=en"><font style="background-color: #ffff00"></font></a>, you can discover that VS Profiler team enriched Silverlight profiling user experience. Previously I published few posts about VS2010 usage for those purposes, either through VS Profiler <a href="https://blogs.msdn.com/b/mgoldin/archive/2010/04/26/vs2010-silverlight-4-profiling.aspx">command line tools</a> or <a href="https://blogs.msdn.com/b/mgoldin/archive/2010/06/01/vs2010-sliverlight-4-profiling-from-visual-studio-ui.aspx">VS2010 UI</a>. Both approaches led you to the final results or figuring out the bottlenecks of your Silverlight application, but they require number of manual steps to be done.</p>  <p>In VS2010 SP1 however Silverlight projects are fully recognized by VS Profiler, and you can conduct your performance investigations much easier. </p>  <p>For example, you might use the <a href="https://msdn.microsoft.com/en-us/library/ff426926(v=VS.95).aspx">Silverlight Text Editor Sample</a>, and open this project in VS2010 SP1:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/5001.image_74B74505.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/5001.image_5F00_74B74505.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/1778.image_thumb_05BB72E9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/1778.image_5F00_thumb_5F00_05BB72E9.png" width="324" height="373" /></a></p>  <p>Now, if you wish to create a performance session for this project, you can do it in a usual way through Performance Wizard:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/2867.image_054F3FF4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/2867.image_5F00_054F3FF4.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/1385.image_thumb_2C1D5634.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/1385.image_5F00_thumb_5F00_2C1D5634.png" width="338" height="199" /></a></p>  <p>You will see your project in the list of possible targets (it was not there before the final integration of Silverlight projects and VS Profiler), and you can select it there and proceed with the Wizard that creates and starts a performance session for you:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/8712.image_56F5BA46.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/8712.image_5F00_56F5BA46.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/4428.image_thumb_44ACF384.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/4428.image_5F00_thumb_5F00_44ACF384.png" width="521" height="448" /></a></p>  <p>When you close your application – the session is over and profiling results are presented so you can analyze the data:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/3426.image_2425B3D2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/3426.image_5F00_2425B3D2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/6175.image_thumb_71C1E052.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/6175.image_5F00_thumb_5F00_71C1E052.png" width="523" height="404" /></a></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/2364.image_7C7F37A7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/2364.image_5F00_7C7F37A7.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/6562.image_thumb_5544EE72.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/6562.image_5F00_thumb_5F00_5544EE72.png" width="523" height="309" /></a></p>  <p>Enjoy!</p>  <p>[<a href="https://blogs.msdn.com/b/mgoldin/">Maxim Goldin</a>]</p>]]></content:encoded>
    </item>
    <item>
      <title>Tip: Fixing VSPerfASPNetCmd metabase errors</title>
      <link>https://docs.microsoft.com/archive/blogs/profiler/tip-fixing-vsperfaspnetcmd-metabase-errors</link>
      <pubDate>Fri, 23 Jul 2010 13:19:00 GMT</pubDate>
      <dc:creator><![CDATA[profiler1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/profiler/2010/07/23/tip-fixing-vsperfaspnetcmd-metabase-errors/</guid>
      <description><![CDATA[VSPerfASPNetCmd is a new Visual Studio 2010 tool that helps you profile ASP.Net websites from the...]]></description>
      <content:encoded><![CDATA[<p><a href="https://msdn.microsoft.com/en-us/library/ee308442.aspx">VSPerfASPNetCmd</a> is a new Visual Studio 2010 tool that helps you profile ASP.Net websites from the command-line. Recently I noticed an error message which didn&rsquo;t cover one common situation so I thought I&rsquo;d write about it. Here&rsquo;s an example:</p>
<p>&gt; VSPerfASPNetCmd.exe <a href="https://localhost">https://localhost</a> <br /><span style="font-family: Courier New; font-size: x-small;">Microsoft (R) VSPerf ASP.NET Command, Version 10.0.0.0 <br />Copyright (C) Microsoft Corporation. All rights reserved. </span></p>
<p><span style="font-family: Courier New; font-size: x-small;">Error <br />VSP 7008: ASP.net exception: "The website metabase contains unexpected information or you do not have permission to access the metabase.&nbsp; You must be a member of the Administrators group on the local computer to access the IIS metabase. Therefore, you cannot create or open a local IIS Web site.&nbsp; If you have Read, Write, and Modify Permissions for the folder where the files are located, you can create a file system web site that points to the folder in order to proceed."</span></p>
<p>The information in the error is correct and it is worth checking to make sure that you are running from an elevated command prompt, but it does miss a common configuration issue. In order to query for information from the IIS metabase, certain IIS components need to be installed.</p>
<p>To check this in Windows 7:</p>
<ol>
<li>Open &lsquo;Control Panel\Programs\Programs and Features&rsquo; (or run &lsquo;appwiz.cpl&rsquo;). </li>
<li>Choose &lsquo;Turn Windows features on or off&rsquo;. </li>
<li>In the &lsquo;Internet Information Services&rsquo; section, make sure that the following options are selected. </li>
</ol>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/7282.iis_config_2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/7282.iis_5F00_config_5F00_2.png"><img height="781" width="455" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/36/42/metablogapi/0842.iis_config_thumb.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-36-42-metablogapi/0842.iis_5F00_config_5F00_thumb.png" alt="IIS Configuration Options" border="0" title="IIS Configuration Options" style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" /></a> </p>
<p>The non-default options include:</p>
<ul>
<li>IIS 6 Scripting Tools </li>
<li>IIS 6 WMI Compatibility </li>
<li>IIS Metabase and IIS 6 configuration compatibility </li>
<li>ASP.NET, </li>
<li>Windows Authentication </li>
</ul>
<p>[<a href="https://blogs.msdn.com/b/colinth" title="Colin Thomsen">Colin Thomsen</a>]</p>]]></content:encoded>
    </item>
  </channel>
</rss>