<?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>John R. Spinella Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/jrspinella/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/jrspinella/feed.xml</link>
    <description>ALM, TFS and everything in between...</description>
    <lastBuildDate>Tue, 16 Apr 2019 05:15:05 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Using PowerShell to implement a Farm-wide Global Navigation solution from the Managed Metadata Term Store in SharePoint 2013</title>
      <link>https://docs.microsoft.com/archive/blogs/jrspinella/using-powershell-to-implement-a-farm-wide-global-navigation-solution-from-the-managed-metadata-term-store-in-sharepoint-2013</link>
      <pubDate>Thu, 04 May 2017 00:44:11 GMT</pubDate>
      <dc:creator><![CDATA[John R. Spinella]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jrspinella/?p=285</guid>
      <description><![CDATA[Co-Written by John R. Spinella &amp; Daniel Setlock

We had a requirement at a customer to provide...]]></description>
      <content:encoded><![CDATA[<strong>Co-Written by John R. Spinella &amp; Daniel Setlock</strong>

We had a requirement at a customer to provide unified Global Navigation across their SharePoint 2013 farm, ideally that was fed through the Term Store they had already developed within the Managed Metadata Service. It was a struggle to find a solution that was easy enough to maintain, and provided the experience that users desired, and we thought others might like to take advantage of it.

The purpose of this post is to demonstrate how to export the Managed Metadata Term Store via PowerShell to a SiteMap, and import that SiteMap into a multi-tiered dropdown into the Structured Navigation within SharePoint through a code-less method.

It is possible to use the Term Store to push Global Navigation across Site Collections within SharePoint, however anyone who has attempted it has likely run into issues. The most common being that it is possible to pin a term set to a Site Collection, but only a single Site Collection. You can pin the same Term Set, however that provides a read-only copy, and the link in the navigation is not updated when the link is updated within the Term Store. It is possible to have multiple Term Sets, each for a different part of the organization, however it is less friendly to use a single Term Set across all of the Site

<a href="https://msdnshared.blob.core.windows.net/media/2017/05/11.png"><img width="261" height="300" class="alignnone size-medium wp-image-295" alt="1" src="https://msdnshared.blob.core.windows.net/media/2017/05/11-261x300.png" /></a>

<span style="color: #000000;font-family: Calibri">It is a few clicks to provide the Human Resources Site Collection with its own navigation, same with Legal, and so forth. However once on the Human Resources Site Collection, via the traditional method, you would lose the links to Legal, IT, and Finance. The goal is to provide a single navigation across all Site Collections, at the top level (Term Set) to provide access to Terms, and child terms, without the need to copy Terms around, or pin read-only terms. </span>

<span style="color: #000000;font-family: Calibri">There are solutions involving managed code and master page modifications to introduce Global Navigation, however most often this involve injecting the navigation into the SuiteLinks bar and presents its own challenges, and is not what users have come to expect in SharePoint. </span>

<span style="color: #000000;font-family: Calibri">To start, a Term Set needs to be created as if it was going to be used in a single location, much like the example above. A link to the proper location needs to be included (Navigation Tab &gt; Simple Link or Header) for each of the terms. </span>

<span style="color: #000000;font-family: Calibri">Once a Term Set has been created, it is time to export it as an xml document via PowerShell. </span>

<span style="color: #000000;font-family: Calibri"> </span><span><span style="font-family: Calibri Light;font-size: large">Exporting the Term Set</span></span><span style="color: #000000;font-family: Calibri"> </span>

<span style="color: #000000;font-family: Calibri">The script below is modified from a posting by Alan Parsons found </span><a href="https://sharepap.blogspot.co.uk/2013/01/exporting-and-importing-managed.html"><span style="color: #0563c1;font-family: Calibri">here</span></a><span style="color: #000000;font-family: Calibri">. </span>

<span style="margin: 0px;color: blue;font-family: 'Lucida Console';font-size: 8pt">Add-PSSnapin</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>“Microsoft.SharePoint.Powershell”</span><span style="color: #000000"> </span><span>–ErrorAction</span><span style="color: #000000"> </span><span>SilentlyContinue</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span></span><span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt">#Variables start
</span><span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$siteUrl</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>'https://SharePoint2013'</span><span style="color: #000000"> </span><span>#Update your site URL
</span></span><span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$termSetStoreDesc</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>'Managed Metadata Service Application'</span><span style="color: #000000"> </span><span>#Ensure you type your MMS correctly
</span></span><span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$groupDesc</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>'GlobalNavigation'</span><span style="color: #000000"> </span><span>#Replace with your Group Name
</span></span><span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$termSetName</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>'Global Navigation'</span><span style="color: #000000"> </span><span>#Replace with your Term Set name
</span></span><span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$saveLoc</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>'C:\temp\navigation\Nav.xml'</span><span style="color: #000000"> </span><span>#Update your directory here
</span></span><span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$session</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>new-object</span><span style="color: #000000"> </span><span>Microsoft.SharePoint.Taxonomy.TaxonomySession</span><span style="color: #000000">(</span><span>$siteUrl</span><span style="color: #000000">)
</span></span><span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$LocalProperty</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>'_Sys_Nav_SimpleLinkUrl'</span></span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$XML</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>''
</span></span><span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt">#Variables end</span>

<span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt">#Functions start
</span><span style="margin: 0px;color: darkblue;font-family: 'Lucida Console';font-size: 8pt">function</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>buildNode</span><span style="color: #000000"> (</span><span>$myTerm</span><span style="color: #000000">)
{
</span></span>

<span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt">#Write-Output $myTerm.LocalCustomProperties['_Sys_Nav_ExcludedProviders']</span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">   </span></span><span>$myXML</span><span style="color: #000000"> </span><span>+=</span><span style="color: #000000"> </span><span>'</span></span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>        </span>&lt;Node Id="" Title="'</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>+</span><span style="color: #000000"> </span><span>$myTerm</span><span>.</span><span style="color: #000000">Name </span><span>+</span><span style="color: #000000"> </span><span>'" IsVisible="'</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">   </span></span><span>If</span><span style="color: #000000"> (</span><span>$myTerm</span><span>.</span><span style="color: #000000">LocalCustomProperties</span><span>.</span><span style="color: #000000">ContainsKey(</span><span>'_Sys_Nav_ExcludedProviders'</span><span style="color: #000000">))</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">   </span></span><span style="color: #000000">{</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">      </span></span><span>$myXML</span><span style="color: #000000"> </span><span>+=</span><span style="color: #000000"> (</span><span>-not</span><span style="color: #000000">(</span><span>$myTerm</span><span>.</span><span style="color: #000000">LocalCustomProperties</span><span>.</span><span style="color: #000000">_Sys_Nav_ExcludedProviders</span><span>.</span><span style="color: #000000">Contains(</span><span>'GlobalNavigationTaxonomyProvider'</span><span style="color: #000000">)))</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">   </span></span><span style="color: #000000">}</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">   </span></span><span>Else</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">   </span></span><span style="color: #000000">{</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">      </span></span><span>$myXML</span><span style="color: #000000"> </span><span>+=</span><span style="color: #000000"> </span><span>$true</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">   </span></span><span style="color: #000000">}</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">   </span></span><span>$myXML</span><span style="color: #000000"> </span><span>+=</span><span style="color: #000000"> </span><span>'"&gt;</span></span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>          </span>&lt;Url&gt;'</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>+</span><span style="color: #000000"> </span><span>$myTerm</span><span>.</span><span style="color: #000000">LocalCustomProperties</span><span>[</span><span>'_Sys_Nav_SimpleLinkUrl'</span><span>]</span><span style="color: #000000"> </span><span>+</span><span style="color: #000000"> </span><span>'&lt;/Url&gt;</span></span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>          </span>&lt;CreatedDate&gt;'</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>+</span><span style="color: #000000"> </span><span>$myTerm</span><span>.</span><span style="color: #000000">CreatedDate </span><span>+</span><span style="color: #000000"> </span><span>'&lt;/CreatedDate&gt;</span></span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>      </span><span>    </span>&lt;Description&gt;&lt;/Description&gt;</span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>          </span>&lt;UrlFragment&gt;&lt;/UrlFragment&gt;</span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>          </span>&lt;vti_navsequencechild&gt;true&lt;/vti_navsequencechild&gt;</span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>          </span>&lt;UrlQueryString&gt;&lt;/UrlQueryString&gt;</span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>          </span>&lt;NodeType&gt;Heading&lt;/NodeType&gt;</span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>          </span>&lt;LastModifiedDate&gt;'</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>+</span><span style="color: #000000"> </span><span>$myTerm</span><span>.</span><span style="color: #000000">LastModifiedDate </span><span>+</span><span style="color: #000000"> </span><span>'&lt;/LastModifiedDate&gt;</span></span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>         </span>'</span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">   </span></span><span>If</span><span style="color: #000000"> (</span><span>$myTerm</span><span>.</span><span style="color: #000000">TermsCount </span><span>–gt</span><span style="color: #000000"> </span><span>0</span><span style="color: #000000">)</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">   </span></span><span style="color: #000000">{</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">      </span></span><span>Foreach</span><span style="color: #000000"> (</span><span>$term</span><span style="color: #000000"> </span><span>in</span><span style="color: #000000"> </span><span>$myTerm</span><span>.</span><span style="color: #000000">Terms)</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">      </span></span><span style="color: #000000">{</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">         </span></span><span>$myXML</span><span style="color: #000000"> </span><span>+=</span><span style="color: #000000"> </span><span>buildNode</span><span style="color: #000000"> (</span><span>$term</span><span style="color: #000000">)</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">      </span></span><span style="color: #000000">}</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">   </span></span><span style="color: #000000">}</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">   </span></span><span>$myXML</span><span style="color: #000000"> </span><span>+=</span><span style="color: #000000"> </span><span>'&lt;/Node&gt;</span></span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>        </span>'</span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">   </span></span><span>return</span><span style="color: #000000"> </span><span>$myXML</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000">}</span></span>

<span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt">#Functions end</span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span></span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$termStore</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>$session</span><span>.</span><span style="color: #000000">TermStores</span><span>[</span><span>$termSetStoreDesc</span><span>]
</span></span><span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$group</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>$termStore</span><span>.</span><span style="color: #000000">Groups</span><span>[</span><span>$groupDesc</span><span>]</span><span style="color: #000000"> </span><span># | Where-Object {$_.Name -like "Global Navigation"}
</span></span><span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$termSet</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>$group</span><span>.</span><span style="color: #000000">TermSets</span><span>[</span><span>$termSetName</span><span>]
</span></span><span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$terms</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>$termSet</span><span>.</span><span style="color: #000000">GetTerms(</span><span>200</span><span style="color: #000000">)</span></span>

<span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt">#Update your Site and Server Relative URLs - This print at the top of the XML Document
</span><span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$XML</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>'&lt;Site url="https://SharePoint2013"&gt;
</span></span><span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>  </span>&lt;Web serverRelativeUrl="/"&gt;
</span><span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>    </span>&lt;Navigation&gt;
</span><span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>      </span>&lt;Global IncludeSubSites="False" IncludePages="False"&gt;</span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>        </span>'
</span><span style="margin: 0px;color: darkblue;font-family: 'Lucida Console';font-size: 8pt">Foreach</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> (</span><span>$term</span><span style="color: #000000"> </span><span>in</span><span style="color: #000000"> </span><span>$terms</span><span style="color: #000000">)</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000">{</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">    </span></span><span>$XML</span><span style="color: #000000"> </span><span>+=</span><span style="color: #000000"> (</span><span>buildNode</span><span style="color: #000000"> </span><span>$term</span><span style="color: #000000">)</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000">}</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span></span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$XML</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>+=</span><span style="color: #000000"> </span></span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt">'<span>     </span>&lt;/Global&gt;</span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>    </span>&lt;/Navigation&gt;</span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt"><span>  </span>&lt;/Web&gt;</span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt">&lt;/Site&gt;</span>

<span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt">'</span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$XML</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>|</span><span style="color: #000000"> </span><span>out-File</span><span style="color: #000000"> </span><span>–FilePath</span><span style="color: #000000"> </span><span>$saveLoc </span></span>

<span><span style="color: #000000;font-family: Calibri"> </span></span>

<span style="color: #000000;font-family: Calibri">The key to the script above is that it creates the Navigation NodeType as a ‘Heading’, rather than a link. The ‘Heading’ NodeType allows for additional nested navigational objects, whereas ‘Links’ do not. However, when viewing the Structured Navigation (Via the GUI) under Navigation in Site Settings, it is not possible to nest Headings, you must do this programmatically. As a result, you cannot add additional items under the navigation once it is in place, and you would have to remove the navigation and run the scripts again. </span>

<span style="color: #000000;font-family: Calibri">With that you should have an exported SiteMap file that looks something like the below image:</span>

<a href="https://msdnshared.blob.core.windows.net/media/2017/05/21.png"><img width="300" height="244" class="alignnone size-medium wp-image-305" alt="2" src="https://msdnshared.blob.core.windows.net/media/2017/05/21-300x244.png" /></a>

<span style="color: #000000;font-family: Calibri">Please note that the URLs in this example are all set to the same via the Managed Metadata Service Application, yours will be different and unique.</span>

<span style="color: #000000;font-family: Calibri"> <span style="font-family: Calibri Light;font-size: large">Importing the SiteMap</span></span><span style="color: #000000;font-family: Calibri"> </span>

<span style="color: #000000;font-family: Calibri">Once you have the XML file available, the next step is to import it. We did this through using the ‘Import-SPNavigation’ cmdlet. This is a custom cmdlet available via Aptillion that we already had installed, and is available at Github </span><a href="https://github.com/glapointe/PowerShell-SPCmdlets/releases"><span style="color: #0563c1;font-family: Calibri">here</span></a><span style="color: #000000;font-family: Calibri">. </span>

<span style="color: #000000;font-family: Calibri">The script to iterate through the SharePoint farm and enforce the global navigation is as follows. It consumes the XML SiteMap generated in the previous script, and is targeted to a Web Application. </span>

<span style="margin: 0px;color: blue;font-family: 'Lucida Console';font-size: 8pt">Add-PSSnapin</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>Microsoft.SharePoint.Powershell</span><span style="color: #000000"> </span><span>–ErrorAction</span><span style="color: #000000"> </span><span>SilentlyContinue</span></span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$path</span><span style="margin: 0px;color: darkgray;font-family: 'Lucida Console';font-size: 8pt">=</span><span style="margin: 0px;color: darkred;font-family: 'Lucida Console';font-size: 8pt">"C:\temp\nav.xml"</span>

<span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt">#$path2="C:\temp\nav.xml"</span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$sites</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>Get-SPSite</span><span style="color: #000000"> </span><span>-limit</span><span style="color: #000000"> </span><span>all</span><span style="color: #000000"> </span><span>-WebApplication</span><span style="color: #000000"> </span><span>https://sharepoint2013</span><span style="color: #000000"> </span><span>|</span><span style="color: #000000"> </span><span>?</span><span style="color: #000000"> {</span><span>$_</span><span>.</span><span style="color: #000000">Url </span><span>-notlike</span><span style="color: #000000"> </span><span>"*/personal/*"</span><span style="color: #000000">} </span><span>|</span><span>Get-SPWeb</span><span style="color: #000000"> </span><span>-Limit</span><span style="color: #000000"> </span><span>All</span><span style="color: #000000"> </span></span>

<span style="margin: 0px;color: darkblue;font-family: 'Lucida Console';font-size: 8pt">ForEach</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> (</span><span>$sites</span><span style="color: #000000"> </span><span>in</span><span style="color: #000000"> </span><span>$Sites</span><span style="color: #000000">)</span><span><span style="color: #000000">            </span></span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000">{</span><span><span style="color: #000000">   </span></span></span>

<span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt"># The URL to the Site<span>           </span></span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$spWeb</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>$sites</span><span>.</span><span style="color: #000000">url</span></span>

<span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt">#Relative url<span>         </span></span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$relativeUrl</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>$sites</span><span>.</span><span style="color: #000000">ServerRelativeUrl </span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span></span>

<span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt">#Get Global Nav XML and write new file based on current site</span>

<span style="margin: 0px;color: darkgray;font-family: 'Lucida Console';font-size: 8pt">[</span><span style="margin: 0px;color: teal;font-family: 'Lucida Console';font-size: 8pt">xml</span><span style="margin: 0px;color: darkgray;font-family: 'Lucida Console';font-size: 8pt">]</span><span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$XmlDocument</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>Get-Content</span><span style="color: #000000"> </span><span>-path</span><span style="color: #000000"> </span><span>$path</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span></span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$XmlDocument</span><span style="margin: 0px;color: darkgray;font-family: 'Lucida Console';font-size: 8pt">.</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000">Site</span></span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$XmlDocument</span><span style="margin: 0px;color: darkgray;font-family: 'Lucida Console';font-size: 8pt">.</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000">site</span><span>.</span><span style="color: #000000">url </span><span>=</span><span style="color: #000000"> </span><span>$spweb</span></span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$xmldocument</span><span style="margin: 0px;color: darkgray;font-family: 'Lucida Console';font-size: 8pt">.</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000">site</span><span>.</span><span style="color: #000000">Web</span><span>.</span><span style="color: #000000">serverRelativeUrl </span><span>=</span><span>$relativeUrl</span></span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$XmlDocument</span><span style="margin: 0px;color: darkgray;font-family: 'Lucida Console';font-size: 8pt">.</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000">Save(</span><span>$path</span><span style="color: #000000">)</span></span>

<span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt">#Import new Global Nav</span>

<span style="margin: 0px;color: blue;font-family: 'Lucida Console';font-size: 8pt">Get-SPWeb</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>$sites</span><span>.</span><span style="color: #000000">url </span><span>|</span><span style="color: #000000"> </span><span>Import-SPNavigation</span><span style="color: #000000"> </span><span>-InputFile</span><span style="color: #000000"> </span><span>$path</span><span style="color: #000000"> </span><span>-ErrorAction</span><span style="color: #000000"> </span><span>SilentlyContinue</span></span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$sites</span><span style="margin: 0px;color: darkgray;font-family: 'Lucida Console';font-size: 8pt">.</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000">Dispose()} </span></span><span style="color: #000000;font-family: Calibri"> </span>

<span style="color: #000000;font-family: Calibri">After that has been completed, you should see Structured Navigation within the Webs that looks like the following:</span>

<a href="https://msdnshared.blob.core.windows.net/media/2017/05/31.png"><img width="300" height="230" class="alignnone size-medium wp-image-315" alt="3" src="https://msdnshared.blob.core.windows.net/media/2017/05/31-300x230.png" /></a>

<span style="margin: 0px;line-height: 107%;font-family: 'Calibri',sans-serif;font-size: 11pt"><span style="color: #000000">Note that all objects are folders, which indicate a heading, rather than a link. If you have a navigation that extends past two tiers, you cannot see them on this screen, however they will be represented on the Global Navigation across the sites, as shown below.</span></span>

<a href="https://msdnshared.blob.core.windows.net/media/2017/05/41.png"><img width="300" height="69" class="alignnone size-medium wp-image-325" alt="4" src="https://msdnshared.blob.core.windows.net/media/2017/05/41-300x69.png" /></a>
<h2><span style="font-family: Calibri Light;font-size: large">Updating the drop-down levels</span><span style="color: #000000;font-family: Calibri"> </span></h2>
<span style="color: #000000;font-family: Calibri">If you need to extend the drop-down list past the first fly-out, you would need to modify the masterpage. In general, the ‘MaximumDynamicDisplayLevels is set to ‘2’, which would display as shown above. If you needed a ‘Finance Sub Sub Sub Office 1’ you would need to update the value to 3, or do 4 for good measure.</span>

<a href="https://msdnshared.blob.core.windows.net/media/2017/05/51.png"><img width="300" height="129" class="alignnone size-medium wp-image-335" alt="5" src="https://msdnshared.blob.core.windows.net/media/2017/05/51-300x129.png" /></a>
<h2><span><span style="font-family: Calibri Light;font-size: large">Additional Styling</span></span></h2>
<span style="color: #000000;font-family: Calibri">Depending on the length of the first-tier terms, it may cause child terms to wrap on the navigation as shown below.</span>

<a href="https://msdnshared.blob.core.windows.net/media/2017/05/6.png"><img width="300" height="105" class="alignnone size-medium wp-image-345" alt="6" src="https://msdnshared.blob.core.windows.net/media/2017/05/6-300x105.png" /></a>

<span style="color: #000000;font-family: Calibri">If this becomes an issue, adding the following styles to the masterpage /stylesheet would provide the appropriate width for navigation as seen previously in the post.</span>

<span>ul.dynamic</span><span> {</span>

<span>  </span><span>width</span><span>: </span><span>auto</span><span> </span><span>!important</span><span>;  </span>

<span>  </span><span>white-space</span><span>: </span><span>nowrap</span><span>;</span>

<span>}</span>

<span> </span>

<span style="color: #000000;font-family: Calibri">Or</span>

<span> </span>

<span>ul.dynamic</span><span> {</span>

<span>  </span><span>width</span><span>: </span><span>300px</span><span> </span><span>!important</span><span>; </span>

<span>  </span><span>white-space</span><span>: </span><span>nowrap</span><span>;</span>

<span>}</span>

<span style="color: #000000;font-family: Calibri"> </span>
<h2><span><span style="font-family: Calibri Light;font-size: large">Delete Structured Navigation</span></span></h2>
<span style="color: #000000;font-family: Calibri">It is possible to put the scripts on a PowerShell scheduled task to enforce Global Navigation, and it would be possible to delete the current navigation within the population script. If it is necessary to delete the navigation across the SharePoint farm, the script below can be utilized. </span>

<span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt">#It may be necessary to run this multiple times to completely clean out navigation</span>

<span style="margin: 0px;color: blue;font-family: 'Lucida Console';font-size: 8pt">Add-PSSnapin</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>“Microsoft.SharePoint.Powershell”</span><span style="color: #000000"> </span><span>–ErrorAction</span><span style="color: #000000"> </span><span>SilentlyContinue</span></span>

<span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt">#Update the identity with your own Web Application</span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span></span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$Sites</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> </span><span>=</span><span style="color: #000000"> </span><span>Get-SPWebApplication</span><span style="color: #000000"> </span><span>-Identity</span><span style="color: #000000"> </span><span>https://SharePoint2013</span><span style="color: #000000"> </span><span>|</span><span style="color: #000000"> </span><span>Get-SPSite</span><span style="color: #000000"> </span><span>-Limit</span><span style="color: #000000"> </span><span>All</span><span style="color: #000000"> </span><span>|</span><span style="color: #000000"> </span><span>Get-SPWeb</span><span style="color: #000000"> </span><span>-Limit</span><span style="color: #000000"> </span><span>all</span></span>

<span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt">#Iterate through sites</span>

<span style="margin: 0px;color: darkblue;font-family: 'Lucida Console';font-size: 8pt">ForEach</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000"> (</span><span>$site</span><span style="color: #000000"> </span><span>in</span><span style="color: #000000"> </span><span>$Sites</span><span style="color: #000000">)</span><span><span style="color: #000000">            </span></span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000">{</span><span><span style="color: #000000">   </span></span></span>

<span style="margin: 0px;color: darkgreen;font-family: 'Lucida Console';font-size: 8pt">#Iterate through webs</span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">    </span></span><span>ForEach</span><span style="color: #000000"> (</span><span>$web</span><span style="color: #000000"> </span><span>in</span><span style="color: #000000"> </span><span>$site</span><span style="color: #000000">)</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">    </span></span><span style="color: #000000">{</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">      </span></span><span>#Delete existing navigation</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">        </span></span><span>Foreach</span><span style="color: #000000">(</span><span>$node</span><span style="color: #000000"> </span><span>in</span><span style="color: #000000"> (</span><span>$web</span><span>.</span><span style="color: #000000">Navigation</span><span>.</span><span style="color: #000000">TopNavigationBar)) </span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">               </span></span><span style="color: #000000">{</span><span><span style="color: #000000">  </span></span><span>write-host</span><span style="color: #000000"> </span><span>$web</span><span>.</span><span style="color: #000000">Title </span><span>"--"</span><span style="color: #000000"> </span><span>"Node title : "</span><span>$node</span><span>.</span><span style="color: #000000">Title </span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">                   </span></span><span>$node</span><span>.</span><span style="color: #000000">Delete() } </span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span><span style="color: #000000">           </span></span><span style="color: #000000">}</span></span>

<span style="margin: 0px;color: orangered;font-family: 'Lucida Console';font-size: 8pt">$sites</span><span style="margin: 0px;color: darkgray;font-family: 'Lucida Console';font-size: 8pt">.</span><span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000">Dispose()</span></span>

<span style="margin: 0px;font-family: 'Lucida Console';font-size: 8pt"><span style="color: #000000">} </span></span>
<h2><span style="color: #000000;font-family: Times New Roman">
</span> <span><span style="font-family: Calibri Light;font-size: large">Conclusion</span></span></h2>
<span style="color: #000000;font-family: Calibri">And that is how you can create a SiteMap through the Term Store, and use that to generate a Farm-wide Global Navigation solution to provide a uniform experience, code-free. </span>

<span style="color: #000000;font-family: Calibri">Depending on the tools and knowledge available to you, there are many ways to accomplish the same thing. It is possible to leverage a custom SiteMap provider, programmatically display the Term Store across multiple Site Collections, create a solution that reads from a list or database, or utilize hardcoded navigation in the masterpage.</span>

<span style="color: #000000;font-family: Calibri">This solved a need for a customer, and based on our experience we thought others could leverage this information to provide similar results. </span>

<span style="color: #000000;font-family: Calibri">Happy Coding! </span>]]></content:encoded>
    </item>
    <item>
      <title>Release Explorer for Visual Studio Beta: Update</title>
      <link>https://docs.microsoft.com/archive/blogs/jrspinella/release-explorer-for-visual-studio-beta-update</link>
      <pubDate>Fri, 29 May 2015 08:07:44 GMT</pubDate>
      <dc:creator><![CDATA[John R. Spinella]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jrspinella/2015/05/29/release-explorer-for-visual-studio-beta-update/</guid>
      <description><![CDATA[Hello,
To give everyone a update, I am currently finishing up the integration of VSO/RMO. With the...]]></description>
      <content:encoded><![CDATA[<p>Hello,</p>
<p>To give everyone a update, I am currently finishing up the integration of VSO/RMO. With the next release of Release Explorer, you will be able to do both on prem and VSO. I am hoping to have this done by the mid to end of June. There are a lot of changes happening with the new version of RM, so I am trying to keep up with that. Check out some screen shot of the updated Release Explorer.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/0508.view14.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/0508.view14.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/0508.view14.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/0508.view14.PNG" alt="" border="0" /></a></p>
<p>VSO version for seeing releases. It is very similar to the on prem version.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/3666.view15.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3666.view15.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/3666.view15.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3666.view15.PNG" alt="" border="0" /></a></p>
<p>New Release Dialog</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/0116.view16.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/0116.view16.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/0116.view16.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/0116.view16.PNG" alt="" border="0" /></a></p>
<p>I am working very hard on this to make this a viable option in the Development/DevOps cycle.</p>
<p>Thanks for all your support!</p>
<p>John</p>]]></content:encoded>
    </item>
    <item>
      <title>Release Explorer for Visual Studio Beta</title>
      <link>https://docs.microsoft.com/archive/blogs/jrspinella/release-explorer-for-visual-studio-beta</link>
      <pubDate>Fri, 06 Mar 2015 12:36:00 GMT</pubDate>
      <dc:creator><![CDATA[John R. Spinella]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jrspinella/2015/03/06/release-explorer-for-visual-studio-beta/</guid>
      <description><![CDATA[For some time now, I have been working on a update to my Deployment Explorer that was built for the...]]></description>
      <content:encoded><![CDATA[<p>For some time now, I have been working on a update to my Deployment Explorer that was built for the project formally known as DevOps. I always get requests from my customers and emails from people who are using the Deployment Explorer to update the explorer to work with Release Mgt. So, I said what the heck and I&rsquo;ll give it a try. This request was more on the side of the developer who does Dev/Test stuff and would like one client to work out of. My intent is not to <em><strong>replace</strong></em> Release Management Client but to enhance the experience.</p>
<p><strong>** THIS IS A BETA PRODUCT, SOME FEATURES MAY NOT WORK CORRECTLY. USE AT YOUR OWN RISK***</strong></p>
<p>Below is how to download it from the Visual Studio Gallery and start using it.</p>
<p><span style="font-size: medium;"><strong>Installation:</strong></span></p>
<p><span style="font-size: small;">First, you will need to go to <a href="https://visualstudiogallery.msdn.microsoft.com/81cdcbeb-7c10-4b3c-8ca6-b23a44777266">https://visualstudiogallery.msdn.microsoft.com/81cdcbeb-7c10-4b3c-8ca6-b23a44777266</a> to download the extension.</span></p>
<p><span style="font-size: medium;"><strong>Using the Explorer:</strong></span></p>
<p><span style="font-size: small;">The following screenshot shows the Team Explorer window when&nbsp;Release Explorer is installed.</span></p>
<p><span style="font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/5518.view1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/5518.view1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/5518.view1.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/5518.view1.png" alt="" width="372" height="272" border="0" /></a></span></p>
<p><span style="font-size: small;">In order for the explorer to work correctly, you will need to add in the Release Management Server details. Go to Options -&gt; Release Explorer -&gt; Settings. You should see this.</span></p>
<p><span style="font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/1882.view5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/1882.view5.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/1882.view5.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/1882.view5.png" alt="" border="0" /></a></span></p>
<p><span style="font-size: small;">Now added in your server details. After that is complete, you can start using the explorer.</span></p>
<p><span style="font-size: small;">To use Release Explorer, simply click Releases. You will see your recent releases. The following screenshot shows an example.</span></p>
<p><span style="font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/7652.view2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/7652.view2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/7652.view2.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/7652.view2.png" alt="" width="435" height="306" border="0" /></a></span></p>
<p><span style="font-size: small;">From Release Explorer, you can select a particular deployment to see release steps and to see the deployment logs. You also can Restart, Abandon or Retry existing releases in the explorer. If you need to return to the Release Management Client, perhaps to fix some errors or to improve the orchestration, click Launch Release Management, under Releases. Check out below for more screenshots.</span></p>
<p><span style="font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/2727.view11.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/2727.view11.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/2727.view11.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/2727.view11.png" alt="" border="0" /></a></span></p>
<p><span style="font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/6888.view6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/6888.view6.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/6888.view6.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/6888.view6.png" alt="" width="433" height="260" border="0" /></a></span></p>
<p><span style="font-size: small;">View release steps, log or restart a release.</span></p>
<p><span style="font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/6013.view3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/6013.view3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/6013.view3.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/6013.view3.png" alt="" width="429" height="358" border="0" /></a></span></p>
<p><span style="font-size: small;">Release Steps</span></p>
<p><span style="font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/3823.view4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3823.view4.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/3823.view4.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3823.view4.png" alt="" border="0" /></a></span></p>
<p><span style="font-size: small;">I also added a Notifications window that allows you to keep track of what is happening with your releases. You can find it at View -&gt; Other&nbsp; Windows -&gt; Release Notifications</span></p>
<p><span style="font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/4617.view10.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/4617.view10.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/4617.view10.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/4617.view10.png" alt="" border="0" /></a></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/3175.view9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3175.view9.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/3175.view9.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3175.view9.png" alt="" border="0" /></a></p>
<p><span style="font-size: small;">New Release Window: This window will allow you to create new vNext release based on you release template, build&nbsp;and current stage.</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/7041.view7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/7041.view7.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/7041.view7.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/7041.view7.png" alt="" width="457" height="639" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/3377.view12.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3377.view12.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/3377.view12.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3377.view12.png" alt="" width="478" height="647" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/0871.view13.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/0871.view13.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/0871.view13.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/0871.view13.png" alt="" width="479" height="578" border="0" /></a></p>
<p><span style="font-size: small;">Select New Build Window. This window allows you to select from&nbsp;a range of builds to include into the release.</span></p>
<p><span style="font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/4331.view8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/4331.view8.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/4331.view8.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/4331.view8.png" alt="" border="0" /></a></span></p>
<p><span style="font-size: small;">Let me know how the explorer is working. I hope this explorer helps you manage your dev/test release better.</span></p>
<p><span style="font-size: small;">Happy Coding!</span></p>
<p><span style="font-size: small;">John</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Dev/Test with Microsoft Azure &amp; Visual Studio 2013</title>
      <link>https://docs.microsoft.com/archive/blogs/jrspinella/devtest-with-microsoft-azure-visual-studio-2013</link>
      <pubDate>Fri, 21 Nov 2014 09:30:00 GMT</pubDate>
      <dc:creator><![CDATA[John R. Spinella]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jrspinella/2014/11/21/devtest-with-microsoft-azure-visual-studio-2013/</guid>
      <description><![CDATA[So, I have been working a lot with customers on DevOps and one of the quick and easy way to achieve...]]></description>
      <content:encoded><![CDATA[<p>So, I have been working a lot with customers on DevOps and one of the quick and easy way to achieve a Dev/Test environment is using Microsoft Azure&nbsp;and Visual Studio.&nbsp;This scenario applies broadly to every type of organization. Whether you&rsquo;re a single developer or a one-person startup getting your mobile app out the door , or a multi-national enterprise with 100,000 + employees, you need a sandbox to build, test, and deploy. You also need a safe, isolated zone in which to do it with. You can count on Microsoft Windows Azure to quickly setup development labs for testing your apps, validating application behaviors, or&nbsp;using the environment for&nbsp;training, and teaching. Provisioning Virtual Machines&nbsp;can take&nbsp;minutes and gives you access to a isolated sandbox&nbsp;that your developers can use right away. Most dev, test, and lab environments are project-based and don&rsquo;t need to be up and running 24/7. When you&rsquo;re done, simply turn your virtual machines off. You pay for what you use and no more. How great is that!</p>
<p>Check out below how to setup you instance&nbsp;of Azure in Visual Studio.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/2068.step%201.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/2068.step-1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/2068.step%201.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/2068.step-1.png" alt="" border="0" /></a></p>
<p>&nbsp;1.&nbsp;Open Internet Explorer and navigate your Windows Azure portal developer site <a href="https://manage.windowsazure.com/">https://manage.windowsazure.com/</a><br />&nbsp;2.&nbsp;In the toolbar at the bottom, click on New | Compute | Virtual Machine | From Gallery&nbsp;Ok, for a change, let&rsquo;s leave the server explorer aside for a moment, and take a look at the portal.<br />&nbsp;3. So, I&rsquo;m going to create a new Virtual machine from our template gallery.</p>
<p>Note:</p>
<p><strong><span style="font-size: x-small;"><em>One of the cool features of Windows Azure is that it allows for a lot of scenarios related to development and test environments.</em></span></strong><br /><strong><span style="font-size: x-small;"><em>and the most flexible option for these scenarios are Virtual machines.</em></span></strong></p>
<p><strong><span style="font-size: x-small;"><em>Windows Azure&rsquo;s new IaaS and Virtual Networking capabilities make it really easy to enable enterprise development teams to use the cloud to do this.&nbsp; Using the cloud for dev/test enables development teams to work in a flexible, agile, way without ever being bottlenecked waiting for resources from their IT department.&nbsp; Development teams can instead use Windows Azure in a self-service way to spin up or down resources in minutes.&nbsp; And then when they are ready to deploy their apps, they can choose to do so either in the cloud or using their existing on-premises servers. This later option makes it really easy to start leveraging the cloud even without having to fully bet on it right away for production scenarios.</em></span></strong></p>
<p><strong><span style="font-size: x-small;"><em><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/2577.step%202.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/2577.step-2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/2577.step%202.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/2577.step-2.png" alt="" border="0" /></a></em></span></strong></p>
<p>&nbsp;4. Click on SharePoint Server 2013 Trial<br />&nbsp;5. <span style="font-size: small;">Click on next</span></p>
<p><span style="font-size: small;">Note: </span></p>
<p><span style="font-size: x-small;"><em><strong>We need to enter a unique site name, and choose the location, and database server that we want to use. In these case I&rsquo;m going to create a new database.</strong></em></span></p>
<p><span style="font-size: x-small;"><em><strong>The ASP.NET MVC application that I will deploy in the next few steps uses a database that I will deploy later.</strong></em></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/5483.step%203.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/5483.step-3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/5483.step%203.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/5483.step-3.png" alt="" border="0" /></a><br />6.&nbsp;Set the virtual server name<br />7.&nbsp;Set the user name and password<br />8.&nbsp;Click on Next</p>
<p>Note:</p>
<p><strong><em><span style="font-size: x-small;">In step two of the wizard, I get to supply a name for my new Virtual Machine, select its size and complete a username and password to login to the machine.</span></em></strong></p>
<p><strong><em><span style="font-size: x-small;">Remember, the size of virtual machine here is crucial as it both selects the hardware that my virtual machine will run on, but also has a knock on impact to the amount deducted per minute from my Azure subscription.</span></em></strong></p>
<p><strong><em><span style="font-size: x-small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/6758.step%204.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/6758.step-4.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/6758.step%204.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/6758.step-4.png" alt="" border="0" /></a></span></em></strong></p>
<p><span style="font-size: small;">9.&nbsp;Set the Cloud Service Name<br />10.&nbsp;Set the region and the storage account<br />11.&nbsp;Click on Next&nbsp;Step three has a few more fields to be completed. Firstly, in the cloud service field, I will create a new cloud service for my virtual machine. This option is available so that virtual machines can be grouped logically for purposes such as load balancing.<br /><br />Note: <br /><br /><span style="font-size: x-small;"><strong><em>If you already have a storage account in the same data center, choose that, if not you can choose to &ldquo;Use an automatically generated storage account&rdquo;.</em></strong></span><br /><br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/4174.step%205.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/4174.step-5.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/4174.step%205.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/4174.step-5.png" alt="" border="0" /></a></span></p>
<p><span style="font-size: small;">12.&nbsp;Click on Next</span></p>
<p><span style="font-size: small;">Note:</span></p>
<p><span style="font-size: x-small;"><strong><em>The final step allows us to specify the endpoint where we can communicate with our virtual machine. In my instance, the default settings used by Remote Desktop and PowerShell are suitable, so I can use either of these mechanisms to work with my VM.</em></strong></span></p>
<p><span style="font-size: x-small;"><strong><em>With this all filled in automatically, we are all done with the wizard, so I can select the check mark at the bottom right of the screen to complete the wizard.</em></strong></span></p>
<p><span style="font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/7367.step%206.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/7367.step-6.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/7367.step%206.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/7367.step-6.png" alt="" border="0" /></a></span></p>
<p><span style="font-size: small;">13.&nbsp;Wait until the virtual machine is created. This could take while. <br />14. When completed, Open Visual Studio</span></p>
<p><span style="font-size: small;">Note:</span></p>
<p><span style="font-size: x-small;"><strong><em>Virtual machine provisioning will take a few minutes, but once completed you will have an entry in your Virtual Machines section of the portal that you can select and connect to initiate a remote desktop session to your new virtual machine. </em></strong></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/7024.step%207.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/7024.step-7.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/7024.step%207.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/7024.step-7.PNG" alt="" width="429" height="385" border="0" /></a></p>
<p>15.&nbsp;Open the Server Explorer in Visual Studio<br />16.&nbsp;Click on Virtual Machine node<br />(If the virtual machine does not appear click refresh)<br />17.&nbsp;Click on the new server (Virtual Machines now have context menu actions that allow you start, shutdown, restart, and delete a Virtual Machine directly within the Visual Studio Server Explorer.)</p>
<p>Note:</p>
<p><span style="font-size: x-small;"><em><strong>The shutdown action enables you to shut down the virtual machine and suspend billing when the VM is not in use, and easily restart it when you need it. </strong></em></span><span style="font-size: x-small;"><em><strong>When you stop a VM we no longer charge you any computing time for it &ndash; yet we still preserve the deployment state and configuration. This makes it incredibly easy to stop VMs when you aren&rsquo;t actively using them to avoid billing charges, and then restart them when you want to use them again.</strong></em></span></p>
<p>My next post will show you how to upload a website to the provisioned server and start testing it.</p>
<p>Happy Coding!</p>
<p>John</p>]]></content:encoded>
    </item>
    <item>
      <title>Modern DevOps Tools</title>
      <link>https://docs.microsoft.com/archive/blogs/jrspinella/modern-devops-tools</link>
      <pubDate>Wed, 28 May 2014 14:34:00 GMT</pubDate>
      <dc:creator><![CDATA[John R. Spinella]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jrspinella/2014/05/28/modern-devops-tools/</guid>
      <description><![CDATA[Hey everyone,
&nbsp;&nbsp; Been awhile since I posted anything, been really busy. I just wanted to...]]></description>
      <content:encoded><![CDATA[<p>Hey everyone,</p>
<p>&nbsp;&nbsp; Been awhile since I posted anything, been really busy. I just wanted to update everyone on a CodePlex project I have created with some of my co workers - <a title="Modern DevOps Tools" href="https://devopstools.codeplex.com/">Modern DevOps Tools</a>. The site is based around building tools that uses recommended practices that will work inside of your continuous delivery cycle. Right now, I have up the DevOps Build Template that has all the goodies!</p>
<ul>
<li>Assembly Versioning</li>
<li>Branch Specification</li>
<li>Code Analysis
<ul>
<li>Cat.Net</li>
<li>FxCop</li>
<li>StyleCop</li>
<li>Code Metrics</li>
<li>SharePoint Dispose Check</li>
</ul>
</li>
<li>Build Reports for Continuous Delivery</li>
<li>Email</li>
<li>Code Signing</li>
<li>Auto Deployments using DSC (Desired State Configuration) - Coming soon</li>
<li>Auto Deployments using&nbsp;RM (Release Management)&nbsp;- Coming soon - 2013 version</li>
<li>Quick Use Guide</li>
</ul>
<p>TFS 2013 build template is coming soon! Please go check it out and provide feedback on the tools we have and any other tools you would like to see.</p>
<p>Thanks,</p>
<p>John</p>]]></content:encoded>
    </item>
    <item>
      <title>Channel 9 video - Introducing DevOps Workbench Express Edition for Visual Studio 2012</title>
      <link>https://docs.microsoft.com/archive/blogs/jrspinella/channel-9-video-introducing-devops-workbench-express-edition-for-visual-studio-2012</link>
      <pubDate>Thu, 03 Oct 2013 05:52:35 GMT</pubDate>
      <dc:creator><![CDATA[John R. Spinella]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jrspinella/2013/10/03/channel-9-video-introducing-devops-workbench-express-edition-for-visual-studio-2012/</guid>
      <description><![CDATA[You can watch the full video...]]></description>
      <content:encoded><![CDATA[<p>You can watch the full video here:</p>
<p><a title="https://channel9.msdn.com/Blogs/VisualStudio/Introducing-Deployment-Workbench-Express-Edition" href="https://channel9.msdn.com/Blogs/VisualStudio/Introducing-Deployment-Workbench-Express-Edition">https://channel9.msdn.com/Blogs/VisualStudio/Introducing-Deployment-Workbench-Express-Edition</a></p>
<p>&nbsp;</p>
<h3>Interview:</h3>
<p>Brian Keller interviews Casey O'Mara about another great Visual Studio Rangers project - <a href="https://aka.ms/vsardevops">DevOps Workbench Express Edition</a>. This free tool available on Visual Studio Gallery, and Codeplex is designed to help small to medium teams manage their releases and push them from Team Foundation Server (or Team Foundation Service) directly into a dev/test/staging/production environment.</p>
<p>Download Guidance: <a href="https://aka.ms/vsardevops">https://aka.ms/vsardevops</a></p>
<p>Download DevOps Workbench Express Edition Tool:&nbsp; <a href="https://visualstudiogallery.msdn.microsoft.com/10fa8ca4-9123-46c9-a71e-31e0b2d7c74f">DevOps Workbench Express Edition</a></p>
<p>View YouTube videos: <a title="TFS2012 - DevOps Deployment Workbench Express Edition" href="https://www.youtube.com/watch?v=_sc8BbEpSq4">TFS2012 - DevOps Deployment Workbench Express Edition</a></p>
<h3>Team Members</h3>
<p>(in alphabetical order):&nbsp;&nbsp;&nbsp; <br /><strong>Anna Galaeva, Bijan Javidi, Bob Hardister, Casey O&rsquo;Mara, David Pitcher, Ed Blankenship, Jahangeer Mohammed, John Bergman, John Spinella, Joseph Abukhader, Larry Guger, Ryan Frasier, Tony Feissle, Willy-Peter Schaub</strong></p>]]></content:encoded>
    </item>
    <item>
      <title>DevOps Workbench Express Edition Release for Visual Studio 2012</title>
      <link>https://docs.microsoft.com/archive/blogs/jrspinella/devops-workbench-express-edition-release-for-visual-studio-2012</link>
      <pubDate>Thu, 03 Oct 2013 05:48:00 GMT</pubDate>
      <dc:creator><![CDATA[John R. Spinella]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jrspinella/2013/10/03/devops-workbench-express-edition-release-for-visual-studio-2012/</guid>
      <description><![CDATA[The ALM Rangers&nbsp;currently released the DevOps Workbench Express Edition guidance to Codeplex...]]></description>
      <content:encoded><![CDATA[<p>The ALM Rangers&nbsp;currently released the DevOps Workbench Express Edition guidance to Codeplex (<a href="https://vsardevops.codeplex.com/">here</a>) and the download to <a href="https://visualstudiogallery.msdn.microsoft.com/10fa8ca4-9123-46c9-a71e-31e0b2d7c74f">Visual Studio Gallery</a>.</p>
<p>DevOps Deployment is based around build once, and deploy to multiple environments.&nbsp; DevOps Workbench Express Edition specifically targets the small organization with multiple personas.&nbsp;&nbsp; This will work inside of your continuous delivery cycle to provide business value, and agility.</p>
<p>The latest binary release can be found on <a href="https://visualstudiogallery.msdn.microsoft.com/10fa8ca4-9123-46c9-a71e-31e0b2d7c74f">Visual Studio Gallery</a>, the guidance, and all code samples in the <a href="https://vsardevops.codeplex.com/">Codeplex Downloads section</a>&nbsp;as well as a introduction video <a title="TFS2012 - DevOps Deployment Workbench Express Edition" href="https://www.youtube.com/watch?v=_sc8BbEpSq4">here</a>.</p>
<p>Currently in scope:</p>
<ul>
<li>DevOps Workbench Express Edition</li>
<li>DevOps Deployment Explorer</li>
<li>DevOps Workbench Hands-on-Labs</li>
<li>Guidance for Continuous Delivery</li>
<li>Quick Use Guide</li>
<li>DevOps Workbench Express Edition Poster</li>
</ul>
<p>Templates included:</p>
<ul>
<li>Azure Deployment</li>
<li>Website Deployment</li>
<li>SharePoint&nbsp;</li>
<li>Visual Studio SQL 2010 Database Projects</li>
<li>Visual Studio SQL 2012 Database Projects</li>
</ul>
<p>...plus many other compositional deployment activities.</p>
<p><img src="https://download-codeplex.sec.s-msft.com/Download?ProjectName=vsardevops&amp;DownloadId=725603" alt="DevOps Workflow" width="561" height="396" /></p>
<h4>Visual Studio ALM Rangers</h4>
<p>Big thanks to the team that delivered this:</p>
<p><strong>Anna Galaeva, Bijan Javidi, Bob Hardister, Casey O&rsquo;Mara, David Pitcher, Ed Blankenship, Jahangeer Mohammed, John Bergman, John Spinella, Joseph Abukhader, Larry Guger, Ryan Frasier, Tony Feissle, Willy-Peter Schaub</strong></p>
<p>&nbsp;</p>
<p><a href="https://aka.ms/vsarunderstand"><img title="image[18]" src="https://download.codeplex.com/Download?ProjectName=vsarplanningguide&amp;DownloadId=393164" alt="image[18]" width="229" height="40" border="0" /></a></p>
<p>This guidance is created by the Visual Studio ALM Rangers, who have the mission to provide out of band solutions for missing features and/or guidance. This content was created with support from Microsoft Product Group, members of Microsoft Services, Microsoft Most Valued Professionals (MVPs) and technical specialists from technology communities around the globe, giving you a real-world view from the field, where the technology has been tested and used.</p>
<p>&nbsp;<a href="https://www.codeplex.com/site/search?query=ALM%20Rangers&amp;sortBy=CurrentReleaseDate&amp;licenses=|&amp;refinedSearch=true"><img title="image[19]" src="https://download.codeplex.com/Download?ProjectName=vsarplanningguide&amp;DownloadId=393165" alt="image[19]" width="229" height="40" border="0" /></a> <a href="https://aka.ms/vsarsolutions"><img title="image[20]" src="https://download.codeplex.com/Download?ProjectName=vsarplanningguide&amp;DownloadId=393166" alt="image[20]" width="229" height="40" border="0" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>Targeted for Visual Studio 2012 – DevOps Deployment Workbench Express Edition</title>
      <link>https://docs.microsoft.com/archive/blogs/jrspinella/targeted-for-visual-studio-2012-devops-deployment-workbench-express-edition</link>
      <pubDate>Thu, 03 Oct 2013 05:44:34 GMT</pubDate>
      <dc:creator><![CDATA[John R. Spinella]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jrspinella/2013/10/03/targeted-for-visual-studio-2012-devops-deployment-workbench-express-edition/</guid>
      <description><![CDATA[New Video posted today by my good friend and team mate&nbsp;on YouTube about the DevOps Workbench...]]></description>
      <content:encoded><![CDATA[<p>New Video posted today by my good friend and team mate&nbsp;on YouTube about the DevOps Workbench Express Edition and how to do your very own custom deployment.&nbsp; Casey and I will be doing several more, and interviewing people from the team on how to use the Workbench for everyday deployments, and even going into more detail around build and continuous delivery all the way to continuous testing!!&nbsp;</p>
<p>Stay tuned for more great videos.&nbsp;&nbsp; I&rsquo;d also love to see your suggestions, comments, and other feedback!</p>
<p>You can get the solution and guidance here:&nbsp; <a href="https://vsardevops.codeplex.com/">https://vsarDevOps.codeplex.com</a>&nbsp; or at the <a href="https://visualstudiogallery.msdn.microsoft.com/10fa8ca4-9123-46c9-a71e-31e0b2d7c74f">Visual Studio Gallery</a>.</p>
<p>[View:https://www.youtube.com/watch?v=_sc8BbEpSq4&amp;feature=youtube_gdata_player]</p>
<p>Happy Coding,</p>
<p>John</p>]]></content:encoded>
    </item>
    <item>
      <title>BRDLite V2.0 is Released to the Public!</title>
      <link>https://docs.microsoft.com/archive/blogs/jrspinella/brdlite-v2-0-is-released-to-the-public</link>
      <pubDate>Thu, 21 Feb 2013 05:36:00 GMT</pubDate>
      <dc:creator><![CDATA[John R. Spinella]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jrspinella/2013/02/21/brdlite-v2-0-is-released-to-the-public/</guid>
      <description><![CDATA[After a few weeks of silent ship, which did not reveal any showstoppers, we would like to announce...]]></description>
      <content:encoded><![CDATA[<p>After a few weeks of silent ship, which did not reveal any showstoppers, we would like to announce the<br />general availability of <a href="https://vsarbrdlite.codeplex.com/">BRDLite on Codeplex</a>. Kudos to John Jacob and Myself, the co-leads of the project, and the team, for this achievement which is especially important for our future ambitions in this area. It &nbsp;is a stepping stone to our DevOps future.</p>
<p>Please help us spread the news by blogging. Use this email as a starting point or refer to the&nbsp;<a title="https://blogs.msdn.com/b/willy-peter_schaub/" href="https://blogs.msdn.com/b/willy-peter_schaub/">Rangers blog</a>.</p>
<p><strong>Project Description</strong></p>
<p>The <strong>B</strong>uild <strong>R</strong>elease and <strong>D</strong>eploy (BRD) Lite is a set of build process reference templates that allows you to quickly setup a real-world build process in your environment. It leverages extensions from <span style="text-decoration: underline;"><a href="https://tfsbuildextensions.codeplex.com/">Community TFS Build Extensions</a></span>, which provide capabilities for your Team Foundation builds such as automatic compile, build version number customization, build packaging, code signing, basic deployment functionality, and environment configuration file management into your Team Foundation builds.</p>
<p>The &ldquo;Lite&rdquo; comes from a build template that you or your Build administrators can use &ldquo;out of the box&rdquo; for most scenarios. Of course, you can always customize and extend as needed.</p>
<p><strong>Epics</strong></p>
<ul>
<li><br />As Abu, the build master, I would like a number of BRDLite reference templates, which implement scenario based custom activities</li>
<li><br />As Abu, the build master, I need guidance on extending the BRDLite reference template with new custom activities</li>
<li><br />As Abu, the build master, I would like to understand the changes and impact of Visual Studio 2012 on BRDLite</li>
</ul>
<p><strong>Team</strong></p>
<p>Bijan Javidi, Brandon Hawbaker, Jim Lamb, John Jacob, John Spinella, Mike Fourie, Richard Fennell, William Bartholomew, Willy-Peter Schaub</p>
<p><strong>Future plans</strong></p>
<p>BRDLite is our 1<sup>st</sup> investment in DevOps domain which is one of our focus areas in future. Actually, with the announcement of Rangers FY13 triage #3 a couple of weeks ago, the future has already started. DevOps is the new Ranger project which extends BRDLite to the next level. As usual, it is the Rangers way of converting hype and buzz into pragmatic hands-on solutions.</p>
<p>Stay tuned!</p>
<p>Happy Coding!</p>
<p>John</p>]]></content:encoded>
    </item>
    <item>
      <title>Using ReverseGeocodeQuery for Windows Phone 8</title>
      <link>https://docs.microsoft.com/archive/blogs/jrspinella/using-reversegeocodequery-for-windows-phone-8</link>
      <pubDate>Fri, 02 Nov 2012 08:39:00 GMT</pubDate>
      <dc:creator><![CDATA[John R. Spinella]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jrspinella/2012/11/02/using-reversegeocodequery-for-windows-phone-8/</guid>
      <description><![CDATA[So, I started writing some of my apps I had for Android and WP7 for Windows Phone 8 and to my...]]></description>
      <content:encoded><![CDATA[<p>So, I started writing some of my apps I had for Android and WP7 for Windows Phone 8 and to my surprise Nokia Maps are looking to be a really good thing. With the New Nokia Maps, there are Maps services that come with the Windows Phone 8 SDK. One in particular is ReverseGeocodeQuery. This is great as I can use my internal map to get geocoding without having to reference any of the Bing Services. Now, if you want more of the Bing services like Search, Live API, ect. then BIng Services API is the way to go. For my example I will show you how to use the ReverseGeocodeQuery and fill in a textblock with a address&nbsp;of where I am.&nbsp;</p>
<h2>Building the&nbsp;Sample&nbsp;Phone Project&nbsp;in Visual Studio 2012</h2>
<p>&nbsp;First thing you want to do is open Visual Studio 2012 and create a new windows phone project. We are going to name it "ReverseGeocodeQueryPhoneApp" and you will want to pick Windows Phone 8.0 SDK.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/4555.Capture101.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/4555.Capture101.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/4555.Capture101.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/4555.Capture101.PNG" alt="" border="0" /></a></p>
<p>&nbsp;Next, you should see Visual Studio&nbsp; creating your project and you should see below.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/3487.Capture102.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3487.Capture102.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/3487.Capture102.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3487.Capture102.PNG" alt="" border="0" /></a></p>
<p>Now, with the MainPage.xaml open, add in the code below to the&nbsp;main content grid.</p>
<p><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;">&lt;</span></span></span><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;">TextBlock</span></span></span><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"> x</span></span></span><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;">:</span></span></span><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"><span style="color: #ff0000; font-family: Consolas; font-size: x-small;">Name</span></span></span><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;">="CurrentLocTextBlock"</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">&nbsp;</span></span><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"><span style="color: #ff0000; font-family: Consolas; font-size: x-small;">HorizontalAlignment</span></span></span><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;">="Left" <br /></span></span></span><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"><span style="color: #ff0000; font-family: Consolas; font-size: x-small;">Foreground</span></span></span><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;">="{</span></span></span><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;">StaticResource</span></span></span><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"> PhoneForegroundBrush</span></span></span><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;">}"<br /></span></span></span><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"><span style="color: #ff0000; font-family: Consolas; font-size: x-small;">FontSize</span></span></span><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;">="20"</span></span></span><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"><span style="color: #ff0000; font-family: Consolas; font-size: x-small;"> FontWeight</span></span></span><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;"><span style="color: #0000ff; font-family: Consolas; font-size: x-small;">="Bold"/&gt;</span></span></span></p>
<p>&nbsp;Open the code behind and Add in the reference code below.</p>
<pre class="scroll"><code class="csharp">public partial class MainPage : PhoneApplicationPage<br />{<br /> // Progress indicator shown in system tray<br /> private ProgressIndicator ProgressIndicator = null;<br /> <br /> // My current location<br /> private GeoCoordinate MyCoordinate = null;<br /> <br /> // Reverse geocode query<br /> private ReverseGeocodeQuery MyReverseGeocodeQuery = null;<br /> <br /> /// &lt;summary&gt;<br /> /// Accuracy of my current location in meters;<br /> /// &lt;/summary&gt;<br /> private double _accuracy = 0.0;<br /> <br /> // Constructor<br /> public MainPage()<br /> {<br /> InitializeComponent();<br /> GetCurrentCoordinate();<br /> } <br /> <br /> /// &lt;summary&gt;<br /> /// Method to get current coordinate asynchronously so that the UI thread is not blocked. Updates MyCoordinate.<br /> /// Using Location API requires ID_CAP_LOCATION capability to be included in the Application manifest file.<br /> /// &lt;/summary&gt;<br /> private async void GetCurrentCoordinate()<br /> {<br /> Geolocator geolocator = new Geolocator();<br /> geolocator.DesiredAccuracy = PositionAccuracy.High;<br /> <br /> try<br /> {<br /> Geoposition currentPosition = await geolocator.GetGeopositionAsync(TimeSpan.FromMinutes(1), TimeSpan.FromSeconds(10));<br /> _accuracy = currentPosition.Coordinate.Accuracy;<br /> <br /> MyCoordinate = new GeoCoordinate(currentPosition.Coordinate.Latitude, currentPosition.Coordinate.Longitude);<br /> <br /> if (MyReverseGeocodeQuery == null || !MyReverseGeocodeQuery.IsBusy)<br /> {<br /> MyReverseGeocodeQuery = new ReverseGeocodeQuery();<br /> MyReverseGeocodeQuery.GeoCoordinate = new GeoCoordinate(MyCoordinate.Latitude, MyCoordinate.Longitude);<br /> MyReverseGeocodeQuery.QueryCompleted += ReverseGeocodeQuery_QueryCompleted;<br /> MyReverseGeocodeQuery.QueryAsync();<br /> }<br /> <br /> }<br /> catch (Exception ex)<br /> {<br /> ...<br /> }<br /> <br /> }<br /> <br /> /// &lt;summary&gt;<br /> /// Event handler for reverse geocode query.<br /> /// &lt;/summary&gt;<br /> /// &lt;param name="e"&gt;Results of the reverse geocode query - list of locations&lt;/param&gt;<br /> private void ReverseGeocodeQuery_QueryCompleted(object sender, QueryCompletedEventArgs&lt;IList&lt;MapLocation&gt;&gt; e)<br /> {<br /> if (e.Error == null)<br /> {<br /> if (e.Result.Count &gt; 0)<br /> {<br /> MapAddress address = e.Result[0].Information.Address;<br /> CurrentLocTextBlock.Text = "Current Location: " + address.City + ", " + address.State;<br /> } <br /> }<br /> } <br /> }</code></pre>
<p>&nbsp;Remember to check ID_CAP_Location and ID_CAP_Map in the Capabilities section of the Windows Manifest. if you don't you will get a Access Denied Error.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/5531.Capture103.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/5531.Capture103.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/5531.Capture103.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/5531.Capture103.PNG" alt="" border="0" /></a></p>
<p>Now you are set to debug your work, below is what should be displaying in the emulator.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/7411.Capture104.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/7411.Capture104.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/73/7411.Capture104.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/7411.Capture104.PNG" alt="" width="418" height="749" border="0" /></a></p>
<p>I hope you found the post useful. As I come across more great things in Windows Phone 8 development (I am sure I will). I will pass it along to you all.</p>
<p>Happy Coding!!</p>
<p>Thanks,</p>
<p>John</p>]]></content:encoded>
    </item>
  </channel>
</rss>