<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="www.w3.org/2005/Atom" xmlns:sy="purl.org/rss/1.0/modules/syndication/" xmlns:dc="purl.org/dc/elements/1.1/" xmlns:content="purl.org/rss/1.0/modules/content/" xmlns:wfw="wellformedweb.org/CommentAPI/" xmlns:slash="purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Dave's Team System Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/dscruggs/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/dscruggs/feed.xml</link>
    <description>Comments about Team System (VSTS, TFS, etc.), or whatever I see that I think is interesting.</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:20:32 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Enabling code coverage on TFS 2012—it’s easy</title>
      <link>https://docs.microsoft.com/archive/blogs/dscruggs/enabling-code-coverage-on-tfs-2012its-easy</link>
      <pubDate>Fri, 28 Sep 2012 10:51:37 GMT</pubDate>
      <dc:creator><![CDATA[David Scruggs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dscruggs/2012/09/28/enabling-code-coverage-on-tfs-2012its-easy/</guid>
      <description><![CDATA[I’m so used to editing test settings to enable code coverage in TFS, that I was surprised how easy...]]></description>
      <content:encoded><![CDATA[<p>I’m so used to editing test settings to enable code coverage in TFS, that I was surprised how easy it is in TFS 2012. </p>  <p>First, inside Visual Studio 2012, code coverage is enabled by default. Those settings go with the unit test explorer, so they rely more on the “runsettings” file—if you even have one. If you want to customize <em>that</em>, check out <a href="https://blogs.msdn.com/b/sudhakan/archive/2012/05/11/customizing-code-coverage-in-visual-studio-11.aspx">this post</a>. </p>  <p>For the build, first edit the build definition, and go to the “process” tab:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/77/23/metablogapi/5340.image_23C0DE06.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/5340.image_5F00_23C0DE06.png"><img title="image" style="display: inline; background-image: none;" 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/77/23/metablogapi/8358.image_thumb_48DE2872.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/8358.image_5F00_thumb_5F00_48DE2872.png" width="644" height="335" /></a></p>  <p>When you click on the ellipsis (“…”) next to “Automated Tests”, you’ll get this editor:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/77/23/metablogapi/4743.image_6A2DA841.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/4743.image_5F00_6A2DA841.png"><img title="image" style="display: inline; background-image: none;" 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/77/23/metablogapi/1513.image_thumb_5463BFE4.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/1513.image_5F00_thumb_5F00_5463BFE4.png" width="644" height="428" /></a></p>  <p>Click on the “Edit” button and you’ll get the following dialog:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/77/23/metablogapi/5635.image_0E0659CF.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/5635.image_5F00_0E0659CF.png"><img title="image" style="display: inline; background-image: none;" 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/77/23/metablogapi/7360.image_thumb_3F25946F.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/7360.image_5F00_thumb_5F00_3F25946F.png" width="416" height="484" /></a></p>  <p>Under “Options”, choose “Enable Code Coverage”. You may also want to fail the build if your unit tests fail. Keep clicking “OK” all the way out of the dialogs that were opened, and save your build definition. </p>]]></content:encoded>
    </item>
    <item>
      <title>Atlanta Cloud OS and Visual Studio Launch.</title>
      <link>https://docs.microsoft.com/archive/blogs/dscruggs/atlanta-cloud-os-and-visual-studio-launch</link>
      <pubDate>Mon, 17 Sep 2012 11:33:56 GMT</pubDate>
      <dc:creator><![CDATA[David Scruggs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dscruggs/2012/09/17/atlanta-cloud-os-and-visual-studio-launch/</guid>
      <description><![CDATA[I presented a couple of sessions at the Atlanta Cloud OS Launch event—on the “Modern Application...]]></description>
      <content:encoded><![CDATA[<p>I presented a couple of sessions at the <a href="https://www.microsoft.com/enterprise/events/signature/?CR_CC=200117747#fbid=hf03xpj8_jc">Atlanta Cloud OS Launch event</a>—on the “Modern Application Lifecycle” and on DevOps. </p>  <p>The Modern Application Lifecycle presentation was high-level, and went over what a modern app is, the timelines for modern “Systems of Engagement” applications, and the application lifecycle that supports them. I believe Matt Nunn recorded a similar session at <a href="www.visualstudiolaunch.com/vs2012vle/Theater?sid=1797">Taking your business forward with Modern apps.</a> </p>  <p>The DevOps slide deck is very short—we spent almost all the time on 3 demos. The demo VM’s aren’t publicly available, but it looks like a similar session is recorded at <a href="www.visualstudiolaunch.com/vs2012vle/Theater?sid=1814">DevOps with System Center and Visual Studio</a>. </p>  <p>You can find my slides posted at <a title="sdrv.ms/S0cVdu" href="sdrv.ms/S0cVdu">sdrv.ms/S0cVdu</a>. </p>]]></content:encoded>
    </item>
    <item>
      <title>Atlanta Code Camp Slides</title>
      <link>https://docs.microsoft.com/archive/blogs/dscruggs/atlanta-code-camp-slides</link>
      <pubDate>Thu, 24 May 2012 13:21:07 GMT</pubDate>
      <dc:creator><![CDATA[David Scruggs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dscruggs/2012/05/24/atlanta-code-camp-slides/</guid>
      <description><![CDATA[I’ve posted my Tips and Tricks slides from Saturday’s session at sdrv.ms/KlpvDF. Hope you...]]></description>
      <content:encoded><![CDATA[<p>I’ve posted my Tips and Tricks slides from Saturday’s session at <a title="sdrv.ms/KlpvDF" href="sdrv.ms/KlpvDF">sdrv.ms/KlpvDF</a>. Hope you enjoy them!</p>  <p>Also, Zain Naboulsi has a lot of tips for Visual Studio 2010 at <a title="https://channel9.msdn.com/Niners/VSTips" href="https://channel9.msdn.com/Niners/VSTips">https://channel9.msdn.com/Niners/VSTips</a>. </p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio 11 Roadshow</title>
      <link>https://docs.microsoft.com/archive/blogs/dscruggs/visual-studio-11-roadshow</link>
      <pubDate>Fri, 20 Apr 2012 05:33:05 GMT</pubDate>
      <dc:creator><![CDATA[David Scruggs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dscruggs/2012/04/20/visual-studio-11-roadshow/</guid>
      <description><![CDATA[Next week, I’ll be presenting at two half-day events—one in Alpharetta, Georgia on Tuesday, and one...]]></description>
      <content:encoded><![CDATA[<p>Next week, I’ll be presenting at two half-day events—one in Alpharetta, Georgia on Tuesday, and one in Durham, North Carolina on Thursday. </p>  <p>If you’re a IT manager or decision maker, a project manager on software projects, a professional developer, or a tester, there should be something at the event for you. </p>  <p>The presentation will be almost entirely a demo of Visual Studio running live, and the content is suitable for virtually any role within your software development organization. We’ll show how Visual Studio 11 brings together everyone involved in a software project – business analysts, project managers, developers, testers, operation staff and end-users. We’ll demonstrate envisioning, scoping, building, testing, deploying, and diagnostics throughout the three key phases of software management: Definition, Delivery and Operations.</p>  <p>To register, click on one of the links below and fill out the form to register for your local event. </p>  <table border="0" cellspacing="0" cellpadding="0"><tbody>     <tr>       <td width="128">         <p>Alpharetta</p>       </td>        <td width="104">         <p>4/24/2012</p>       </td>        <td width="102">         <p><a href="https://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&amp;EventID=1032509027&amp;IO=8UxjyRhxEf9MeUgu%2bfqGVQ%3d%3d">Register</a></p>       </td>     </tr>   </tbody></table>  <table border="0" cellspacing="0" cellpadding="0"><tbody>     <tr>       <td width="128">         <p>Durham</p>       </td>        <td width="104">         <p>4/26/2012</p>       </td>        <td width="102">         <p><a href="https://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=62-06-11-08-0E-41-BC-9A-FF-55-C1-68-1A-83-76-21&amp;Culture=en-US">Register</a></p>       </td>     </tr>   </tbody></table>  <p>Hope you can make it, </p>  <p>David</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/77/23/metablogapi/6445.image_2.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/6445.image_5F00_2.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/77/23/metablogapi/3872.image_thumb.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/3872.image_5F00_thumb.png" width="644" height="218" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>Getting a successful Visual Studio 10 Team Build when Visual Studio 11 is installed locally</title>
      <link>https://docs.microsoft.com/archive/blogs/dscruggs/getting-a-successful-visual-studio-10-team-build-when-visual-studio-11-is-installed-locally</link>
      <pubDate>Fri, 24 Feb 2012 09:41:53 GMT</pubDate>
      <dc:creator><![CDATA[David Scruggs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dscruggs/2012/02/24/getting-a-successful-visual-studio-10-team-build-when-visual-studio-11-is-installed-locally/</guid>
      <description><![CDATA[I was trying to build a project with the Azure SDK, and the team build was breaking because it...]]></description>
      <content:encoded><![CDATA[<p>I was trying to build a project with the Azure SDK, and the team build was breaking because it couldn’t find the Azure MSBuild targets. Precisely, I was getting this error:</p>  <blockquote>   <p> The imported project &quot;C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\<font style="background-color: #ffff00">v11.0</font>\Windows Azure Tools\1.6\Microsoft.WindowsAzure.targets&quot; was not found. Confirm that the path in the &lt;Import&gt; declaration is correct, and that the file exists on disk.</p> </blockquote>  <p>The install of Visual Studio 11 was causing my $(VisualStudioVersion) environment variable to be overridden. For the most part, this was OK, but the Azure toolkit isn’t available for the CTP of Visual Studio 11, so that target file doesn’t exist.</p>  <p>I went out to <a href="https://msdn.microsoft.com/en-us/library/bb383796(v=vs.110).aspx">this link</a>, and saw that I needed to set the VisualStudioVersion as a parameter.&#160; According to the article:</p>  <blockquote>   <p>These new methods also take a VisualStudioVersion enumerated value as a parameter to determine which tool subset to use. The VisualStudioVersion enumeration can have one of the following values:</p>    <ul>     <li>       <p>VisualStudio10</p>     </li>      <li>       <p>VisualStudio11</p>     </li>      <li>       <p>VisualStudioLatest</p>     </li>   </ul> </blockquote>  <p>Setting /p:VisualStudioVersion=VisualStudio10 resulted in:</p>  <blockquote>   <p>The imported project &quot;C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\<font style="background-color: #ffff00">vVisualStudio10</font>\Windows Azure Tools\1.6\Microsoft.WindowsAzure.targets&quot; was not found. Confirm that the path in the &lt;Import&gt; declaration is correct, and that the file exists on disk.</p> </blockquote>  <p>So I tried “/p:VisualStudioVersion=v10.0”, but I missed that the tool prepended a “v” prefix for me. </p>  <p>Finally I tried “/p:VisualStudioVersion=10.0” and found success!&#160; </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/77/23/metablogapi/7144.image_6F8954A1.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/7144.image_5F00_6F8954A1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 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/77/23/metablogapi/8306.image_thumb_08E1320F.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/8306.image_5F00_thumb_5F00_08E1320F.png" width="811" height="84" /></a></p>  <p>So, there’s a nice tip for my toolbox.</p>]]></content:encoded>
    </item>
    <item>
      <title>Having private properties in ASP.NET MVC model objects</title>
      <link>https://docs.microsoft.com/archive/blogs/dscruggs/having-private-properties-in-asp-net-mvc-model-objects</link>
      <pubDate>Fri, 26 Aug 2011 06:45:30 GMT</pubDate>
      <dc:creator><![CDATA[David Scruggs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dscruggs/2011/08/26/having-private-properties-in-asp-net-mvc-model-objects/</guid>
      <description><![CDATA[I have an ASP.NET MVC project in which I wanted to track which users created an item. I’m already...]]></description>
      <content:encoded><![CDATA[<p>I have an ASP.NET MVC project in which I wanted to track which users created an item. I’m already using membership and authorization, so I just have to annotate my controller methods with an [Authorize] tag. I added a “User” property to the model objects I wanted to track, but I didn’t want MVC scaffolding to allow editing of those “hidden” or system properties.</p>  <p>I tried a few things, such as removing the property setters, but that prevented the DbSet from persisting those properties. I could have written a custom mapping, but that really felt like overkill. Setting Editable annotations never worked for me. Finally, I marked the appropriate setters as “internal”, and had more success. </p>  <p>This isn’t enterprise code, but you can see where I’ve used “internal” to protect some settings. Since the data context is in the same namespace but the view isn’t, the properties are safe from end user editing.&#160; </p>  <p>I’ve also set a few methods to set properties for me. For example, I have Approve and Reject methods which change the status. It’s a lightweight workflow, and would be better to handle another way, but this was a quick-and-dirty approval system and it works well enough.</p>  <pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> PurchaseRequest
    {
        <span class="kwrd">private</span> <span class="kwrd">string</span> userName;
        <span class="kwrd">private</span> DateTime requestDate;
        <span class="kwrd">private</span> <span class="kwrd">string</span> status = <span class="str">&quot;PENDING&quot;</span>;

        <span class="kwrd">public</span> <span class="kwrd">int</span> PurchaseRequestId { get; set; }

        <span class="kwrd">public</span> <span class="kwrd">string</span> UserName { get { <span class="kwrd">return</span> userName; } <font style="background-color: #ffff00"><span class="kwrd">internal</span> set { userName = <span class="kwrd">value</span>; }</font> }
        <span class="kwrd">public</span> <span class="kwrd">string</span> Title { get; set; }

        <span class="kwrd">public</span> DateTime RequestDate { get { <span class="kwrd">return</span> requestDate; } <font style="background-color: #ffff00"><span class="kwrd">internal</span> set { requestDate = <span class="kwrd">value</span>; }</font> }
        <span class="kwrd">public</span> <span class="kwrd">virtual</span> ICollection&lt;OrderItem&gt; OrderItems { get; set; }

        <span class="kwrd">public</span> <span class="kwrd">string</span> Status { get { <span class="kwrd">return</span> status; } <font style="background-color: #ffff00"><span class="kwrd">internal</span> set { status = <span class="kwrd">value</span>; }</font> }

        <span class="kwrd">public</span> <span class="kwrd">void</span> Init(<span class="kwrd">string</span> user)
        {
            userName = user;
            requestDate = DateTime.Now;
            status = <span class="str">&quot;PENDING&quot;</span>;
        }

        <span class="kwrd">public</span> <span class="kwrd">bool</span> CanApprove()
        {
            <span class="kwrd">if</span> (<span class="str">&quot;PENDING&quot;</span>.Equals(status))
            {
                <span class="kwrd">return</span> <span class="kwrd">true</span>;
            }
            <span class="kwrd">else</span>
            {
                <span class="kwrd">return</span> <span class="kwrd">false</span>;
            }
        }

        <span class="kwrd">public</span> <span class="kwrd">void</span> Approve()
        {
            <span class="kwrd">if</span> (CanApprove()) status = <span class="str">&quot;APPROVED&quot;</span>;
        }

        <span class="kwrd">public</span> <span class="kwrd">void</span> Reject()
        {
            <span class="kwrd">if</span> (CanApprove()) status = <span class="str">&quot;REJECTED&quot;</span>;
        }

    }</pre>
]]></content:encoded>
    </item>
    <item>
      <title>Analysis Services 2008 R2 Team Build in TFS 2010</title>
      <link>https://docs.microsoft.com/archive/blogs/dscruggs/analysis-services-2008-r2-team-build-in-tfs-2010</link>
      <pubDate>Mon, 01 Aug 2011 12:41:02 GMT</pubDate>
      <dc:creator><![CDATA[David Scruggs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dscruggs/2011/08/01/analysis-services-2008-r2-team-build-in-tfs-2010/</guid>
      <description><![CDATA[If you’ve tried to build a BIDS project in a team build, you’ve noticed that BIDS doesn’t support...]]></description>
      <content:encoded><![CDATA[<p>If you’ve tried to build a BIDS project in a team build, you’ve noticed that BIDS doesn’t support MSBuild. There are a couple of workarounds for this.</p>  <ol>   <li>Find MSBuild extensions for the various BIDS projects. They’re out there.</li>    <li>Run the build through Visual Studio—a “DevEnv” build.</li> </ol>  <p>I chose the second option. I downloaded the latest <a href="tfsbuildextensions.codeplex.com">Community TFS Build Extensions</a> and followed the <a href="tfsbuildextensions.codeplex.com/wikipage?title=How%20to%20integrate%20the%20extensions%20into%20a%20build%20template&amp;referringTitle=Documentation">instructions to add the activities</a> to the workflow and the toolbox.&#160; The activity I cared about was the “VSDevEnv” activity, and that’s in the TfsBuildExtensions.Activities.dll assembly.&#160; I added it to a new tab called “Team Build Contributions” (VSDevEnv is the fourth activity):</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/77/23/metablogapi/2630.image_1C458D70.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/2630.image_5F00_1C458D70.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 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/77/23/metablogapi/3617.image_thumb_557BF465.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/3617.image_5F00_thumb_5F00_557BF465.png" width="358" height="484" /></a></p>  <p>I copied the DefaultTemplate.xaml file into a DevEnvTemplate.xaml. You can navigate down to a subworkflow called “Process &gt; Sequence &gt; Run on Agent &gt; Try Compile and Test &gt; For Each Configuration &gt; Compile and Test &gt; if Build Settings … &gt; For Each Project … &gt; Try to Compile … &gt; Compile the Project”. In it, there is an option called “Run MSBuild for Project”.&#160; I removed the “Run MSBuild for Project” activity shown below:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/77/23/metablogapi/7002.image_1033776F.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/7002.image_5F00_1033776F.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 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/77/23/metablogapi/0574.image_thumb_33806C14.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/0574.image_5F00_thumb_5F00_33806C14.png" width="244" height="226" /></a></p>  <p>and I replaced it with the “VSDevEnv” extension activity. I added the “Copy Directory” activity, since the MSBuild activity copies the binaries to a drop and the VSDevEnv activity doesn’t.&#160; You can see the new flow in the picture below:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/77/23/metablogapi/0068.image_395B0FAD.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/0068.image_5F00_395B0FAD.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 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/77/23/metablogapi/8407.image_thumb_2D591F79.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/8407.image_5F00_thumb_5F00_2D591F79.png" width="221" height="244" /></a></p>        <p>I added the BIDS DevEnv path to my global “path” variable on the system, but you can add it to the user path on the build server. I also tagged the build server with “BIDS08” to direct the build to a machine that could support that build. </p>  <p>I had to set the input path—”localProject” already had the name of the file I was trying to build; set it to the project if you can rather than the solution. </p>  <p>The “OutputFile” is the log file from the build. I set that to <em>outputDirectory + &quot;\&quot; + System.IO.Path.GetFileName(localProject) + &quot;.log&quot;.</em>&#160;</p>  <p>&#160;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/77/23/metablogapi/0068.image_7E2733E1.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/0068.image_5F00_7E2733E1.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/77/23/metablogapi/0552.image_thumb_6A99D440.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/0552.image_5F00_thumb_5F00_6A99D440.png" width="244" height="191" /></a></p>    <p>For “CopyDirectory”, I used BinariesDirectory as the Destination, and I used <em>System.IO.Path.GetDirectoryName(localProject) + &quot;\bin\&quot; </em>as the input directory.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/77/23/metablogapi/1157.image_741292B6.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/1157.image_5F00_741292B6.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 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/77/23/metablogapi/0552.image_thumb_72CDF9D7.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/0552.image_5F00_thumb_5F00_72CDF9D7.png" width="244" height="193" /></a></p>          <p>At the end, I had all four of my Analysis Service build assets in the drop folder. Hopefully, I can tackle deployment in another post.</p>]]></content:encoded>
    </item>
    <item>
      <title>Using a config file to override targets in a Visual Studio test project</title>
      <link>https://docs.microsoft.com/archive/blogs/dscruggs/using-a-config-file-to-override-targets-in-a-visual-studio-test-project</link>
      <pubDate>Thu, 21 Jul 2011 13:44:23 GMT</pubDate>
      <dc:creator><![CDATA[David Scruggs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dscruggs/2011/07/21/using-a-config-file-to-override-targets-in-a-visual-studio-test-project/</guid>
      <description><![CDATA[I wanted one of my coded UI tests to work in different environments, and to do that I wanted to...]]></description>
      <content:encoded><![CDATA[<p>I wanted one of my coded UI tests to work in different environments, and to do that I wanted to override one of the URLs. I wanted to set that up in a config file rather than a data source. So, I created my own configuration data class for a custom section in App.Config (<a href="https://msdn.microsoft.com/en-us/library/2tw134k3.aspx">MSDN Article here</a>):</p>  <p>   <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:07d7f478-7313-4ae5-9bb7-2ebf1b86b4e9" class="wlWriterEditableSmartContent"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Configuration Data Class</div> <div style="background: #ddd; max-height: 400px; overflow: auto"> <ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"> <li><span style="color:#0000ff">public</span> <span style="color:#0000ff">class</span> <span style="color:#2b91af">TestSiteConfigurationData</span> : <span style="color:#2b91af">ConfigurationSection</span></li> <li style="background: #f3f3f3">{</li> <li>    <span style="color:#0000ff">private</span> <span style="color:#0000ff">static</span> <span style="color:#2b91af">ConfigurationPropertyCollection</span> _Properties;</li> <li style="background: #f3f3f3">    <span style="color:#0000ff">private</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">bool</span> _ReadOnly;</li> <li>    <span style="color:#0000ff">private</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">readonly</span> <span style="color:#2b91af">ConfigurationProperty</span> _WebServerName = <span style="color:#0000ff">new</span> <span style="color:#2b91af">ConfigurationProperty</span>(<span style="color:#a31515">&quot;WebServerName&quot;</span>, <span style="color:#0000ff">typeof</span>(<span style="color:#0000ff">string</span>), <span style="color:#a31515">&quot;localhost&quot;</span>, <span style="color:#2b91af">ConfigurationPropertyOptions</span>.IsRequired);</li> <li style="background: #f3f3f3">    <span style="color:#0000ff">private</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">readonly</span> <span style="color:#2b91af">ConfigurationProperty</span> _WebServerPort = <span style="color:#0000ff">new</span> <span style="color:#2b91af">ConfigurationProperty</span>(<span style="color:#a31515">&quot;WebServerPort&quot;</span>, <span style="color:#0000ff">typeof</span>(<span style="color:#0000ff">int</span>), 80);</li> <li>    <span style="color:#0000ff">private</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">readonly</span> <span style="color:#2b91af">ConfigurationProperty</span> _WebApplicationRootName = <span style="color:#0000ff">new</span> <span style="color:#2b91af">ConfigurationProperty</span>(<span style="color:#a31515">&quot;WebApplicationRootName&quot;</span>, <span style="color:#0000ff">typeof</span>(<span style="color:#0000ff">string</span>), <span style="color:#a31515">&quot;&quot;</span>);</li> <li style="background: #f3f3f3">&nbsp;</li> <li>    <span style="color:#0000ff">public</span> TestSiteConfigurationData()</li> <li style="background: #f3f3f3">    {</li> <li>        <span style="color:#008000">//init properties</span></li> <li style="background: #f3f3f3">        _Properties = <span style="color:#0000ff">new</span> <span style="color:#2b91af">ConfigurationPropertyCollection</span>();</li> <li>        _Properties.Add(_WebServerName);</li> <li style="background: #f3f3f3">        _Properties.Add(_WebServerPort);</li> <li>        _Properties.Add(_WebApplicationRootName);</li> <li style="background: #f3f3f3">    }</li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="color:#008000">// Properties</span></li> <li>    <span style="color:#0000ff">protected</span> <span style="color:#0000ff">override</span> <span style="color:#2b91af">ConfigurationPropertyCollection</span> Properties</li> <li style="background: #f3f3f3">    {</li> <li>        <span style="color:#0000ff">get</span></li> <li style="background: #f3f3f3">        {</li> <li>            <span style="color:#0000ff">return</span> _Properties;</li> <li style="background: #f3f3f3">        }</li> <li>    }</li> <li style="background: #f3f3f3">&nbsp;</li> <li>    <span style="color:#0000ff">private</span> <span style="color:#0000ff">new</span> <span style="color:#0000ff">bool</span> IsReadOnly</li> <li style="background: #f3f3f3">    {</li> <li>        <span style="color:#0000ff">get</span></li> <li style="background: #f3f3f3">        {</li> <li>            <span style="color:#0000ff">return</span> _ReadOnly;</li> <li style="background: #f3f3f3">        }</li> <li>    }</li> <li style="background: #f3f3f3">&nbsp;</li> <li>    <span style="color:#008000">// use this to disable property setting</span></li> <li style="background: #f3f3f3">    <span style="color:#0000ff">private</span> <span style="color:#0000ff">void</span> ThrowIfReadOnly(<span style="color:#0000ff">string</span> propertyName)</li> <li>    {</li> <li style="background: #f3f3f3">        <span style="color:#0000ff">if</span> (IsReadOnly) <span style="color:#0000ff">throw</span> <span style="color:#0000ff">new</span> <span style="color:#2b91af">ConfigurationErrorsException</span>(<span style="color:#a31515">&quot;the property &quot;</span> + propertyName + <span style="color:#a31515">&quot; is read only.&quot;</span>);</li> <li>    }</li> <li style="background: #f3f3f3">    <span style="color:#008000">// this enables the ThrowIfReadOnly method</span></li> <li>    <span style="color:#0000ff">protected</span> <span style="color:#0000ff">override</span> <span style="color:#0000ff">object</span> GetRuntimeObject()</li> <li style="background: #f3f3f3">    {</li> <li>        <span style="color:#008000">// to enable property setting just assign true to the following flag:</span></li> <li style="background: #f3f3f3">        _ReadOnly = <span style="color:#0000ff">true</span>;</li> <li>        <span style="color:#0000ff">return</span> <span style="color:#0000ff">base</span>.GetRuntimeObject();</li> <li style="background: #f3f3f3">    }</li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> WebServerName</li> <li>    {</li> <li style="background: #f3f3f3">        <span style="color:#0000ff">get</span> { <span style="color:#0000ff">return</span> (<span style="color:#0000ff">string</span>)<span style="color:#0000ff">this</span>[<span style="color:#a31515">&quot;WebServerName&quot;</span>]; }</li> <li>        <span style="color:#0000ff">set</span></li> <li style="background: #f3f3f3">        {</li> <li>            ThrowIfReadOnly(<span style="color:#a31515">&quot;WebServerName&quot;</span>);</li> <li style="background: #f3f3f3">            <span style="color:#0000ff">this</span>[<span style="color:#a31515">&quot;WebServerName&quot;</span>] = <span style="color:#0000ff">value</span>;</li> <li>        }</li> <li style="background: #f3f3f3">    }</li> <li>&nbsp;</li> <li style="background: #f3f3f3">&nbsp;</li> <li>    [<span style="color:#2b91af">IntegerValidator</span>(MinValue=1, MaxValue=64000, ExcludeRange=<span style="color:#0000ff">false</span>)]</li> <li style="background: #f3f3f3">    <span style="color:#0000ff">public</span> <span style="color:#0000ff">int</span> WebServerPort</li> <li>    {</li> <li style="background: #f3f3f3">        <span style="color:#0000ff">get</span> { <span style="color:#0000ff">return</span> (<span style="color:#0000ff">int</span>) <span style="color:#0000ff">this</span>[<span style="color:#a31515">&quot;WebServerPort&quot;</span>]; }</li> <li>        <span style="color:#0000ff">set</span></li> <li style="background: #f3f3f3">        {</li> <li>            ThrowIfReadOnly(<span style="color:#a31515">&quot;WebServerPort&quot;</span>);</li> <li style="background: #f3f3f3">            <span style="color:#0000ff">this</span>[<span style="color:#a31515">&quot;WebServerPort&quot;</span>] = <span style="color:#0000ff">value</span>;</li> <li>        }</li> <li style="background: #f3f3f3">    }</li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> WebApplicationRootName </li> <li>    {</li> <li style="background: #f3f3f3">        <span style="color:#0000ff">get</span> { <span style="color:#0000ff">return</span> (<span style="color:#0000ff">string</span>)<span style="color:#0000ff">this</span>[<span style="color:#a31515">&quot;WebApplicationRootName&quot;</span>]; }</li> <li>        <span style="color:#0000ff">set</span></li> <li style="background: #f3f3f3">        {</li> <li>            ThrowIfReadOnly(<span style="color:#a31515">&quot;WebApplicationRootName&quot;</span>);</li> <li style="background: #f3f3f3">            <span style="color:#0000ff">this</span>[<span style="color:#a31515">&quot;WebApplicationRootName&quot;</span>] = <span style="color:#0000ff">value</span>;</li> <li>        }</li> <li style="background: #f3f3f3">    }</li> <li>&nbsp;</li> <li style="background: #f3f3f3">}</li> </ol> </div> </div> </div> </p>  <p>You’ll need to add a reference to the System.Configuration assembly for that to work. Adding annotations to validate the properties would also be a good idea. </p>  <p>Then I added the custom elements to my app.config file (which I added to my test project):</p>  <p>   <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c13f9fd4-f023-4258-9104-75793f7bd98c" class="wlWriterEditableSmartContent"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">App.Config</div> <div style="background: #ddd; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"> <li><span style="color:#0000ff">&lt;?</span><span style="color:#a31515">xml</span><span style="color:#0000ff"> </span><span style="color:#ff0000">version</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">1.0</span>&quot;<span style="color:#0000ff">?&gt;</span></li> <li style="background: #f3f3f3"><span style="color:#0000ff">&lt;</span><span style="color:#a31515">configuration</span><span style="color:#0000ff">&gt;</span></li> <li>  <span style="color:#0000ff">&lt;</span><span style="color:#a31515">configSections</span><span style="color:#0000ff">&gt;</span></li> <li style="background: #f3f3f3">    <span style="color:#0000ff">&lt;</span><span style="color:#a31515">section</span><span style="color:#0000ff"> </span><span style="color:#ff0000">name</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">TestSiteConfigurationData</span>&quot;<span style="color:#0000ff"> </span></li> <li>             <span style="color:#0000ff"></span><span style="color:#ff0000">type</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">Ordermanagement.web.uitest.TestSiteConfigurationData, Ordermanagement.web.uitest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</span>&quot;</li> <li style="background: #f3f3f3">             <span style="color:#0000ff"></span><span style="color:#ff0000">allowExeDefinition</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">MachineToApplication</span>&quot;<span style="color:#0000ff"> </span><span style="color:#ff0000">restartOnExternalChanges</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">true</span>&quot;<span style="color:#0000ff">/&gt;</span></li> <li>  <span style="color:#0000ff">&lt;/</span><span style="color:#a31515">configSections</span><span style="color:#0000ff">&gt;</span></li> <li style="background: #f3f3f3">  <span style="color:#0000ff">&lt;!--</span><span style="color:#008000">&lt;TestSiteConfigurationData WebServerName=&quot;ordermanagement.hol.net&quot; WebServerPort=&quot;80&quot; WebApplicationRootName=&quot;&quot; /&gt;</span><span style="color:#0000ff">--&gt;</span></li> <li>  <span style="color:#0000ff">&lt;</span><span style="color:#a31515">TestSiteConfigurationData</span><span style="color:#0000ff"> </span><span style="color:#ff0000">WebServerName</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">ordermgtweb.hol.net</span>&quot;<span style="color:#0000ff"> </span><span style="color:#ff0000">WebServerPort</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">80</span>&quot;<span style="color:#0000ff"> </span><span style="color:#ff0000">WebApplicationRootName</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">OrderManagementWeb</span>&quot;<span style="color:#0000ff"> /&gt;</span></li> <li style="background: #f3f3f3"><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">configuration</span><span style="color:#0000ff">&gt;</span></li> </ol> </div> </div> </div> </p>  <p>The “type” attribute is “[Configuration Class], [assembly holding your extension without the dll/exe suffix], [version], [culture], [key]”. </p>  <p>Next, I created a helper class to format the URL for me:</p>  <p>   <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:431c8733-c90d-44ce-a806-c5808ade3472" class="wlWriterEditableSmartContent"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Helper Class</div> <div style="background: #ddd; overflow: auto"> <ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"> <li> <span style="color:#0000ff">public</span> <span style="color:#0000ff">class</span> <span style="color:#2b91af">TestSiteConfigurationHelper</span></li> <li style="background: #f3f3f3"> {</li> <li>     <span style="color:#2b91af">TestSiteConfigurationData</span> config;</li> <li style="background: #f3f3f3">&nbsp;</li> <li>     <span style="color:#0000ff">public</span> <span style="color:#2b91af">TestSiteConfigurationData</span> Config</li> <li style="background: #f3f3f3">     {</li> <li>         <span style="color:#0000ff">get</span> { <span style="color:#0000ff">return</span> config; }</li> <li style="background: #f3f3f3">         <span style="color:#0000ff">set</span> { config = <span style="color:#0000ff">value</span>; }</li> <li>     }</li> <li style="background: #f3f3f3">&nbsp;</li> <li>     <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> RootUrl</li> <li style="background: #f3f3f3">     {</li> <li>         <span style="color:#0000ff">get</span></li> <li style="background: #f3f3f3">         {</li> <li>             <span style="color:#2b91af">UriBuilder</span> urlBuilder = <span style="color:#0000ff">new</span> <span style="color:#2b91af">UriBuilder</span>();</li> <li style="background: #f3f3f3">             urlBuilder.Host = config.WebServerName;</li> <li>             urlBuilder.Port = config.WebServerPort; </li> <li style="background: #f3f3f3">             urlBuilder.Path = config.WebApplicationRootName;</li> <li>             <span style="color:#0000ff">return</span> urlBuilder.Uri.ToString();</li> <li style="background: #f3f3f3">         }</li> <li>     }</li> <li style="background: #f3f3f3">&nbsp;</li> <li>     <span style="color:#0000ff">public</span> TestSiteConfigurationHelper()</li> <li style="background: #f3f3f3">     {</li> <li>         config = (<span style="color:#2b91af">TestSiteConfigurationData</span>)System.Configuration.<span style="color:#2b91af">ConfigurationManager</span>.GetSection(<span style="color:#a31515">&quot;TestSiteConfigurationData&quot;</span>);</li> <li style="background: #f3f3f3">     }</li> <li> }</li> </ol> </div> </div> </div> </p>  <p>And I called the helper class to replace the recorded URL with the configured one (see lines 1 and 7 below):</p>  <p>   <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8fede388-9612-4a4b-b889-f44166a35b84" class="wlWriterEditableSmartContent"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Updated Coded UI block</div> <div style="background: #ddd; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"> <li> <span style="color:#2b91af">TestSiteConfigurationHelper</span> configHelper = <span style="color:#0000ff">new</span> <span style="color:#2b91af">TestSiteConfigurationHelper</span>();</li> <li style="background: #f3f3f3"> <span style="color:#008000">// To generate code for this test, select &quot;Generate Code for Coded UI Test&quot; from the shortcut menu and select one of the menu items.</span></li> <li> <span style="color:#008000">// For more information on generated code, see go.microsoft.com/fwlink/?LinkId=179463</span></li> <li style="background: #f3f3f3"> <span style="color:#0000ff">this</span>.UIMap.LaunchBrowser();</li> <li>&nbsp;</li> <li style="background: #f3f3f3"> <span style="color:#008000">//override url</span></li> <li> <span style="color:#0000ff">this</span>.UIMap.NavigatetohttpordermgtholnetParams.UIBlankPageWindowsInteWindowUrl = configHelper.RootUrl; <span style="color:#008000">//default &quot;ordermanagement.hol.net/&quot;; </span></li> <li style="background: #f3f3f3"> <span style="color:#0000ff">this</span>.UIMap.Navigatetohttpordermgtholnet();</li> <li>&nbsp;</li> <li style="background: #f3f3f3"> <span style="color:#0000ff">this</span>.UIMap.ClickonLoginlink();</li> <li> <span style="color:#0000ff">this</span>.UIMap.LoginasusernameusernamepasswordpasswordParams.UIUsernameEditText = TestContext.DataRow[<span style="color:#a31515">&quot;username&quot;</span>].ToString();</li> <li style="background: #f3f3f3"> <span style="color:#0000ff">this</span>.UIMap.LoginasusernameusernamepasswordpasswordParams.UIPasswordEditPassword = <span style="color:#2b91af">Playback</span>.EncryptText(TestContext.DataRow[<span style="color:#a31515">&quot;password&quot;</span>].ToString());</li> <li> <span style="color:#0000ff">this</span>.UIMap.Loginasusernameusernamepasswordpassword();</li> </ol> </div> </div> </div> </p>        <p>There are more properties you’d want to overload, but I haven’t done that here. Vishal Joshi has a <a href="vishaljoshi.blogspot.com/2010/05/applying-xdt-magic-to-appconfig.html">blog post</a> that describes how to transform the app.config file for different build configurations, and that’s something else I’d like to do. </p>  <p>Some housekeeping is probably a good idea, but this is just a simple example.</p>]]></content:encoded>
    </item>
    <item>
      <title>Opening minidumps in Visual Studio—what to do when you get a “You cannot debug a 64-bit dump of a 32-bit prcess, you must collect a 32-bit dump of a 32-bit process”</title>
      <link>https://docs.microsoft.com/archive/blogs/dscruggs/opening-minidumps-in-visual-studiowhat-to-do-when-you-get-a-you-cannot-debug-a-64-bit-dump-of-a-32-bit-prcess-you-must-collect-a-32-bit-dump-of-a-32-bit-process</link>
      <pubDate>Tue, 19 Jul 2011 06:29:39 GMT</pubDate>
      <dc:creator><![CDATA[David Scruggs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dscruggs/2011/07/19/opening-minidumps-in-visual-studiowhat-to-do-when-you-get-a-you-cannot-debug-a-64-bit-dump-of-a-32-bit-prcess-you-must-collect-a-32-bit-dump-of-a-32-bit-process/</guid>
      <description><![CDATA[John Robbins has a few tips on collecting minidumps in a blog post. Unfortunately,&#160; you...]]></description>
      <content:encoded><![CDATA[<p>John Robbins has a few tips on collecting minidumps <a href="www.wintellect.com/CS/blogs/jrobbins/archive/2010/06/17/how-to-capture-a-minidump-let-me-count-the-ways.aspx">in a blog post</a>. Unfortunately,&#160; you typically can’t debug a .NET mindump created on a 64-bit machine by Process Explorer or Task Manager. Satish Arvati describes how to get a 32-bit version of Task Manager launched on a 64-bit machine <a href="blogs.technet.com/b/sateesh-arveti/archive/2011/07/10/easier-way-to-collect-dumps-of-32-bit-process-on-64-bit-server.aspx">here</a>, and that solves the problems, but it’s a bit annoying. </p>  <p>Nicely, the SysInternals <a href="https://technet.microsoft.com/en-us/sysinternals/dd996900.aspx">ProcDump</a> tool gives you a 32-bit minidump by default, or you can ask it to give you a 64-bit minidump. Nicely, you can attach it to the process and have it write a log automatically when the process hangs for 5 seconds, like</p>  <blockquote>   <p><strong>C:\&gt;procdump -h hang.exe hungwindow.dmp</strong></p> </blockquote>  <p>It helped me out yesterday. </p>]]></content:encoded>
    </item>
    <item>
      <title>Ways to associate a host name with your machine</title>
      <link>https://docs.microsoft.com/archive/blogs/dscruggs/ways-to-associate-a-host-name-with-your-machine</link>
      <pubDate>Thu, 14 Jul 2011 14:09:47 GMT</pubDate>
      <dc:creator><![CDATA[David Scruggs]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dscruggs/2011/07/14/ways-to-associate-a-host-name-with-your-machine/</guid>
      <description><![CDATA[I show a lot of web applications on my laptop. One of the nice things about IIS is that you can have...]]></description>
      <content:encoded><![CDATA[<p>I show a lot of web applications on my laptop. One of the nice things about IIS is that you can have multiple host names associated with your machine (like “www.contoso.com” and “ftp.contoso.com” and “finance.contoso.com”), but you can have several sites that only respond to each name.</p>  <p>First, you can add the alias to your machine by using the command-line tool “netdom” and then updating your DNS records:</p>  <blockquote>   <p>C:\&gt; NETDOM COMPUTERNAME &lt;primary machine name&gt; /Add &lt;newname.domain.com&gt;</p>    <p>C:\&gt;IPCONFIG /REGISTERDNS</p> </blockquote>  <p>There are other options described at “<a href="blogs.technet.com/b/chrad/archive/2009/11/09/adding-iis-host-headers-in-dns-using-netdom-utliity.aspx">Adding IIS Host Headers in DNS using Netdom utliity</a>” and “<a href="blogs.technet.com/b/josebda/archive/2010/06/04/multiple-names-for-one-computer-consolidate-your-smb-file-servers-without-breaking-unc-paths.aspx">Multiple names for one computer - Consolidate your SMB file servers without breaking UNC paths</a>”. </p>  <p>Then you go into the IIS Console, create a new site, and set the site binding to use the new host name</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/77/23/metablogapi/6406.image_42475BFE.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/6406.image_5F00_42475BFE.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 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/77/23/metablogapi/7178.image_thumb_4CB80A51.png" original-url="blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-23-metablogapi/7178.image_5F00_thumb_5F00_4CB80A51.png" width="487" height="267" /></a></p>]]></content:encoded>
    </item>
  </channel>
</rss>