<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>John R. Spinella Blog</title><link>http://blogs.msdn.com/b/jrspinella/</link><description>ALM, TFS and everything in between...</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>BRDLite V2.0 is Released to the Public!</title><link>http://blogs.msdn.com/b/jrspinella/archive/2013/02/21/brdlite-v2-0-is-released-to-the-public.aspx</link><pubDate>Thu, 21 Feb 2013 13:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10395870</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10395870</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2013/02/21/brdlite-v2-0-is-released-to-the-public.aspx#comments</comments><description>&lt;p&gt;After a few weeks of silent ship, which did not reveal any showstoppers, we would like to announce the&lt;br /&gt;general availability of &lt;a href="http://vsarbrdlite.codeplex.com/"&gt;BRDLite on Codeplex&lt;/a&gt;. 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 &amp;nbsp;is a stepping stone to our DevOps future.&lt;/p&gt;
&lt;p&gt;Please help us spread the news by blogging. Use this email as a starting point or refer to the&amp;nbsp;&lt;a title="http://blogs.msdn.com/b/willy-peter_schaub/" href="http://blogs.msdn.com/b/willy-peter_schaub/"&gt;Rangers blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Project Description&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;B&lt;/strong&gt;uild &lt;strong&gt;R&lt;/strong&gt;elease and &lt;strong&gt;D&lt;/strong&gt;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 &lt;span style="text-decoration: underline;"&gt;&lt;a href="http://tfsbuildextensions.codeplex.com/"&gt;Community TFS Build Extensions&lt;/a&gt;&lt;/span&gt;, 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.&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;Lite&amp;rdquo; comes from a build template that you or your Build administrators can use &amp;ldquo;out of the box&amp;rdquo; for most scenarios. Of course, you can always customize and extend as needed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Epics&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;br /&gt;As Abu, the build master, I would like a number of BRDLite reference templates, which implement scenario based custom activities&lt;/li&gt;
&lt;li&gt;&lt;br /&gt;As Abu, the build master, I need guidance on extending the BRDLite reference template with new custom activities&lt;/li&gt;
&lt;li&gt;&lt;br /&gt;As Abu, the build master, I would like to understand the changes and impact of Visual Studio 2012 on BRDLite&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Team&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bijan Javidi, Brandon Hawbaker, Jim Lamb, John Jacob, John Spinella, Mike Fourie, Richard Fennell, William Bartholomew, Willy-Peter Schaub&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Future plans&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;BRDLite is our 1&lt;sup&gt;st&lt;/sup&gt; 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.&lt;/p&gt;
&lt;p&gt;Stay tuned!&lt;/p&gt;
&lt;p&gt;Happy Coding!&lt;/p&gt;
&lt;p&gt;John&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10395870" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/General/">General</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/ALM/">ALM</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/-NET/">.NET</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/BRDLite/">BRDLite</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/ALM+Rangers/">ALM Rangers</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/TFS+2012/">TFS 2012</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Process/">Process</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/SDLC/">SDLC</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/SharePoint/">SharePoint</category></item><item><title>Using ReverseGeocodeQuery for Windows Phone 8</title><link>http://blogs.msdn.com/b/jrspinella/archive/2012/11/02/using-reversegeocodequery-for-windows-phone-8.aspx</link><pubDate>Fri, 02 Nov 2012 15:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10365268</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10365268</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2012/11/02/using-reversegeocodequery-for-windows-phone-8.aspx#comments</comments><description>&lt;p&gt;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&amp;nbsp;of where I am.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Building the&amp;nbsp;Sample&amp;nbsp;Phone Project&amp;nbsp;in Visual Studio 2012&lt;/h2&gt;
&lt;p&gt;&amp;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.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/4555.Capture101.PNG"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/4555.Capture101.PNG" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Next, you should see Visual Studio&amp;nbsp; creating your project and you should see below.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3487.Capture102.PNG"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3487.Capture102.PNG" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now, with the MainPage.xaml open, add in the code below to the&amp;nbsp;main content grid.&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #a31515; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #a31515; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #a31515; font-family: Consolas; font-size: x-small;"&gt;TextBlock&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt; x&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;Name&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;="CurrentLocTextBlock"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: x-small;"&gt;&lt;span style="font-family: Consolas; font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;HorizontalAlignment&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;="Left" &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;Foreground&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;="{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #a31515; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #a31515; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #a31515; font-family: Consolas; font-size: x-small;"&gt;StaticResource&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt; PhoneForegroundBrush&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;}"&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;FontSize&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;="20"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #ff0000; font-family: Consolas; font-size: x-small;"&gt; FontWeight&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: x-small;"&gt;="Bold"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Open the code behind and Add in the reference code below.&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="csharp"&gt;public partial class MainPage : PhoneApplicationPage&lt;br /&gt;{&lt;br /&gt; // Progress indicator shown in system tray&lt;br /&gt; private ProgressIndicator ProgressIndicator = null;&lt;br /&gt; &lt;br /&gt; // My current location&lt;br /&gt; private GeoCoordinate MyCoordinate = null;&lt;br /&gt; &lt;br /&gt; // Reverse geocode query&lt;br /&gt; private ReverseGeocodeQuery MyReverseGeocodeQuery = null;&lt;br /&gt; &lt;br /&gt; /// &amp;lt;summary&amp;gt;&lt;br /&gt; /// Accuracy of my current location in meters;&lt;br /&gt; /// &amp;lt;/summary&amp;gt;&lt;br /&gt; private double _accuracy = 0.0;&lt;br /&gt; &lt;br /&gt; // Constructor&lt;br /&gt; public MainPage()&lt;br /&gt; {&lt;br /&gt; InitializeComponent();&lt;br /&gt; GetCurrentCoordinate();&lt;br /&gt; } &lt;br /&gt; &lt;br /&gt; /// &amp;lt;summary&amp;gt;&lt;br /&gt; /// Method to get current coordinate asynchronously so that the UI thread is not blocked. Updates MyCoordinate.&lt;br /&gt; /// Using Location API requires ID_CAP_LOCATION capability to be included in the Application manifest file.&lt;br /&gt; /// &amp;lt;/summary&amp;gt;&lt;br /&gt; private async void GetCurrentCoordinate()&lt;br /&gt; {&lt;br /&gt; Geolocator geolocator = new Geolocator();&lt;br /&gt; geolocator.DesiredAccuracy = PositionAccuracy.High;&lt;br /&gt; &lt;br /&gt; try&lt;br /&gt; {&lt;br /&gt; Geoposition currentPosition = await geolocator.GetGeopositionAsync(TimeSpan.FromMinutes(1), TimeSpan.FromSeconds(10));&lt;br /&gt; _accuracy = currentPosition.Coordinate.Accuracy;&lt;br /&gt; &lt;br /&gt; MyCoordinate = new GeoCoordinate(currentPosition.Coordinate.Latitude, currentPosition.Coordinate.Longitude);&lt;br /&gt; &lt;br /&gt; if (MyReverseGeocodeQuery == null || !MyReverseGeocodeQuery.IsBusy)&lt;br /&gt; {&lt;br /&gt; MyReverseGeocodeQuery = new ReverseGeocodeQuery();&lt;br /&gt; MyReverseGeocodeQuery.GeoCoordinate = new GeoCoordinate(MyCoordinate.Latitude, MyCoordinate.Longitude);&lt;br /&gt; MyReverseGeocodeQuery.QueryCompleted += ReverseGeocodeQuery_QueryCompleted;&lt;br /&gt; MyReverseGeocodeQuery.QueryAsync();&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; }&lt;br /&gt; catch (Exception ex)&lt;br /&gt; {&lt;br /&gt; ...&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; /// &amp;lt;summary&amp;gt;&lt;br /&gt; /// Event handler for reverse geocode query.&lt;br /&gt; /// &amp;lt;/summary&amp;gt;&lt;br /&gt; /// &amp;lt;param name="e"&amp;gt;Results of the reverse geocode query - list of locations&amp;lt;/param&amp;gt;&lt;br /&gt; private void ReverseGeocodeQuery_QueryCompleted(object sender, QueryCompletedEventArgs&amp;lt;IList&amp;lt;MapLocation&amp;gt;&amp;gt; e)&lt;br /&gt; {&lt;br /&gt; if (e.Error == null)&lt;br /&gt; {&lt;br /&gt; if (e.Result.Count &amp;gt; 0)&lt;br /&gt; {&lt;br /&gt; MapAddress address = e.Result[0].Information.Address;&lt;br /&gt; CurrentLocTextBlock.Text = "Current Location: " + address.City + ", " + address.State;&lt;br /&gt; } &lt;br /&gt; }&lt;br /&gt; } &lt;br /&gt; }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;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.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/5531.Capture103.PNG"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/5531.Capture103.PNG" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now you are set to debug your work, below is what should be displaying in the emulator.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/7411.Capture104.PNG"&gt;&lt;img src="http://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" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Happy Coding!!&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;John&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10365268" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/General/">General</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/-NET/">.NET</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Windows+8/">Windows 8</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Windows+Phone/">Windows Phone</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Windows+Phone+8/">Windows Phone 8</category></item><item><title>Presented at the Virginia Software Developers Group</title><link>http://blogs.msdn.com/b/jrspinella/archive/2012/09/14/presented-at-the-virginia-software-developers-group.aspx</link><pubDate>Fri, 14 Sep 2012 18:14:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10349559</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10349559</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2012/09/14/presented-at-the-virginia-software-developers-group.aspx#comments</comments><description>&lt;p&gt;Hello, had a great time seeing all the Virginia developers at the September version of the Virginia Software Developers Group. We talked about what's new in TFS 2012 and my special topic&amp;nbsp; "BRDLite Suite v2.0". We had a great turnout and I hope BRDLite will catch on and they will be able to implement some of these templates.&lt;/p&gt;
&lt;p&gt;Thanks for letting me present at your users group, I enjoyed it.&lt;/p&gt;
&lt;p&gt;Happy Coding!&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;John&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10349559" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/General/">General</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/ALM/">ALM</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/-NET/">.NET</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/BRDLite/">BRDLite</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Build/">Build</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/ALM+Rangers/">ALM Rangers</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/TFS+2012/">TFS 2012</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Process/">Process</category></item><item><title>BRDLite for SharePoint v2.0 - What's New</title><link>http://blogs.msdn.com/b/jrspinella/archive/2012/09/13/brdlite-for-sharepoint-v2-0.aspx</link><pubDate>Thu, 13 Sep 2012 11:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10349024</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10349024</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2012/09/13/brdlite-for-sharepoint-v2-0.aspx#comments</comments><description>&lt;p&gt;In my previous post, &lt;a title="What is BRDLite?" href="http://blogs.msdn.com/b/jrspinella/archive/2012/07/29/what-is-brdlite.aspx"&gt;What is BRDLite?&lt;/a&gt;&amp;nbsp;I talked about what is BRDLite and what is coming in the next release. Today, I am going to tell you about BRDLite for SharePoint that is part of the BRDLite Suite. Remember, this is a overview of the template, Please keep a eye for the HOL, so you can learn and use this template.&lt;/p&gt;
&lt;h3&gt;What you can do&lt;strong&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The intent of this template was to give users a OOB build template that could handle simple to moderate SharePoint deployments. This template can deploy any SharePoint project as long as it is packaged as WSP. This is accomplished by the Deploy feature. Figure 1 shows the Deploy feature parameters.&amp;nbsp; As you can see the Deploy feature can deploy WSPs and enable individual&amp;nbsp;features to a particular site collection. Along with the Deploy feature, you can also email, send build reports and specify code branch builds. Next section, I am going to talk about the new features for v2.0&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/0624.Capture_2D00_deploy.PNG"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/0624.Capture_2D00_deploy.PNG" border="0" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;strong&gt;Figure 1&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;New Features&lt;/strong&gt;&lt;/h3&gt;
&lt;h4&gt;Resign of Parameters&lt;/h4&gt;
&lt;p&gt;There is a lot of new changes to the original version of this template. One of significant changes is the redesign of the parameters in the build template. If you look at Figure&amp;nbsp;2 the original design was to add the "BRDLite" parameters in one parameter collection. We felt that this design was confusing and wanted a more fluid design like in Figure 3.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/0083.Capture5696954_2D00_09.PNG"&gt;&lt;img width="252" height="262" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/0083.Capture5696954_2D00_09.PNG" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/2654.Capture873845794352743.PNG"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;strong&gt;Figure&amp;nbsp;2&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/6170.Capture873845794352743.PNG"&gt;&lt;img width="358" height="278" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/6170.Capture873845794352743.PNG" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-size: x-small;"&gt;&lt;strong&gt;Figure 3&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Zip for Manual Deployment&lt;/h4&gt;
&lt;p&gt;Other Change is you can now, Zip up files and move them to a different location that we call Zip for Manual Deployment. This is great if you have a build that is going to be deployed by a Operations or QA folks. By default the Zip will automatically find all WSPs, PowerShell scripts and Word/Text files and zip them all up and copy them to another location. Figure&amp;nbsp;4 show you the new parameters for the Zip for Manual Deployment feature.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/0602.Capture_2D00_zip.PNG"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/0602.Capture_2D00_zip.PNG" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;strong&gt;Figure 4&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Code Analysis&lt;/h4&gt;
&lt;p&gt;The final and I think one of the most important features is the Code Analysis feature. We have add in SPDisposeCheck and CAT.NET as a part of the code analysis with the existing StyleCop parameter. This I think is very important for SharePoint deployment as you can use this feature as part of your Continuous Integration process or have a extra layer in your code review process. I am sure in the next releases we will add more Code Analysis pieces to make this feature even better. Figure&amp;nbsp;5 shows the parameters for Code Analysis.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/1460.Capture_2D00_-codeanalysis.PNG"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/1460.Capture_2D00_-codeanalysis.PNG" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;strong&gt;Figure 5&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I hope this blog gave you some insight into the new BRDLite for SharePoint v2.0 build template. I hope you find it useful and apply it to existing or new SharePoint deployments.&lt;/p&gt;
&lt;p&gt;Happy Coding!&lt;/p&gt;
&lt;p&gt;John&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10349024" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/General/">General</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/ALM/">ALM</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/BRDLite/">BRDLite</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Build/">Build</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/ALM+Rangers/">ALM Rangers</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/TFS+2012/">TFS 2012</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/SharePoint/">SharePoint</category></item><item><title>SharePoint Software Development Lifecycle using TFS 2012 Part 1</title><link>http://blogs.msdn.com/b/jrspinella/archive/2012/08/02/sharepoint-software-development-lifecycle-using-tfs-2012-part-1.aspx</link><pubDate>Fri, 03 Aug 2012 03:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10336423</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10336423</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2012/08/02/sharepoint-software-development-lifecycle-using-tfs-2012-part-1.aspx#comments</comments><description>&lt;p&gt;Most companies I have been working with have a lot of problems trying to adopt to a SDLC model with SharePoint and TFS (Team Foundation Server). I will go over some&amp;nbsp;if the pain points, recommended practices and ways to adhere to the practices in your own shop.&amp;nbsp;&amp;nbsp;If you are like most shops, you have&amp;nbsp;multiple teams developing disparate solutions to be hosted on one SharePoint environment. These teams&amp;nbsp;could be&amp;nbsp;geographically dispersed or all in one building&amp;nbsp;and can be made up of differing levels of development and SharePoint experience.&amp;nbsp;Most of the time&amp;nbsp;is no or very little consistent development and release approach across teams - currently changes are released directly by the developers onto the live environment. Which is very bad and will cause problems in the long run.&lt;/p&gt;
&lt;p class="Heading1Numbered"&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;Current Pain Points&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Heading1Numbered"&gt;Most of us can relate to these pain point below. Most of them can be fixed by understand the problem and how to get a resolution applied.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div class="Heading1Numbered"&gt;High bug rate on live&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="Heading1Numbered"&gt;Uncontrolled production environment&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="Heading1Numbered"&gt;Inconsistent test procedure&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="Heading1Numbered"&gt;Inconsistent developer environments&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="Heading1Numbered"&gt;Inconsistent testing environments&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="Heading1Numbered"&gt;No central logging policy&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="Heading1Numbered"&gt;No central bug list&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="Heading2Numbered"&gt;&lt;strong&gt;&lt;span style="font-size: medium;"&gt;&amp;nbsp;Key Principles to Remember&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="Heading2Numbered"&gt;&lt;/p&gt;
&lt;p&gt;Before defining the development and release process principles, it is useful to outline the types of development that can be done on SharePoint. These are as follows:&lt;/p&gt;
&lt;p class="Heading2Numbered"&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Custom code development&lt;/b&gt;. This is for compiled code that makes file-system changes to the SharePoint environment, as well as potentially effecting configuration changes. This is for traditionally developed code projects. Custom code should be deployed via SharePoint Global Solutions (wsp files).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SharePoint Designer / Content Changes&lt;/b&gt;. Changes made with this approach only alter the SharePoint content database. No physical changes are made to physical files on the file system.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Sandboxed Solutions&lt;/b&gt;. &amp;nbsp;This is a new mechanism with SharePoint 2010 that allows custom code (with limited SharePoint object model access) to be deployed to a specific &amp;ldquo;sandboxed&amp;rdquo; location. Outside of this location, code has no effect. This can be locked down on a per Site Collection basis.&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="Heading2Numbered"&gt;&lt;/p&gt;
&lt;p&gt;To achieve the high level goal of improving quality and reducing downtime, a more rigorous development and release process is recommended, driven by the following principles:&lt;/p&gt;
&lt;p class="Heading2Numbered"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Control changes and releases made to the live (production) environment&lt;/b&gt;. The aim of this is to ensure rigour is applied when deploying to this environment, in order to minimise risks and ensure contingency (e.g. rollback plans).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Clarified responsibility&lt;/b&gt;. By clarifying responsibility and ensuring that suppliers / development teams know what standard they must adhere to, code quality will improve and risk of instability on production will be reduced.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Introduce automated deployment processes&lt;/b&gt;. The aim of this is to expedite deployment of solutions to other developer environments, test environments as well as release and pre-production.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Ensure environment consistency&lt;/b&gt;. There is less potential for bugs to occur and deployment steps to be missed if environments are consistent throughout the development a release process. This allows ease of bug reproduction on development environments that accelerate the rate in which fixes can be built.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Allow devolved development where feasible&lt;/b&gt;. Where development is low-risk (i.e. SharePoint Designer based development), the procedure should act to facilitate ease of development (i.e. still permit this alterations on the production environment), but isolate scope at which alterations can be made and provide contingency. The aim here is not to negate the benefit of how the product should work by applying overly heavy procedures.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="Heading2Numbered"&gt;&lt;strong&gt;&lt;span style="font-size: medium;"&gt;Establish Quality Gates&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="Heading2Numbered"&gt;&lt;/p&gt;
&lt;p&gt;To facilitate development, testing and release of custom code,&amp;nbsp;five key&amp;nbsp;environments in the Software Development Lifecycle are recommended:&lt;/p&gt;
&lt;p class="Heading2Numbered"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Development&lt;/b&gt; &amp;ndash; these are the environments that developers actually build solutions on. Each developer should have their own environment that includes an install of SharePoint to ensure that dependencies on other code are controlled.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Development Integration&lt;/strong&gt; - &amp;nbsp;The&amp;nbsp;devlopement environment should be used for&amp;nbsp;intergation and regression testing&amp;nbsp;by all development teams.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Test&lt;/b&gt; &amp;ndash; The test environment should be used for functional and regression testing etc whilst a solution is in development.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Pre-Production&lt;/b&gt; &amp;ndash; This should be as close to live as possible and is used to simulate the live environment for formal solution integration and deployment testing before solutions are pushed to live.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Production&lt;/b&gt; &amp;ndash; This is the live environment where solutions will finally be released to once they pass all testing. &amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="Heading2Numbered"&gt;&lt;/p&gt;
&lt;p&gt;The diagram below outlines the development and release process for pushing solutions through to production. In-between each stage, there is a quality gate. Certain standards and procedures need to be met at these stages for code to make it to the next stage (e.g. checked in code has been related to a bug or task in TFS, the code has been peer reviewed etc). If code fails these quality gates, it is not allowed to progress.&lt;/p&gt;
&lt;p class="Heading2Numbered"&gt;Also note that as multiple development teams are working on multiple solutions to end up on one SharePoint platform (production). It is therefore recommended that each development team has their own set of development and test environments.&lt;/p&gt;
&lt;p class="Heading2Numbered"&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3731.Capture.PNG"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3731.Capture.PNG" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Note that the above diagram also shows content migration flow. It is advisable that content is frequently duplicated from Production back to Pre-Production to ensure that the environments are as close together as possible. It may also be that a subset of data be extracted for use in Test environment, although the Test environment just needs realistic test data &amp;ndash; actual data is not critical.&lt;/p&gt;
&lt;p&gt;Note that it is also worth considering operational readiness for a solution, such that the infrastructure / support team has the relevant documentation to support, monitor, troubleshoot and administer the solution.&lt;/p&gt;
&lt;p&gt;In Part 2, I will go more in depth of the quality gate process and project team&amp;nbsp;responsibilities&lt;/p&gt;
&lt;p&gt;Happy Coding!&lt;/p&gt;
&lt;p&gt;John&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10336423" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/ALM/">ALM</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/TFS+2012/">TFS 2012</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Process/">Process</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/SDLC/">SDLC</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/SharePoint/">SharePoint</category></item><item><title>What is Build Release Deploy (BRDLite) ?</title><link>http://blogs.msdn.com/b/jrspinella/archive/2012/07/29/what-is-brdlite.aspx</link><pubDate>Sun, 29 Jul 2012 22:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10334609</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10334609</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2012/07/29/what-is-brdlite.aspx#comments</comments><description>&lt;p&gt;Ever since I started on the ALM Rangers project "BRDLite Reference Template", I hear this question a lot... &lt;em&gt;"What is BRDLite? How do I use it?". &lt;/em&gt;Well, in this blog I am going to tell you.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;What is BRD?&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;B&lt;/strong&gt;uild&lt;strong&gt;..R&lt;/strong&gt;elease&lt;strong&gt;..D&lt;/strong&gt;eploy&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ready to use Build Automation Workflow&lt;/li&gt;
&lt;li&gt;Address gaps in DefaultTemplates&lt;/li&gt;
&lt;li&gt;Provide baseline template for extensibility using community custom activities at &lt;a title="TFS&amp;amp;nbsp;Build Extensions" href="http://tfsbuildextensions.codeplex.com"&gt;TFS&amp;nbsp;Build Extensions&lt;span style="font-size: medium;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;/span&gt;&lt;span size="3"&gt;The "Lite" comes from making each template a lite-weight extendable template that you can use for whatever build scenario.&lt;/span&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;&lt;span size="3"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;&lt;span size="3"&gt;History&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;BRDLite was originally shipped with the &lt;a title="Build Customization Guide " href="http://vsarbuildguide.codeplex.com/"&gt;Build Customization Guide&lt;/a&gt; as a practical build template that would provide hands on guidance on how to implement the &lt;a title="TFS&amp;amp;nbsp;Build Extensions" href="http://tfsbuildextensions.codeplex.com"&gt;TFS&amp;nbsp;Build Extensions&lt;/a&gt;. Right now, the BRDLite 1.0 is downloadable from the &lt;a title="Build Customization Guide " href="http://vsarbuildguide.codeplex.com/downloads/get/245997"&gt;Build Customization Guide&lt;/a&gt;. I highly recommend downloading the template and start experimenting with it.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;Changes Coming&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Over the next months, we are shifting the focus on BRDLite. BRDLite is now going to be a set of scenario based build templates which we are calling the&amp;nbsp;BRDLite Suite. Each template will based on specific pain point for building solutions. Below is some of our templates we are currently working on:&lt;/p&gt;
&lt;p&gt;1. SharePoint 2010/2013 - Looking to CTP next Month&lt;br /&gt;2. Office 365&lt;br /&gt;3. CRM&lt;br /&gt;4. Azure&lt;br /&gt;5. Click Once&lt;br /&gt;6. ASP.NET&lt;br /&gt;7. Build Orchestration&amp;nbsp;- Looking to CTP next Month&lt;br /&gt;&lt;br /&gt;Each one of these templates will be downloadable and can be used OOB for your build scenario's. We will be also providing documentation on how to use each template and how&amp;nbsp;to extend these templates using the &lt;a title="TFS&amp;amp;nbsp;Build Extensions" href="http://tfsbuildextensions.codeplex.com"&gt;TFS&amp;nbsp;Build Extensions&lt;/a&gt; and other mechanisms.&lt;/p&gt;
&lt;p&gt;Stay tuned on my blog, I will be posting other BRDLite goodies to get you rolling with it.&lt;/p&gt;
&lt;h4&gt;&lt;span style="font-size: medium;"&gt;Send Feedback&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span size="2"&gt;We want to hear from you, and learn more about your experience using the BRDLIte Suite. Here are some ways to connect with us:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span size="2"&gt;Ask a question on the respective CodePlex discussion forums. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span size="2"&gt;Contact me on my &lt;/span&gt;&lt;a title="blog" href="http://blogs.msdn.com/b/jrspinella/contact.aspx"&gt;&lt;span size="2"&gt;blog&lt;/span&gt;&lt;/a&gt;&lt;span size="2"&gt;. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span size="2"&gt;Happy Coding!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span size="2"&gt;John&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10334609" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/BRDLite/">BRDLite</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Build/">Build</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/ALM+Rangers/">ALM Rangers</category></item><item><title>Announcing OneCode Sample Browser v5 - A Big Refresh with Expansion to 3500+ code samples, Favorite Searches, Flexibilities &amp; More</title><link>http://blogs.msdn.com/b/jrspinella/archive/2012/05/05/announcing-onecode-sample-browser-v5-a-big-refresh-with-expansion-to-3500-code-samples-favorite-searches-flexibilities-amp-more.aspx</link><pubDate>Sat, 05 May 2012 12:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10301369</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10301369</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2012/05/05/announcing-onecode-sample-browser-v5-a-big-refresh-with-expansion-to-3500-code-samples-favorite-searches-flexibilities-amp-more.aspx#comments</comments><description>&lt;table style="width: 100%;" border="0" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td id="MSOZoneCell_WebPartWPQ3" class="s4-wpcell-plain" valign="top"&gt;
&lt;table style="width: 100%;" class="s4-wpTopTable" border="0" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;div id="WebPartWPQ3" class="noindex" webpartid="3674fdf7-f0a2-4ee1-b03a-b44660ef4aab" haspers="false" allowdelete="false" width="100%"&gt;
&lt;table style="width: 100%;" border="0" xmlns:sharepoint="Microsoft.SharePoint.WebControls" xmlns:ddwrt2="urn:frontpage:internal" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:x="http://www.w3.org/2001/XMLSchema"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;table style="width: 100%;" border="0" cellspacing="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top;"&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/1362.thenewsamplebrowserv5.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/1362.thenewsamplebrowserv5.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In partnership with MSDN Samples Gallery, &lt;a href="http://onecode/"&gt;OneCode &lt;/a&gt;this morning is releasing a brand new version &lt;br /&gt;for its &lt;strong&gt;Sample Browser&lt;/strong&gt;, which introduces a big search expansion &lt;br /&gt;to over &lt;strong&gt;3500 &lt;/strong&gt;quality code samples from MSDN Samples Gallery, &lt;br /&gt;the new "Favorites" functions for managing your beloved samples, the integration &lt;br /&gt;of social media sharing, the enriched query conditions &amp;amp; more.&amp;nbsp; Its &lt;br /&gt;Zune-style user experience is still stunning.&amp;nbsp;&amp;nbsp; This is a big refresh of Sample &lt;br /&gt;Browser since the last release half a year ago.&amp;nbsp; We sincerely hope that &lt;br /&gt;worldwide developers will love it!&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;strong style="background-color: #ffff99;"&gt;Installation: &lt;/strong&gt;&lt;a style="background-color: #ffff99;" href="http://aka.ms/samplebrowser"&gt;&lt;strong&gt;http://aka.ms/samplebrowser&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/0601.samplebrowserv5entryui201204.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/0601.samplebrowserv5entryui201204.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/7633.samplebrowserv5mainui201204.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/7633.samplebrowserv5mainui201204.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: segoe ui semibold; font-size: 12pt;"&gt;New Features&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;strong&gt;1. Expansion to &lt;br /&gt;Searching and Downloading 3500+ code samples&lt;/strong&gt;&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;The new Sample Browser is &lt;br /&gt;expanded to search and download over &lt;strong&gt;3500 &lt;/strong&gt;samples from &lt;a href="http://code.msdn.microsoft.com/"&gt;MSDN Samples Gallery &lt;/a&gt;- &lt;br /&gt;including&lt;strong&gt; 800+&lt;/strong&gt; Microsoft All-In-One Code Framework samples, &lt;br /&gt;&lt;strong&gt;480+&lt;/strong&gt; Windows 8 Beta samples, &lt;strong&gt;600+ &lt;/strong&gt;Windows &lt;br /&gt;Forms, ASP.NET, Silverlight and WPF samples, and a lot more.&amp;nbsp; This is the &lt;br /&gt;biggest feature added to the new Sample Browser.&amp;nbsp; Please search and download the &lt;br /&gt;samples e.g. All-In-One Code Framework and enjoy the new experience!&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;span&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;. &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;Favorite Samples and Favorite &lt;br /&gt;Searches&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/1882.favoritesscreenshot201204.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/1882.favoritesscreenshot201204.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;strong&gt;3. Social Media &lt;br /&gt;Integration&lt;/strong&gt;&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;Ever wondered how the social &lt;br /&gt;media is discussing about certain samples or wanted to quickly share some &lt;br /&gt;samples to your twitter or Facebook account?&amp;nbsp; With the social media integration &lt;br /&gt;feature added to Sample Browser v5, these can be done with one simple click.&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;When you are browsing a sample &lt;br /&gt;in Sample Browser, you can switch to the &amp;ldquo;social&amp;rdquo; tab.&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3731.socialmediaintegration201204.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/3731.socialmediaintegration201204.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You &lt;br /&gt;will see all Twitter discussions about the sample.&amp;nbsp;&amp;nbsp; You can also quickly share &lt;br /&gt;the sample in your social media accounts e.g. Twitter, by clicking the twitter &lt;br /&gt;icon.&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;strong&gt;4. Flexibility in &lt;br /&gt;downloading and managing samples&lt;/strong&gt;&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;We heard lots of customer &lt;br /&gt;voice for the flexibility in downloading new samples, downloading only sample &lt;br /&gt;updates and deleting samples from the local repository.&amp;nbsp; With the new release, &lt;br /&gt;you gain the full flexibility now!&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;In the search result list, &lt;br /&gt;select or multiple select (by pressing Ctrl / Shift / Ctrl+A) samples and right &lt;br /&gt;click.&amp;nbsp; Then you can enjoy the flexibility to download samples, download only &lt;br /&gt;the sample updates if available, cancel the downloading samples, delete the &lt;br /&gt;sample from local repository, or redownload the samples.&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/5280.sampledownloadflexibility201204.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/5280.sampledownloadflexibility201204.png" width="381" height="557" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. &lt;br /&gt;Enriched Sample Query Conditions&lt;/strong&gt;&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;The search condition bar is &lt;br /&gt;enriched to provide more options for filtering the samples.&amp;nbsp;&amp;nbsp; We newly added &lt;br /&gt;&amp;ldquo;Author&amp;rdquo; &amp;ndash; so you can filter samples by author name e.g. &amp;ldquo;All-In-One Code &lt;br /&gt;Framework&amp;rdquo;.&amp;nbsp; We also added the &amp;ldquo;Affiliation&amp;rdquo; filter &amp;ndash; so you can find samples &lt;br /&gt;that are officially published by Microsoft.&amp;nbsp; We are also support Visual Studio &lt;br /&gt;11 Beta samples, Visual Studio LightSwitch samples, and more&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/2678.queryconditions201204.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/2678.queryconditions201204.png" width="208" height="552" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;strong&gt;6. Over &lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;20 other new features, performance improvements, and bug &lt;br /&gt;fixes&lt;/strong&gt;&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;Besides the above features, &lt;br /&gt;there are over 20 relatively small features and performance improvements, bug &lt;br /&gt;fixes. For example, we added a &amp;ldquo;cancel&amp;rdquo; button to allow you to cancel the sample &lt;br /&gt;search.&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/4747.cancelsearch201204.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-73/4747.cancelsearch201204.png" width="390" height="198" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We added a &lt;br /&gt;search result cache to improve the search speed.&amp;nbsp; In application settings, we &lt;br /&gt;allow developers to configure the number of queries to be saved in the search &lt;br /&gt;history, etc.&amp;nbsp; Please play with the Sample Browser, and discover these &lt;br /&gt;interesting small improvements by yourself.&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;/p&gt;
&lt;p style="font-family: segoe ui semibold; font-size: 12pt;"&gt;Feedback and Question &lt;br /&gt;Submission&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;Please feel free to email &lt;a href="mailto:onecode@microsoft.com"&gt;onecode@microsoft.com&lt;/a&gt;.&amp;nbsp; We would love to &lt;br /&gt;hear your feedback and suggestions and make the improvements.&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;&lt;/p&gt;
&lt;p style="font-family: segoe ui semibold; font-size: 12pt;"&gt;Acknowledgement&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;First of all, we want to give &lt;br /&gt;special thanks to all those who used the last version of Sample Browser and &lt;br /&gt;suggested improvements to &lt;a href="mailto:onecode@microsoft.com"&gt;onecode@microsoft.com&lt;/a&gt;. Your feedback &lt;br /&gt;helped us understand where we can do better than the last version, and we will &lt;br /&gt;do better and better thanks to your suggestions!&amp;nbsp; We also want particularly &lt;br /&gt;thank two Microsoft internal innovation community: &lt;strong&gt;&lt;/strong&gt;&lt;a href="http://garage/"&gt;&lt;strong&gt;The Garage&lt;/strong&gt; &lt;/a&gt;and &lt;strong&gt;&lt;a href="http://thespace/"&gt;The Space&lt;/a&gt;&lt;/strong&gt;.&amp;nbsp; These are groups of truly &lt;br /&gt;innovative people who would love to use their spare time to contribute to &lt;br /&gt;interesting projects such as the sample browser.&amp;nbsp; Many volunteers from the &lt;br /&gt;Garage and the Space step up to test the browser and shared useful &lt;br /&gt;suggestions.&lt;/p&gt;
&lt;p style="font-family: segoe ui; font-size: 10pt;"&gt;This new version of Sample &lt;br /&gt;Browser is developed by our SDE &lt;strong&gt;Leco Lin&lt;/strong&gt;, &lt;strong&gt;Infi &lt;br /&gt;Xu&lt;/strong&gt; with helps from &lt;strong&gt;Min Zhu&lt;/strong&gt;. It's designed by &lt;br /&gt;&lt;strong&gt;Jialiang Ge &lt;/strong&gt;with helps from &lt;strong&gt;Dan Ruder &lt;/strong&gt;and &lt;br /&gt;&lt;strong&gt;Mei Liang&lt;/strong&gt;.&amp;nbsp; Our tester &lt;strong&gt;Qi Fu&lt;/strong&gt;, and &lt;strong&gt;Leo &lt;br /&gt;Zhou&lt;/strong&gt;, &lt;strong&gt;Eric Wu&lt;/strong&gt;, &lt;strong&gt;Anand Malli &lt;/strong&gt;from &lt;br /&gt;&lt;strong&gt;TheGarage/TheSpace &lt;/strong&gt;community tested the application, strangled &lt;br /&gt;the bugs, and reviewed the code.&amp;nbsp; Special thanks to &lt;strong&gt;Mei Liang &lt;br /&gt;&lt;/strong&gt;and &lt;strong&gt;Dan Ruder &lt;/strong&gt;for their three-page-long suggestions to &lt;br /&gt;the browser.&amp;nbsp; They also demonstrate the browser to the Visual Studio team for &lt;br /&gt;future integration with Visual Studio.&amp;nbsp; Last but not least, we want to &lt;br /&gt;particularly thank &lt;strong&gt;Steven Wilssens &lt;/strong&gt;and his &lt;strong&gt;MSDN Samples &lt;br /&gt;Gallery &lt;/strong&gt;team. This team created the amazing MSDN Samples Gallery &amp;ndash; the &lt;br /&gt;host of all samples. We have a beautiful partnership, and we together make the &lt;br /&gt;ideas of Sample Browser come true.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="ms-PartSpacingVertical"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10301369" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/ASP-NET/">ASP.NET</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/HTML5/">HTML5</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/OneCode/">OneCode</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Samples/">Samples</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Silverlight/">Silverlight</category></item><item><title>VSTS ALM Ranger</title><link>http://blogs.msdn.com/b/jrspinella/archive/2011/10/23/vsts-alm-ranger.aspx</link><pubDate>Sun, 23 Oct 2011 17:11:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10229056</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10229056</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2011/10/23/vsts-alm-ranger.aspx#comments</comments><description>&lt;p&gt;Hello everyone, &lt;/p&gt;  &lt;p&gt;Today, I officially became a VSTS ALM Ranger, check out my ranger index: &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://blogs.msdn.com/b/willy-peter_schaub/archive/2011/10/23/introducing-the-visual-studio-alm-rangers-john-spinella.aspx"&gt;Introducing the Visual Studio ALM Rangers – John Spinella&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This is a great honor to be part of such a great team of professionals. I look forward to a long stay. &lt;/p&gt;  &lt;p&gt;For my first project with the Rangers, I am working on is the BRDLite project. I will be doing the implementation guidance for SharePoint builds. I will periodically update you with posts on my progress.&lt;/p&gt;  &lt;p&gt;Thanks,&lt;/p&gt;  &lt;p&gt;John Spinella&lt;/p&gt;  &lt;p&gt;Happy Coding!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10229056" width="1" height="1"&gt;</description></item><item><title>BizTalk 2010 Real World Example - Part 1</title><link>http://blogs.msdn.com/b/jrspinella/archive/2011/06/20/biztalk-2010-real-world-example-part-1.aspx</link><pubDate>Mon, 20 Jun 2011 14:32:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10176973</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10176973</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2011/06/20/biztalk-2010-real-world-example-part-1.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I wanted to write this blog for the benefit of anyone trying to dip their toes in the BizTalk pond. BizTalk is a great tool and has many different uses. The example that I will present is based on my work at the Dept. of Corrections. This example will be broken out into 4 different parts, each describing a part of BizTalk that everyone will basically use when building a project of this kind. This example will cover Schemas, Mapping, Consuming an WCF Service through a Orchestration and Deploying a project to the Admin Console. This example takes in consideration that you are familiar with BizTalk components.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Background&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;OK, as part of DOC's ongoing enterprise integration strategy to use a common mechanism to communicate among all the internal application and external 3rd party vendors, we need to come up with a common way to get information about offenders to our partners that was easy to understand, as well as easy to implement internally. After a lot of analysis and some Bing searches, we came up with a collection of commonly used elements that described an offender. This schema was called... wait for it, Common Offender or CO. CO is based on a Dept of Justice standard called &lt;a href="http://www.niem.gov/whatIsNiem.php"&gt;National Information Exchange Model (NIEM). &lt;/a&gt;NIEM is a Federal, State, Local and Tribal inter-agency initiative providing a foundation for seamless information exchange. It leverages the data exchange standards through XML schemas implemented by the Global Justice Information Sharing Initiative (Global) and extends the Global Justice XML Data Model (GJXDM). &lt;/p&gt;  &lt;p&gt;After we stabilized CO, our first test with it was to integrate our Partner Pharmacy Services to our OMS (Offender Management System). The requirement was to send all offender information to the partner, if the offender was a new intake, being transfer to another institutions or being released. Now that we have to background out of the way, let's start the example.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Setting up your environment&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The first thing we need to do is setup our environment. You will need to install the BizTalk 2010 development components from the DVD onto your development PC. After the install is complete, I highly recommend that you install the &lt;a href="http://bsf.codeplex.com/releases/view/60341"&gt;BizTalk Software Factory&lt;/a&gt;. This example will use the software factory. I usually like software factories because it will define your project by best practices. Don't forget you will need a BizTalk development server. OK, let's design the schema. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Design Common Offender Schema&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Remember, creating a schema is defining a structure of the data, it is very similar to creating a table in database. Designing schema plays a vital role in Integration projects. I will now walk you through the Common Offender Schema design in BizTalk 2010.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Common Offender Example&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To give you a more in depth look at Common Offender, take a look below at the base example. &lt;/p&gt;  &lt;p&gt;&amp;lt;ns0:Offender xmlns:ns0=&lt;a href="http://Doc.Schemas.CommonOffender/2011/2"&gt;http://Doc.Schemas.CommonOffender/2011/2&lt;/a&gt;&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;DocType&amp;gt;100&amp;lt;/DocType&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;LastUpdatedDate&amp;gt;3/1/2011&amp;lt;/LastUpdatedDate&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;PersonSurName&amp;gt;Spinella&amp;lt;/PersonSurName&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;PersonGivenName&amp;gt;John&amp;lt;/PersonGivenName&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;PersonMiddleName&amp;gt;Robert&amp;lt;/PersonMiddleName&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;PersonSuffixName&amp;gt;&amp;lt;/PersonSuffixName&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;DOCnumber&amp;gt;55458547&amp;lt;/DOCnumber&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;PersonDigitalImage&amp;gt;&amp;lt;/PersonDigitalImage&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;PersonName&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;PersonAlternateName&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;PersonNameType&amp;gt;&amp;lt;/PersonNameType&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;PersonFullName&amp;gt;John R. Spinella&amp;lt;/PersonFullName&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/PersonAlternateName&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;/PersonName&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;BirthDates&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EventDate&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;BirthType&amp;gt;&amp;lt;/BirthType&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;PersonBirthDate&amp;gt;11/30/1972&amp;lt;/PersonBirthDate&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;PersonAgeMeasure&amp;gt;38&amp;lt;/PersonAgeMeasure&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/EventDate&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;/BirthDates&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;SubjectStatus&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;reportingOrganizationText&amp;gt;Red Onion&amp;lt;/reportingOrganizationText&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EarliestReleaseDate&amp;gt;&amp;lt;/EarliestReleaseDate&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Status&amp;gt;In-Custody&amp;lt;/Status&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;StatusDate&amp;gt;3/1/2011&amp;lt;/StatusDate&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Location&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;LocationName&amp;gt;Red Onion&amp;lt;/LocationName&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Unit&amp;gt;E&amp;lt;/Unit&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Wing&amp;gt;4&amp;lt;/Wing&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Room&amp;gt;223&amp;lt;/Room&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Bed&amp;gt;4&amp;lt;/Bed&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Location&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;/SubjectStatus&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;PersonPhysicalDetails&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;PersonEyeColorText&amp;gt;Brown&amp;lt;/PersonEyeColorText&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;PersonHairColorText&amp;gt;Black&amp;lt;/PersonHairColorText&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;PersonHeightMeasure&amp;gt;5'8&amp;quot;&amp;lt;/PersonHeightMeasure&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;PersonWeightMeasure&amp;gt;192&amp;lt;/PersonWeightMeasure&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;PersonSexText&amp;gt;Male&amp;lt;/PersonSexText&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;PersonRaceText&amp;gt;White&amp;lt;/PersonRaceText&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;/PersonPhysicalDetails&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;Convictions/&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;LocationHistory/&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;DisciplinaryReports/&amp;gt;     &lt;br /&gt;&amp;lt;/ns0:Offender&amp;gt;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="644"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="199"&gt;&lt;font style="background-color: #ffffff"&gt;DocType&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top" width="443"&gt;&lt;font style="background-color: #ffffff"&gt;Explanation&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;100&lt;/td&gt;        &lt;td valign="top" width="443"&gt;This is the initial state of a CO, which is processed by the Intake. &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;101&lt;/td&gt;        &lt;td valign="top" width="443"&gt;This is the second state of a CO, which is processed by the Transfer. &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;102&lt;/td&gt;        &lt;td valign="top" width="443"&gt;This is the last state of a CO, which is processed by the Released. &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;As you can see, the schema is broken down into distinct parts describing the offender. Each describing a part of the offender identity. I do not include gang information in this schema but you can extend this schema very easily to meet any part of your business. You see that I use a internal variable through the schema. I went down this route because we were going for a routing mechanism based on the Message Broker pattern.&lt;/p&gt;  &lt;p&gt;Next part in the series will be showing you how to match up the Common Offender schema to destination schemas in the BTS Mapper.&amp;#160; I will also include code in the next post.&lt;/p&gt;  &lt;p&gt;Happing Coding&lt;/p&gt;  &lt;p&gt;John&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10176973" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/General/">General</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Windows/">Windows</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/-NET/">.NET</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/BizTalk/">BizTalk</category></item><item><title>Visual Studio 2010 Lab Management Guidance Released</title><link>http://blogs.msdn.com/b/jrspinella/archive/2011/06/20/visual-studio-2010-lab-management-guidance-released.aspx</link><pubDate>Mon, 20 Jun 2011 13:22:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10176951</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10176951</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2011/06/20/visual-studio-2010-lab-management-guidance-released.aspx#comments</comments><description>&lt;p&gt;The Visual Studio ALM Rangers have finally shipped the Visual Studio 2010 Lab Management Guidance. &lt;/p&gt;  &lt;p&gt;Check it out here…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/willy-peter_schaub/"&gt;Rangers blog&lt;/a&gt; or on Codeplex &lt;a title="http://ralabman.codeplex.com/" href="http://ralabman.codeplex.com/"&gt;http://ralabman.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Happy Coding!&lt;/p&gt;  &lt;p&gt;John&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10176951" width="1" height="1"&gt;</description></item><item><title>VSTS Rangers Build Management Guide Released</title><link>http://blogs.msdn.com/b/jrspinella/archive/2011/06/20/vsts-rangers-lab-management-guide-released.aspx</link><pubDate>Mon, 20 Jun 2011 13:17:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10176950</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10176950</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2011/06/20/vsts-rangers-lab-management-guide-released.aspx#comments</comments><description>&lt;p&gt;The Visual Studio ALM Rangers have finally shipped the Visual Studio 2010 Build Management Guidance. I have to say this is great guidance, great work from the Rangers!&lt;/p&gt;  &lt;p&gt;Check it out here…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/willy-peter_schaub/archive/2011/06/18/we-have-shipped-visual-studio-build-customization-guidance.aspx"&gt;Rangers blog&lt;/a&gt; or on Codeplex &lt;a title="http://rabcg.codeplex.com/" href="http://rabcg.codeplex.com/"&gt;http://rabcg.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Happy Coding!&lt;/p&gt;  &lt;p&gt;John&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10176950" width="1" height="1"&gt;</description></item><item><title>Learn how ASP.NET apps scale via the cloud</title><link>http://blogs.msdn.com/b/jrspinella/archive/2011/06/16/learn-how-asp-net-apps-scale-via-the-cloud.aspx</link><pubDate>Thu, 16 Jun 2011 19:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10175423</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10175423</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2011/06/16/learn-how-asp-net-apps-scale-via-the-cloud.aspx#comments</comments><description>&lt;p&gt;I just watched a great webcast on learning how to scale your asp.net applications with Windows Azure. Below is a snippet from the cast.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Common scenario: you suddenly need to increase the horsepower behind your application (or some combination of compute, storage and bandwidth). The following week, you want to scale back with minimal changes to your codebase but don't have the manpower to babysit the additional infrastructure for security patches or OS upgrades. Sound familiar? &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This web cast session walks you through the steps needed to address your server needs (with Windows Communication Foundation - WCF) and web requirements (Microsoft ASP.NET MVC, Web Forms, Microsoft Silverlight). Say you need more horsepower today, less tomorrow.&amp;nbsp; Hear how Brian Prince focuses on the app, not the infrastructure.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/events/series/azure.aspx?tab=Webcasts&amp;amp;seriesid=155&amp;amp;webcastid=17661"&gt;Tap the Cloud For Your ASP.NET apps&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then &lt;a href="http://bit.ly/WEBPASS"&gt;try Azure at no cost&lt;/a&gt; CODE webcastpass, and deploy your 1st app &lt;a href="http://bit.ly/kr5tF9"&gt;in as little as 30 mins&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Happy Coding!&lt;/p&gt;
&lt;p&gt;John&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10175423" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/General/">General</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/ASP-NET/">ASP.NET</category></item><item><title>Windows 8 on the horizon!</title><link>http://blogs.msdn.com/b/jrspinella/archive/2011/06/02/windows-8-on-the-horizon.aspx</link><pubDate>Thu, 02 Jun 2011 22:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10170895</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10170895</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2011/06/02/windows-8-on-the-horizon.aspx#comments</comments><description>&lt;p&gt;So, many of you have seen or heard about the sneak peek of the new version of Windows. I have read some of the articles and I have to say it looks pretty cool!&amp;nbsp; One of the big things is how they integrated HTML5 and Javascript,&amp;nbsp; so if you wanted to write new applications specifically designed for &amp;ldquo;Windows 8&amp;rdquo; it&amp;rsquo;s now possible using these tools. Opens up&amp;nbsp;a lot possibilities;&amp;nbsp;how cool is that!&lt;/p&gt;
&lt;p&gt;Check out this, if you want to learn more...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/bryang/archive/2011/06/02/windows-8.aspx"&gt;http://blogs.msdn.com/b/bryang/archive/2011/06/02/windows-8.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;John&lt;/p&gt;
&lt;p&gt;Happy Coding!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10170895" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/General/">General</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Windows/">Windows</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Windows+8/">Windows 8</category></item><item><title>Visual Studio ALM videos at Microsoft TechEd 2011</title><link>http://blogs.msdn.com/b/jrspinella/archive/2011/05/31/visual-studio-alm-videos-at-microsoft-teched-2011.aspx</link><pubDate>Tue, 31 May 2011 13:27:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10169894</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10169894</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2011/05/31/visual-studio-alm-videos-at-microsoft-teched-2011.aspx#comments</comments><description>&lt;p&gt;Hello Everyone,&lt;/p&gt;
&lt;p&gt;Here is a blog post from &lt;a href="http://blogs.msdn.com/b/vsarch/"&gt;Visual Studio Architecture, Visualization, Modeling, and UML Tools&lt;/a&gt;&amp;nbsp;blog site. This blog post talks about what was presented at TechEd 2011 for Visual Studio ALM. &lt;/p&gt;
&lt;p&gt;Take a look...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/vsarch/archive/2011/05/27/visual-studio-alm-at-microsoft-teched-2011.aspx"&gt;http://blogs.msdn.com/b/vsarch/archive/2011/05/27/visual-studio-alm-at-microsoft-teched-2011.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Happy Coding!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10169894" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/General/">General</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/ALM/">ALM</category></item><item><title>Handling Exceptions when Sending Mail via System.Net.Mail</title><link>http://blogs.msdn.com/b/jrspinella/archive/2011/05/31/handling-exceptions-when-sending-mail-via-system-net-mail.aspx</link><pubDate>Tue, 31 May 2011 11:24:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10169861</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10169861</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2011/05/31/handling-exceptions-when-sending-mail-via-system-net-mail.aspx#comments</comments><description>&lt;p&gt;I am sure alot of us when sending mail from a web application, we sometimes run into&amp;nbsp;some unforeseen error becuase the mail being sent&amp;nbsp;threw an exception. How do we solve this?&amp;nbsp;Do we just throw the exception&amp;nbsp;and that's it. No, If we look into this problem a little closer, the majority of mail server interruptions are very temporary, only lasting a few seconds. Instead of throwing the exception right away, why not try&amp;nbsp;sending the mail again?&lt;/p&gt;
&lt;p&gt;If there is a problem of any kind at the SMTP server level, the server reports an exception, you will&amp;nbsp;probally use&amp;nbsp;&lt;strong&gt;SmtpException &lt;/strong&gt;to handle this. While using the &lt;strong&gt;SmtpException&lt;/strong&gt; works well, its functionality is limited in determining exactly how the send failed.&lt;br /&gt;&lt;br /&gt;Why do we care? Well, sometimes our mail server is experiencing a serious issue, and most likely, there&amp;rsquo;s nothing you can do about it. But, when a SMTP server reports an error, the actual problem is not with the server itself but with an individual mailbox. The most common cause of mailbox issues are as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The destination mailbox is currently in use. If this occurs, only lasts a short amount of time.&lt;/li&gt;
&lt;li&gt;The mailbox is unavailable. This may mean that there is actually no such address on the server, but it may also mean that the search for the mailbox simply timed out.&lt;/li&gt;
&lt;li&gt;The transaction with the mailbox failed. The reasons for this can be somewhat mysterious; but like a stubborn web page, sometimes a second nudge is all it takes to do the trick.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What does this tell us? With a little more coding, we could gracefully recover from the majority of email send failures by detecting these particular conditions and attempting the send a second time.&lt;br /&gt;&lt;br /&gt;Remember, if a second mail send happens to fail, then it&amp;rsquo;s very likely that the problem is not temporary, in which case there is not reason continuing to handle the exception at this point. When that happens, we can allow the exception to bubble up to the calling page as it normally would.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 130%;"&gt;&lt;strong&gt;Handling the Exceptions&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Problems with mailboxes is that they are not easily discovered by catching &lt;strong&gt;SmtpException&lt;/strong&gt;. Fortunately, there is a more derived type called &lt;strong&gt;SmtpFailedRecipientException&lt;/strong&gt; that the .NET Framework uses to wrap errors reported from an individual mailbox. This exception contains a &lt;strong&gt;StatusCode &lt;/strong&gt;property of type enum that will tell us the exact cause of the error.&lt;br /&gt;&lt;br /&gt;Obvserve in the following code below:&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="csharp"&gt;&lt;pre class="scroll"&gt;&lt;code class="csharp"&gt;using System.Net.Mail;&lt;br /&gt;
using System.Threading;&lt;br /&gt;
using System.Web.Configuration;&lt;br /&gt;
&lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
/// Provides a method for sending email.&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
public static class Email&lt;br /&gt;
{&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    /// Constructs and sends an email message.&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;/// &amp;lt;param name="fromName"&amp;gt;The display name of the person the email is from.&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;param name="fromEmail"&amp;gt;The email address of the person the email is from.&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;param name="subject"&amp;gt;The subject of the email.&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;param name="body"&amp;gt;The body of the email.&amp;lt;/param&amp;gt;&lt;br /&gt;public static void Send(string fromName, string fromEmail, string subject, string body)&lt;br /&gt;
    {&lt;br /&gt;MailMessage message = new MailMessage&lt;br /&gt;
        {&lt;br /&gt;IsBodyHtml = false,&lt;br /&gt;From = new MailAddress(fromEmail, fromName),&lt;br /&gt;
            Subject = subject,&lt;br /&gt;
            Body = body&lt;br /&gt;
        };&lt;br /&gt;message.To.Add(WebConfigurationManager.AppSettings["mailToAddress"]);&lt;br /&gt;
&lt;br /&gt;
        Send(message);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;private static void Send(MailMessage message)&lt;br /&gt;
    {&lt;br /&gt;SmtpClient client = new SmtpClient();&lt;br /&gt;
&lt;br /&gt;
        try&lt;br /&gt;
        {&lt;br /&gt;
            client.Send(message);&lt;br /&gt;
        }&lt;br /&gt;catch (SmtpFailedRecipientException ex)&lt;br /&gt;
        {&lt;br /&gt;SmtpStatusCode statusCode = ex.StatusCode;&lt;br /&gt;
&lt;br /&gt;if (statusCode == SmtpStatusCode.MailboxBusy ||&lt;br /&gt;statusCode == SmtpStatusCode.MailboxUnavailable ||&lt;br /&gt;statusCode == SmtpStatusCode.TransactionFailed)&lt;br /&gt;
            {&lt;br /&gt;
                // wait 5 seconds, try a second time&lt;br /&gt;
                Thread.Sleep(5000);&lt;br /&gt;
                client.Send(message);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                throw;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        finally&lt;br /&gt;
        {&lt;br /&gt;
            message.Dispose();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code class="csharp"&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;As you can see in the above code block, we&amp;rsquo;re catching the &lt;strong&gt;SmtpFailedRecipientException&lt;/strong&gt; that is thrown as a result of the mailbox error, and examining its &lt;strong&gt;StatusCode&lt;/strong&gt;before actually handling the exception. If the reported error is due to the mailbox being busy or unavailable, or the transaction fails, we are using the Thread.Sleep(5000) method to wait five seconds before trying the send the mail message again. If the error is caused by any other reason, the exception is passed unhandled back to the caller, and subsequently back to the page, where it will be handled as its base type. A failure on the second send will also cause the exception to propagate back to the page.&lt;br /&gt;&lt;br /&gt;Hope this helps... Happy Coding!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10169861" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/General/">General</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Mail/">Mail</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/SMTP/">SMTP</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/ASP-NET/">ASP.NET</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Windows/">Windows</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/-NET/">.NET</category></item><item><title>My first blog post</title><link>http://blogs.msdn.com/b/jrspinella/archive/2011/05/30/my-first-blog-post.aspx</link><pubDate>Tue, 31 May 2011 00:24:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10169729</guid><dc:creator>John R. Spinella</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jrspinella/rsscomments.aspx?WeblogPostID=10169729</wfw:commentRss><comments>http://blogs.msdn.com/b/jrspinella/archive/2011/05/30/my-first-blog-post.aspx#comments</comments><description>&lt;p&gt;Hello Everyone!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This is my first blog post on my new official MSDN blog site. I am very excited to be part of a great company and help other developers like me with topics like ALM, TFS and Windows Azure. As more time pasts, you will find me posting blogs about my experiences and events that will hopefully help anyone who reads them or at least point them in the right direction. Please check back from time to time as I will be writing blogs soon.&lt;/p&gt;
&lt;p&gt;Thanks for coming to my blog!&lt;/p&gt;
&lt;p&gt;John &lt;/p&gt;
&lt;p&gt;Happy Coding!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10169729" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/General/">General</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/jrspinella/archive/tags/ALM/">ALM</category></item></channel></rss>