<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Tfsrocks's Blog</title>
	<atom:link href="http://tfsrocks.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://tfsrocks.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Mon, 04 Jul 2011 03:25:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='tfsrocks.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Tfsrocks's Blog</title>
		<link>http://tfsrocks.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://tfsrocks.wordpress.com/osd.xml" title="Tfsrocks&#039;s Blog" />
	<atom:link rel='hub' href='http://tfsrocks.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Precis  &#8211; from the book “Powerful Proposals&#8221;</title>
		<link>http://tfsrocks.wordpress.com/2011/07/03/precis-from-the-book-%e2%80%9cpowerful-proposals/</link>
		<comments>http://tfsrocks.wordpress.com/2011/07/03/precis-from-the-book-%e2%80%9cpowerful-proposals/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 03:25:08 +0000</pubDate>
		<dc:creator>tfsrocks</dc:creator>
				<category><![CDATA[Business development]]></category>
		<category><![CDATA[Proposal management]]></category>
		<category><![CDATA[Proposal writing]]></category>

		<guid isPermaLink="false">http://tfsrocks.wordpress.com/?p=163</guid>
		<description><![CDATA[The book “Powerful Proposals” by David G.Pugh &#38; Terry R.Bacon seems to be a must read for those who start Proposal writing or Proposal Management or Business development. Especially this book demystifies basics of proposal writing and management from both the sides…precisely talks about the buyers, evaluation process, proposal lifecycle &#38; quality indicators of a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=163&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The book “Powerful Proposals” by David G.Pugh &amp; Terry R.Bacon seems to be a must read for those who start Proposal writing or Proposal Management or Business development. Especially this book demystifies basics of proposal writing and management from both the sides…precisely talks about the buyers, evaluation process, proposal lifecycle &amp; quality indicators of a proposal etc.. guess below précis could benefit those who can’t read the complete book…<a href="http://tfsrocks.files.wordpress.com/2011/07/precis-proposal-writing.docx">Precis-Proposal writing</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tfsrocks.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tfsrocks.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tfsrocks.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tfsrocks.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tfsrocks.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tfsrocks.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tfsrocks.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tfsrocks.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tfsrocks.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tfsrocks.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tfsrocks.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tfsrocks.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tfsrocks.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tfsrocks.wordpress.com/163/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=163&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tfsrocks.wordpress.com/2011/07/03/precis-from-the-book-%e2%80%9cpowerful-proposals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ca9c2e686e12d0847cfba7e1bb601cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tfsrocks</media:title>
		</media:content>
	</item>
		<item>
		<title>Classic Build Maturity path</title>
		<link>http://tfsrocks.wordpress.com/2011/06/20/classic-build-maturity-path/</link>
		<comments>http://tfsrocks.wordpress.com/2011/06/20/classic-build-maturity-path/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 03:33:21 +0000</pubDate>
		<dc:creator>tfsrocks</dc:creator>
				<category><![CDATA[Configuration and build management]]></category>
		<category><![CDATA[Build Management]]></category>
		<category><![CDATA[Configuration Management]]></category>
		<category><![CDATA[configuration management best practices]]></category>

		<guid isPermaLink="false">http://tfsrocks.wordpress.com/?p=143</guid>
		<description><![CDATA[Often there are some questions from the management with respect to build management space, especially when code promotions/release take more time, late night fire fighting over a period or build promotion flunked and QA team raises concerns 1. What is my build maturity? 2. Where does it stand against industry best practices? 3. My build [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=143&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Often there are some questions from the management with respect to build management space, especially when code promotions/release take more time, late night fire fighting over a period or build promotion flunked and QA team raises concerns</p>
<p>1. What is my build maturity?</p>
<p>2. Where does it stand against industry best practices?</p>
<p>3. My build engineer says we have the best process but still it fails often, takes longer duration and I feel some gap….</p>
<p>I tried putting together a classic build maturity path which could help us to comprehend the current state and best state too…I certainly think the maturity could vary based on the application/product architecture and there could be genuine reasons towards some of the current facts … however, I trust this could be a starting point when we stand clueless</p>
<p>I categorize them from Stage 0 thru Stage 4 as shown below</p>
<p><img src="http://tfsrocks.files.wordpress.com/2011/06/062111_0333_classicbuil11.png?w=645" alt="" /></p>
<p>If you are following Agile methodology, I swear anything lesser than Stage 4 is affecting your delivery, quality &amp; productivity. There are plenty of tools in the market which could help you to uplift from wherever you are today and reach Stage 4 fairly in about 6 months time.</p>
<p>Hope this post is useful.</p>
<p>Thanks!!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tfsrocks.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tfsrocks.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tfsrocks.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tfsrocks.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tfsrocks.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tfsrocks.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tfsrocks.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tfsrocks.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tfsrocks.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tfsrocks.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tfsrocks.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tfsrocks.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tfsrocks.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tfsrocks.wordpress.com/143/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=143&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tfsrocks.wordpress.com/2011/06/20/classic-build-maturity-path/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ca9c2e686e12d0847cfba7e1bb601cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tfsrocks</media:title>
		</media:content>

		<media:content url="http://tfsrocks.files.wordpress.com/2011/06/062111_0333_classicbuil11.png" medium="image" />
	</item>
		<item>
		<title>Track TFS group membership changes</title>
		<link>http://tfsrocks.wordpress.com/2011/03/08/track-tfs-group-membership-changes/</link>
		<comments>http://tfsrocks.wordpress.com/2011/03/08/track-tfs-group-membership-changes/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 10:50:26 +0000</pubDate>
		<dc:creator>tfsrocks</dc:creator>
				<category><![CDATA[TFS]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[TFS API]]></category>

		<guid isPermaLink="false">http://tfsrocks.wordpress.com/2011/03/08/track-tfs-group-membership-changes/</guid>
		<description><![CDATA[TFS provides quite a few automated notifications out of the box. For example, you can right click on the team project from team explorer and navigate to Project Alerts to view and set the available alerts. Typically we see following options to set alerts Should we need additional notifications, we can always extend TFS &#38; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=132&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">TFS provides quite a few automated notifications out of the box. For example, you can right click on the team project from team explorer and navigate to Project Alerts to view and set the available alerts.<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">Typically we see following options to set alerts<br />
</span></p>
<p><img src="http://tfsrocks.files.wordpress.com/2011/03/030811_1049_tracktfsgro12.png?w=645" alt="" /><span style="font-family:Helvetica;font-size:10pt;"><br />
</span></p>
<p><span style="font-size:10pt;"><span style="color:#1d13a5;font-family:Tahoma;">Should we need additional notifications, we can always extend TFS &amp; utilize the event service. TFS offers the option to register, subscribe for event notifications and process the captured events. For detailed documentation on event subscription, please navigate</span><span style="font-family:Helvetica;"><br />
<a href="http://msdn.microsoft.com/en-us/magazine/cc507647.aspx"><span style="color:blue;text-decoration:underline;">here</span></a>.<br />
</span></span></p>
<p><span style="font-size:10pt;"><span style="color:#1d13a5;font-family:Tahoma;">And also there is an event subscription tool available in</span><span style="font-family:Helvetica;"><br />
<a href="http://tfseventsubscription.codeplex.com/"><span style="color:blue;text-decoration:underline;">Codeplex</span></a>.<br />
</span></span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">However, if we look at the available events, there is no solution to track TFS group membership changes. This is one of the critical needs during auditing. So, below is an attempt to address this partially.<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">The approach that I&#8217;ve outlined below would capture the event, process the Sequence Id to read more details on that specific sequence id and log an entry in your event viewer.<br />
</span></p>
<h1><span style="color:#4bacc6;">First let&#8217;s create an event handler<br />
</span></h1>
<h1><span style="color:#4bacc6;">1. Create a web service project<br />
</span></h1>
<p><img src="http://tfsrocks.files.wordpress.com/2011/03/030811_1049_tracktfsgro21.png?w=645" alt="" /><span style="font-family:Helvetica;font-size:10pt;"><br />
</span></p>
<p><img src="http://tfsrocks.files.wordpress.com/2011/03/030811_1049_tracktfsgro31.png?w=645" alt="" /><span style="font-family:Helvetica;font-size:10pt;"><br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">Code behind the Web Service<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">using</span> System;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">using</span> System.Xml;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">using</span> System.Net;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">using</span> System.Linq;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">using</span> System.IO;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">using</span> System.Diagnostics;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">using</span> System.Security.Principal;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">using</span> System.Collections.Generic;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">using</span> System.Web;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">using</span> System.Web.Services;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">using</span> System.Web.Services.Protocols;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">using</span> Microsoft.TeamFoundation;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">using</span> Microsoft.TeamFoundation.Server;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">using</span> Microsoft.TeamFoundation.Client;<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">Add above references.<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">Change the Namespace and class name as needed. Here I&#8217;ve changed the Namespace to &#8220;My_TFSEventCapture&#8221; and class to &#8220;DataChangedEvent&#8221;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">namespace</span> TFSDataChangedEventCatch<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">{<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:gray;">///</span><span style="color:green;"><br />
</span><span style="color:gray;">&lt;summary&gt;</span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:gray;">///</span><span style="color:green;"> Summary description for Service1</span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:gray;">///</span><span style="color:green;"><br />
</span><span style="color:gray;">&lt;/summary&gt;</span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">[<span style="color:#2b91af;">WebService</span>(Namespace = <span style="color:#a31515;">"My_TFSEventCapture"</span>)]<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">[<span style="color:#2b91af;">WebServiceBinding</span>(ConformsTo = <span style="color:#2b91af;">WsiProfiles</span>.BasicProfile1_1)]<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">[System.ComponentModel.<span style="color:#2b91af;">ToolboxItem</span>(<span style="color:blue;">false</span>)]<br />
</span></p>
<p style="margin-left:22pt;"><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:green;">// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. </span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:green;">// [System.Web.Script.Services.ScriptService]</span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">public</span><br />
<span style="color:blue;">class</span><br />
<span style="color:#2b91af;">DataChangedEvent</span> : System.Web.Services.<span style="color:#2b91af;">WebService</span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">{<br />
</span></p>
<p style="margin-left:22pt;"><span style="font-family:Consolas;font-size:9pt;">[SoapDocumentMethod(Action =<br />
"http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03/Notify",<br />
RequestNamespace="http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03")]<br />
</span></p>
<p> </p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">Following Web method should contain logic to process the event notification. Typically eventXml contains notification data. In our case the eventXml will have a Sequence ID and Data type.<br />
</span></p>
<p><span style="font-family:Helvetica;font-size:10pt;">Example:<br />
    </span><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">&lt;?</span><span style="color:#a31515;">xml</span><span style="color:blue;"><br />
</span><span style="color:red;">version</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">1.0</span>&#8220;<span style="color:blue;"><br />
</span><span style="color:red;">encoding</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">utf-16</span>&#8220;<span style="color:blue;">?&gt;</span><br />
</span></p>
<p style="margin-left:36pt;"><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">&lt;</span><span style="color:#a31515;">DataChangedEvent</span><span style="color:blue;"><br />
</span><span style="color:red;">xmlns:xsi</span><span style="color:blue;">=<a href="http://www.w3.org/2001/XMLSchema-instance"><span style="text-decoration:underline;">http://www.w3.org/2001/XMLSchema-instance</span></a><br />
</span><span style="color:red;">xmlns:xsd</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">http://www.w3.org/2001/XMLSchema</span>&#8220;<span style="color:blue;">&gt;</span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;"><br />
<span style="background-color:silver;">&lt;</span></span><span style="color:#a31515;background-color:silver;">DataType</span><span style="color:blue;background-color:silver;">&gt;</span><span style="background-color:silver;">IDENTITY<span style="color:blue;">&lt;/</span><span style="color:#a31515;">DataType</span><span style="color:blue;">&gt;</span><br />
</span></span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;background-color:silver;">&lt;</span><span style="color:#a31515;background-color:silver;">SeqId</span><span style="color:blue;background-color:silver;">&gt;</span><span style="background-color:silver;">194<span style="color:blue;">&lt;/</span><span style="color:#a31515;">SeqId</span><span style="color:blue;">&gt;</span></span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><span style="color:blue;">&lt;/</span><span style="color:#a31515;">DataChangedEvent</span><span style="color:blue;">&gt;<br />
</span></span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">Need to validate the Data type and ensure its IDENTITY then process the Sequence Id.<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">[<span style="color:#2b91af;">WebMethod</span>]<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">public</span><br />
<span style="color:blue;">void</span> Notify(<span style="color:blue;">string</span> eventXml, <span style="color:blue;">string</span> tfsIdentityXml)<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">{<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:green;">//Write your custom code here</span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:green;">//Use eventXml to extract event related fields and their values</span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:#2b91af;">XmlDocument</span> myXmlDocument = <span style="color:blue;">new</span><br />
<span style="color:#2b91af;">XmlDocument</span>();<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">myXmlDocument.LoadXml(eventXml);<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:#2b91af;">XmlNode</span> node;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">node = myXmlDocument.DocumentElement;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">int</span> SeqId = <span style="color:blue;">int</span>.Parse(node.SelectSingleNode(<span style="color:#a31515;">&#8220;SeqId&#8221;</span>).InnerText) &#8211; 1;<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">Now, pass the SequenceId &amp; get the identity changes from IGroupSecurityService2.<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">foreach</span> (<span style="color:#2b91af;">XmlNode</span> node2 <span style="color:blue;">in</span> node.ChildNodes)<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">{<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">if</span> (node2.Name == <span style="color:#a31515;">&#8220;DataType&#8221;</span> &amp;&amp; SeqId != 0 &amp;&amp; node2.InnerText == <span style="color:#a31515;">&#8220;IDENTITY&#8221;</span>)<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">{<br />
</span></p>
<p style="margin-left:85pt;"><span style="font-family:Consolas;font-size:9pt;"><span style="color:#2b91af;">TfsTeamProjectCollection</span> tpc = <span style="color:blue;">new</span><br />
<span style="color:#2b91af;">TfsTeamProjectCollection</span>(<span style="color:blue;">new</span><br />
<span style="color:#2b91af;">Uri</span>(<span style="color:#a31515;">&#8220;http://TFSDemo:8080/tfs2010&#8243;</span>), <span style="color:blue;">new</span><br />
<span style="color:#2b91af;">NetworkCredential</span>(<span style="color:#a31515;">&#8220;user&#8221;</span>, <span style="color:#a31515;">&#8220;password&#8221;</span>, <span style="color:#a31515;">&#8220;domain&#8221;</span>));<br />
</span></p>
<p style="margin-left:85pt;"><span style="font-family:Consolas;font-size:9pt;"><span style="color:#2b91af;">//try catch here</span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">tpc.EnsureAuthenticated();<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:#2b91af;">IGroupSecurityService2</span> gss3 = tpc.GetService&lt;<span style="color:#2b91af;">IGroupSecurityService2</span>&gt;();<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">var</span> ChangedIdentities = gss3.GetChangedIdentities(SeqId);<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">WriteTrace(<span style="color:#a31515;">&#8220;IdentityChanges&#8221;</span> + <span style="color:#a31515;">&#8220;\\n&#8221;</span> + ChangedIdentities);<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">ProcessChangedIdentities(ChangedIdentities);<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">}<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">}<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">}<br />
</span></p>
<p><span style="font-family:Helvetica;font-size:10pt;">GetChangedIdentities returns a string like<br />
&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-16&#8243;?&gt;&lt;IdentityChanges MaxSequence=&#8221;194&#8243; fMore=&#8221;0&#8243;&gt;&lt;Identities&gt;&lt;Identity SID=&#8221;S-1-5-21-919044463-614821983-2752388159-1014&#8243; AccountName=&#8221;Visitor&#8221; DisplayName=&#8221;Visitor&#8221; DistinguishedName=&#8221;WinNT://TFSDemo/Visitor&#8221; Domain=&#8221;Demo&#8221; MailAddress=&#8221;" SpecialType=&#8221;Generic&#8221; Type=&#8221;WindowsUser&#8221; Deleted=&#8221;False&#8221; /&gt;&lt;Identity SID=&#8221;S-1-9-1551374245-4271671090-1142510150-2272580956-3725988686-1-1830461201-1958035529-2898280848-1812300448&#8243; AccountName=&#8221;Contributors&#8221; DisplayName=&#8221;[SampleAgile]\Contributors&#8221; DistinguishedName=&#8221;" Domain=&#8221;vstfs:///Classification/TeamProject/9eb7de28-b3d3-4afe-9ea4-6da938d0c46c&#8221; MailAddress=&#8221;" SpecialType=&#8221;Generic&#8221; Type=&#8221;ApplicationGroup&#8221; Deleted=&#8221;False&#8221;&gt;&lt;Members&gt;&lt;Member SID=&#8221;S-1-5-21-919044463-614821983-2752388159-1014&#8243; /&gt;&lt;Member SID=&#8221;S-1-5-21-919044463-614821983-2752388159-1000&#8243; /&gt;&lt;/Members&gt;&lt;/Identity&gt;&lt;/Identities&gt;&lt;/IdentityChanges&gt;<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">The result string should be analyzed to determine the type of operation. Key nodes to grasp from the resultant string<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">1. SID<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">2. Account name<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">3. Type (WindowsUser, ApplicationGroup etc)<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">4. Deleted (True, False)<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">Typically, the resultant string contains 2 Identities.<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">For delete operation Deleted will reflect True, False otherwise.<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">Following logic should construct a message like &#8220;User ADDED to SomeGroup&#8221; or &#8220;User DELETED from SomeGroup&#8221;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">private</span><br />
<span style="color:blue;">void</span> ProcessChangedIdentities(<span style="color:blue;">string</span> ChangedIdentities)<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">{<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">string</span> message = <span style="color:blue;">null</span>;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:#2b91af;">XmlDocument</span> myXmlDocument = <span style="color:blue;">new</span><br />
<span style="color:#2b91af;">XmlDocument</span>();<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">myXmlDocument.LoadXml(ChangedIdentities);<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:#2b91af;">XmlNodeList</span> xnList = myXmlDocument.SelectNodes(<span style="color:#a31515;">&#8220;/IdentityChanges/Identities/Identity&#8221;</span>);<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">WriteTrace(<span style="color:#a31515;">&#8220;Identity change Count &#8220;</span> + xnList.Count);<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">if</span> (xnList.Count == 2)<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">{<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">if</span> ((<span style="color:blue;">string</span>)xnList[0].Attributes[<span style="color:#a31515;">"Type"</span>].InnerText == <span style="color:#a31515;">&#8220;WindowsUser&#8221;</span> &amp;&amp; (<span style="color:blue;">string</span>)xnList[0].Attributes[<span style="color:#a31515;">"Deleted"</span>].InnerText == <span style="color:#a31515;">&#8220;True&#8221;</span>)<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">{<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">message = (<span style="color:blue;">string</span>)xnList[0].Attributes[<span style="color:#a31515;">"DisplayName"</span>].InnerText + <span style="color:#a31515;">&#8221; DELETED from &#8220;</span> + (<span style="color:blue;">string</span>)xnList[1].Attributes[<span style="color:#a31515;">"DisplayName"</span>].InnerText;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">}<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">else</span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">{<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">message = (<span style="color:blue;">string</span>)xnList[0].Attributes[<span style="color:#a31515;">"DisplayName"</span>].InnerText + <span style="color:#a31515;">&#8221; ADDED to &#8220;</span> + (<span style="color:blue;">string</span>)xnList[1].Attributes[<span style="color:#a31515;">"DisplayName"</span>].InnerText;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">}<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">}<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">else</span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">{<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:green;">//something wrong &#8211; exception</span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">}<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">WriteToEventLog(message);<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">}<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">Below method is written to write the message to the event viewer into Application node.<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">private</span><br />
<span style="color:blue;">void</span> WriteToEventLog(<span style="color:blue;">string</span> message)<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">{<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:green;">//you need to adjust registry settings</span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:green;">//http://social.msdn.microsoft.com/forums/en-US/windowsgeneraldevelopmentissues/thread/00a043ae-9ea1-4a55-8b7c-d088a4b08f09/</span><br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">WriteTrace(<span style="color:#a31515;">&#8220;Attempting to write eventlog&#8221;</span>);<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">WriteTrace(message);<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">string</span> sSource = <span style="color:#a31515;">&#8220;TFS Group membership change&#8221;</span>;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">string</span> sLog = <span style="color:#a31515;">&#8220;Application&#8221;</span>;<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:blue;">if</span> (!<span style="color:#2b91af;">EventLog</span>.SourceExists(sSource))<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:#2b91af;">EventLog</span>.CreateEventSource(sSource, sLog);<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;"><br />
<span style="color:#2b91af;">EventLog</span>.WriteEntry(sSource, message, <span style="color:#2b91af;">EventLogEntryType</span>.Information);<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">}<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">}<br />
</span></p>
<p><span style="font-family:Consolas;font-size:9pt;">}<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">2. Deploy the Web Service<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">3. Subscribe to DataChangedEvent<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;"><strong>    Use BisSubscribe.exe<br />
</strong></span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">    Key inputs to be given<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">    1. Event type – DataChangedEvent<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">    2. Address – webservice URL<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">    3. Server – TFS middle tier URL<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">    4. Collection – your collection URI<br />
</span></p>
<p><span style="color:#1d13a5;font-family:Tahoma;font-size:10pt;">With this, we should be able to record any group membership changes in eventviewer and write another utility to filter, show and export…<br />
</span></p>
<p><img src="http://tfsrocks.files.wordpress.com/2011/03/030811_1049_tracktfsgro41.png?w=645" alt="" /><span style="font-family:Helvetica;font-size:10pt;"><br />
</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tfsrocks.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tfsrocks.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tfsrocks.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tfsrocks.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tfsrocks.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tfsrocks.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tfsrocks.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tfsrocks.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tfsrocks.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tfsrocks.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tfsrocks.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tfsrocks.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tfsrocks.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tfsrocks.wordpress.com/132/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=132&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tfsrocks.wordpress.com/2011/03/08/track-tfs-group-membership-changes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ca9c2e686e12d0847cfba7e1bb601cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tfsrocks</media:title>
		</media:content>

		<media:content url="http://tfsrocks.files.wordpress.com/2011/03/030811_1049_tracktfsgro12.png" medium="image" />

		<media:content url="http://tfsrocks.files.wordpress.com/2011/03/030811_1049_tracktfsgro21.png" medium="image" />

		<media:content url="http://tfsrocks.files.wordpress.com/2011/03/030811_1049_tracktfsgro31.png" medium="image" />

		<media:content url="http://tfsrocks.files.wordpress.com/2011/03/030811_1049_tracktfsgro41.png" medium="image" />
	</item>
		<item>
		<title>Why can&#8217;t I use WScript in my MSI Custom action?</title>
		<link>http://tfsrocks.wordpress.com/2010/09/19/why-cant-i-use-wscript-in-my-msi-custom-action/</link>
		<comments>http://tfsrocks.wordpress.com/2010/09/19/why-cant-i-use-wscript-in-my-msi-custom-action/#comments</comments>
		<pubDate>Sun, 19 Sep 2010 10:40:21 +0000</pubDate>
		<dc:creator>tfsrocks</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[MSI Custom Action]]></category>
		<category><![CDATA[Windows Installer]]></category>

		<guid isPermaLink="false">http://tfsrocks.wordpress.com/?p=115</guid>
		<description><![CDATA[This post gives insight why can&#8217;t we use WScript within the MSI&#8230;. http://bonemanblog.blogspot.com/2004/08/why-cant-i-use-wscript-in-my-msi.html But how can we use values read from the custom UI screens or from the msiexec commandline? Use Session.Property(&#8220;CustomActionData&#8221;) Example: Imagine you are reading values from 4 boxes, do the following Create a custom action, add the .vbs file Edit properties of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=115&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This post gives insight why can&#8217;t we use WScript within the MSI&#8230;.</p>
<p><a href="http://bonemanblog.blogspot.com/2004/08/why-cant-i-use-wscript-in-my-msi.html">http://bonemanblog.blogspot.com/2004/08/why-cant-i-use-wscript-in-my-msi.html</a></p>
<p>But how can we use values read from the custom UI screens or from the msiexec commandline?</p>
<p>Use Session.Property(&#8220;CustomActionData&#8221;)</p>
<p>Example:</p>
<p>Imagine you are reading values from 4 boxes, do the following</p>
<ol>
<li>Create a custom action, add the .vbs file</li>
<li>Edit properties of that .vbs custom action</li>
</ol>
<p style="text-align:center;"><a href="http://tfsrocks.files.wordpress.com/2010/09/temp.jpg"><img class="aligncenter size-full wp-image-116" title="temp" src="http://tfsrocks.files.wordpress.com/2010/09/temp.jpg?w=416&#038;h=214" alt="" width="416" height="214" /></a></p>
<p style="padding-left:30px;">3. CustomActionData has your values with ; delimited<br />
4. Below is the tiny .vbs script to realize these values, values are read from Session.Property</p>
<p style="padding-left:60px;"><span style="color:#800000;"> </span></p>
<p style="padding-left:60px;"><span style="color:#800000;">CuActionData = split(Session.Property(&#8220;CustomActionData&#8221;),&#8221;;&#8221;)</span></p>
<p style="padding-left:60px;"><span style="color:#800000;">Msgbox CuActionData(0)</span></p>
<p style="padding-left:60px;"><span style="color:#800000;">Msgbox CuActionData(1)</span></p>
<p style="padding-left:60px;"><span style="color:#800000;">Msgbox CuActionData(2)</span></p>
<p style="padding-left:60px;"><span style="color:#800000;">Msgbox CuActionData(3)</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tfsrocks.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tfsrocks.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tfsrocks.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tfsrocks.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tfsrocks.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tfsrocks.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tfsrocks.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tfsrocks.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tfsrocks.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tfsrocks.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tfsrocks.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tfsrocks.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tfsrocks.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tfsrocks.wordpress.com/115/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=115&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tfsrocks.wordpress.com/2010/09/19/why-cant-i-use-wscript-in-my-msi-custom-action/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ca9c2e686e12d0847cfba7e1bb601cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tfsrocks</media:title>
		</media:content>

		<media:content url="http://tfsrocks.files.wordpress.com/2010/09/temp.jpg" medium="image">
			<media:title type="html">temp</media:title>
		</media:content>
	</item>
		<item>
		<title>Find and replace a content in Web.Config using MSBuild&#8230;.</title>
		<link>http://tfsrocks.wordpress.com/2010/07/14/find-and-replace-a-content-in-web-config-using-msbuild/</link>
		<comments>http://tfsrocks.wordpress.com/2010/07/14/find-and-replace-a-content-in-web-config-using-msbuild/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 05:03:00 +0000</pubDate>
		<dc:creator>tfsrocks</dc:creator>
				<category><![CDATA[Configuration and build management]]></category>
		<category><![CDATA[MsBuild]]></category>
		<category><![CDATA[Build Management]]></category>
		<category><![CDATA[Configuration Management]]></category>

		<guid isPermaLink="false">http://tfsrocks.wordpress.com/?p=113</guid>
		<description><![CDATA[If you wonder how to read &#38; update a specific node in web.config(or any other xml file) using MsBuild, here is a sample&#8230; This is very handy for automatic, unattended deployments&#8230; You need to have Tigris MSBuild Community tasks installed &#8230;.. this script uses XMLRead &#38; XMLUpdate tasks from that MSBuild extension&#8230;. You need to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=113&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you wonder how to read &amp; update a specific node in web.config(or any other xml file) using MsBuild, here is a sample&#8230;</p>
<p>This is very handy for automatic, unattended deployments&#8230;</p>
<p>You need to have Tigris MSBuild Community tasks installed &#8230;.. this script uses XMLRead &amp; XMLUpdate tasks from that MSBuild extension&#8230;.</p>
<p>You need to have .NET FWK 3.5 installed too&#8230;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>&lt;Project</p>
<div id="_mcePaste">
<div id="_mcePaste"></div>
<div id="_mcePaste">xmlns=&#8221;http://schemas.microsoft.com/developer/msbuild/2003&#8243; ToolsVersion =&#8221;3.5&#8243; InitialTargets=&#8221;FindReplace&#8221;&gt;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">&lt;!&#8211; Required Import to use MSBuild Community Tasks &#8211;&gt;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">&lt;UsingTask AssemblyFile=&#8221;$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.dll&#8221;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">TaskName=&#8221;MSBuild.Community.Tasks.XmlRead&#8221;/&gt;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">&lt;UsingTask AssemblyFile=&#8221;$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.dll&#8221;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">TaskName=&#8221;MSBuild.Community.Tasks.XmlUpdate&#8221;/&gt;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">&lt;!&#8211; *********************  Target to read the xml file ********************************&#8211;&gt;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">&lt;Target Name=&#8221;Read&#8221;&gt;</div>
<div id="_mcePaste"><span style="white-space:pre;"> </span>&lt;!&#8211; Read Test Service end point &#8211;&gt;</div>
<div id="_mcePaste"><span style="white-space:pre;"> </span>&lt;XmlRead</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"><span style="white-space:pre;"> </span>Namespace=&#8221;http://schemas.microsoft.com/.NetConfiguration/v2.0&#8243;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"><span style="white-space:pre;"> </span>XPath=&#8221;//configuration/appSettings/add[@key='TestService']/@value&#8221;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"><span style="white-space:pre;"> </span>XmlFileName=&#8221;Web.config&#8221;&gt;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">&lt;Output TaskParameter=&#8221;Value&#8221; PropertyName=&#8221;TestServiceEndPoint&#8221; /&gt;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">&lt;/XmlRead&gt;</div>
<div id="_mcePaste">&lt;Message Text=&#8221;$(TestServiceEndPoint)&#8221;/&gt;</div>
<div id="_mcePaste"><span style="white-space:pre;"> </span>&lt;!&#8211; Read ConnectionString &#8211;&gt;</div>
<div id="_mcePaste"><span style="white-space:pre;"> </span></div>
<div id="_mcePaste">&lt;XmlRead</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"><span style="white-space:pre;"> </span>Namespace=&#8221;http://schemas.microsoft.com/.NetConfiguration/v2.0&#8243;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"><span style="white-space:pre;"> </span>XPath=&#8221;//configuration/connectionStrings/add[@name='DevConnection']/@connectionString&#8221;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"><span style="white-space:pre;"> </span>XmlFileName=&#8221;Web.config&#8221;&gt;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">&lt;Output TaskParameter=&#8221;Value&#8221; PropertyName=&#8221;ConnectionString&#8221; /&gt;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">&lt;/XmlRead&gt;</div>
<div id="_mcePaste">&lt;Message Text=&#8221;(ConnectionString)&#8221;/&gt;</div>
<div id="_mcePaste"><span style="white-space:pre;"> </span></div>
<div id="_mcePaste">&lt;/Target&gt;</div>
<div id="_mcePaste"><span style="white-space:pre;"> </span></div>
<div id="_mcePaste">&lt;!&#8211; *********************  Target to find and replace a value within the xml file *************&#8211;&gt;</div>
<div id="_mcePaste">&lt;Target Name =&#8221;FindReplace&#8221;&gt;</div>
<div id="_mcePaste">&lt;XmlUpdate</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">Namespace=&#8221;http://schemas.microsoft.com/.NetConfiguration/v2.0&#8243;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">XmlFileName=&#8221;Web.config&#8221;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">XPath=&#8221;//configuration/connectionStrings/add[@name='DevConnection']/@connectionString&#8221;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">Value=&#8221;CrapCrapCrap123456&#8243; /&gt;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">&lt;/Target&gt;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">&lt;/Project&gt;</div>
<div></div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tfsrocks.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tfsrocks.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tfsrocks.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tfsrocks.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tfsrocks.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tfsrocks.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tfsrocks.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tfsrocks.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tfsrocks.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tfsrocks.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tfsrocks.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tfsrocks.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tfsrocks.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tfsrocks.wordpress.com/113/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=113&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tfsrocks.wordpress.com/2010/07/14/find-and-replace-a-content-in-web-config-using-msbuild/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ca9c2e686e12d0847cfba7e1bb601cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tfsrocks</media:title>
		</media:content>
	</item>
		<item>
		<title>TFS 2010 &#8211; a quick sneak peek</title>
		<link>http://tfsrocks.wordpress.com/2010/04/12/tfs-2010-a-quick-sneak-peek/</link>
		<comments>http://tfsrocks.wordpress.com/2010/04/12/tfs-2010-a-quick-sneak-peek/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 16:58:03 +0000</pubDate>
		<dc:creator>tfsrocks</dc:creator>
				<category><![CDATA[Configuration and build management]]></category>
		<category><![CDATA[Team Foundation Build]]></category>
		<category><![CDATA[TFS]]></category>

		<guid isPermaLink="false">http://tfsrocks.wordpress.com/?p=102</guid>
		<description><![CDATA[There are plenty of new interesting features are being released with TFS 2010&#8230;. here is a quick sneak peek..TFS 2010  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=102&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There are plenty of new interesting features are being released with TFS 2010&#8230;. here is a quick sneak peek..<a href="http://tfsrocks.files.wordpress.com/2010/04/tfs-2010.pptx">TFS 2010</a></p>
<p><span style="color:#000000;"> </span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tfsrocks.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tfsrocks.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tfsrocks.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tfsrocks.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tfsrocks.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tfsrocks.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tfsrocks.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tfsrocks.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tfsrocks.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tfsrocks.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tfsrocks.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tfsrocks.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tfsrocks.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tfsrocks.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=102&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tfsrocks.wordpress.com/2010/04/12/tfs-2010-a-quick-sneak-peek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ca9c2e686e12d0847cfba7e1bb601cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tfsrocks</media:title>
		</media:content>
	</item>
		<item>
		<title>Add build steps in TFS 2005</title>
		<link>http://tfsrocks.wordpress.com/2010/04/12/add-build-steps-on-tfs-2005/</link>
		<comments>http://tfsrocks.wordpress.com/2010/04/12/add-build-steps-on-tfs-2005/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 16:25:57 +0000</pubDate>
		<dc:creator>tfsrocks</dc:creator>
				<category><![CDATA[Configuration and build management]]></category>
		<category><![CDATA[MsBuild]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Team Foundation Build]]></category>
		<category><![CDATA[TFS]]></category>

		<guid isPermaLink="false">http://tfsrocks.wordpress.com/?p=99</guid>
		<description><![CDATA[&#60;BuildStep Msbuild task is not supported in TFS 2005. If you wonder how to update the build step with your custom messages, here is a Power Shell script… pretty easy … # load the required dll [void][System.Reflection.Assembly]::LoadWithPartialName(&#8220;Microsoft.TeamFoundation.Client&#8221;); [void][System.Reflection.Assembly]::LoadWithPartialName(&#8220;Microsoft.Build.Framework&#8221;); [void][System.Reflection.Assembly]::LoadWithPartialName(&#8220;Microsoft.TeamFoundation.Build.Common&#8221;); [void][System.Reflection.Assembly]::LoadWithPartialName(&#8220;Microsoft.TeamFoundation.Build.Proxy&#8221;); # create networkcredential object instance with (“username”,”pass”,”domain”) $netcredential=new-object system.net.networkcredential (&#8220;BuildSvcID&#8221;,&#8221;*****&#8221;,&#8221;Self&#8221;); $tfs=new-object Microsoft.TeamFoundation.Client.teamfoundationServer(&#8220;http://Demo-TFS:8080&#8243;,$netcredential); Write-Host $tfs; $Buildstore=$tfs.getService([Microsoft.TeamFoundation.Build.Proxy.BuildStore]); [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=99&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-family:Calibri;font-size:small;">&lt;BuildStep Msbuild task is not supported in TFS 2005. If you wonder how to update the build step with your custom messages, here is a Power Shell script… pretty easy …</span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-family:Calibri;font-size:small;"># load the required dll<br />
[void][System.Reflection.Assembly]::LoadWithPartialName(&#8220;Microsoft.TeamFoundation.Client&#8221;);<br />
[void][System.Reflection.Assembly]::LoadWithPartialName(&#8220;Microsoft.Build.Framework&#8221;);<br />
[void][System.Reflection.Assembly]::LoadWithPartialName(&#8220;Microsoft.TeamFoundation.Build.Common&#8221;);<br />
[void][System.Reflection.Assembly]::LoadWithPartialName(&#8220;Microsoft.TeamFoundation.Build.Proxy&#8221;);</span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-family:Calibri;font-size:small;"># create networkcredential object instance with (“username”,”pass”,”domain”)<br />
$netcredential=new-object system.net.networkcredential (&#8220;BuildSvcID&#8221;,&#8221;*****&#8221;,&#8221;Self&#8221;);<br />
$tfs=new-object Microsoft.TeamFoundation.Client.teamfoundationServer(&#8220;</span><a href="http://Demo-TFS:8080%22,$netcredential"><span style="font-family:Calibri;color:#0000ff;font-size:small;">http://Demo-TFS:8080&#8243;,$netcredential</span></a><span style="font-family:Calibri;font-size:small;">);<br />
Write-Host $tfs;<br />
$Buildstore=$tfs.getService([Microsoft.TeamFoundation.Build.Proxy.BuildStore]);<br />
#construct the build uri – provide team project name and build number as parameters<br />
[string]$builduri=$buildstore.getbuilduri($teamProject,$buildNumber);<br />
Write-Host $builduri;<br />
#add build step….<br />
$buildstore.addbuildstep($builduri,&#8221;custom build step-TFS 2005&#8243;,&#8221;custom build step message&#8221;);<br />
#to update the build step status<br />
$now=get-date;<br />
$buildstore.updatebuildstep($builduri, &#8220;custom build step-TFS2005&#8243;, $now, &#8220;failed&#8221;);</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tfsrocks.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tfsrocks.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tfsrocks.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tfsrocks.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tfsrocks.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tfsrocks.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tfsrocks.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tfsrocks.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tfsrocks.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tfsrocks.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tfsrocks.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tfsrocks.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tfsrocks.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tfsrocks.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=99&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tfsrocks.wordpress.com/2010/04/12/add-build-steps-on-tfs-2005/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ca9c2e686e12d0847cfba7e1bb601cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tfsrocks</media:title>
		</media:content>
	</item>
		<item>
		<title>Host WCF 4.0 Services on IIS 7.5 with SSL</title>
		<link>http://tfsrocks.wordpress.com/2010/04/04/host-wcf-4-0-services-on-iis-7-5-with-ssl/</link>
		<comments>http://tfsrocks.wordpress.com/2010/04/04/host-wcf-4-0-services-on-iis-7-5-with-ssl/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 13:53:28 +0000</pubDate>
		<dc:creator>tfsrocks</dc:creator>
				<category><![CDATA[Configuration and build management]]></category>
		<category><![CDATA[Build Management]]></category>

		<guid isPermaLink="false">http://tfsrocks.wordpress.com/?p=95</guid>
		<description><![CDATA[Very useful link&#8230;. http://www.dotnetcurry.com/ShowArticle.aspx?ID=487&#38;utm_source=feedburner&#38;utm_medium=email&#38;utm_campaign=Feed:+netCurryRecentArticles+(.NET+Curry:+Recent+Microsoft+ASP.NET,+Silverlight,+WinForms,+Vista,+C%23,+VB.NET+Articles)&#38;AspxAutoDetectCookieSupport=1<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=95&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Very useful link&#8230;.</p>
<p><a href="http://www.dotnetcurry.com/ShowArticle.aspx?ID=487&amp;utm_source=feedburner&amp;utm_medium=email&amp;utm_campaign=Feed:+netCurryRecentArticles+(.NET+Curry:+Recent+Microsoft+ASP.NET,+Silverlight,+WinForms,+Vista,+C%23,+VB.NET+Articles)&amp;AspxAutoDetectCookieSupport=1">http://www.dotnetcurry.com/ShowArticle.aspx?ID=487&amp;utm_source=feedburner&amp;utm_medium=email&amp;utm_campaign=Feed:+netCurryRecentArticles+(.NET+Curry:+Recent+Microsoft+ASP.NET,+Silverlight,+WinForms,+Vista,+C%23,+VB.NET+Articles)&amp;AspxAutoDetectCookieSupport=1</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tfsrocks.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tfsrocks.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tfsrocks.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tfsrocks.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tfsrocks.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tfsrocks.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tfsrocks.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tfsrocks.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tfsrocks.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tfsrocks.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tfsrocks.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tfsrocks.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tfsrocks.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tfsrocks.wordpress.com/95/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=95&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tfsrocks.wordpress.com/2010/04/04/host-wcf-4-0-services-on-iis-7-5-with-ssl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ca9c2e686e12d0847cfba7e1bb601cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tfsrocks</media:title>
		</media:content>
	</item>
		<item>
		<title>TEAM FOUNDATION BUILD: BRIEF INTRO</title>
		<link>http://tfsrocks.wordpress.com/2009/10/15/team-foundation-build-brief-intro/</link>
		<comments>http://tfsrocks.wordpress.com/2009/10/15/team-foundation-build-brief-intro/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 01:41:57 +0000</pubDate>
		<dc:creator>tfsrocks</dc:creator>
				<category><![CDATA[Configuration and build management]]></category>
		<category><![CDATA[MsBuild]]></category>
		<category><![CDATA[Team Foundation Build]]></category>

		<guid isPermaLink="false">http://tfsrocks.wordpress.com/?p=70</guid>
		<description><![CDATA[If you wonder what's the difference between MsBuild and Team Build and how it works... have a glimpse at this post ...<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=70&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Team Foundation Build is a build orchestrator, part of Microsoft Application Lifecycle Management suite. Tightly integrated with other Visual Studio Team System components such as version control, work-item tracking, testing and reporting.</p>
<p>Team Build is built on top of the Microsoft Build Engine (MSBuild). Team Build consists of the Team Build Service layered on top of the MSBuild build system. MSBuild is responsible for the build itself, while the Team Build Service is responsible for communicating with the TFS application-tier.</p>
<p><span style="color:#17365d;font-size:16pt;"><strong>Features highlights:<br />
</strong></span></p>
<ul>
<li>Facilitates out of box build process for most the of .NET applications</li>
<li>
<div>5 steps out of box end-end build process</div>
<ul>
<li>Retrieve the code from Team Foundation Source Control</li>
<li>Compile, Run tests, static code analysis against compiled code</li>
<li>Release the builds onto a file server</li>
<li>Create/update work items appropriately</li>
<li>Publish the build reports</li>
</ul>
</li>
<li>Supports executing build on multiple build machines without any script changes</li>
<li>Efficient retention policy to delete old builds</li>
<li>Locking mechanism to keep the build forever</li>
<li>Provides the capability for public and private or desktop builds</li>
<li>Provides APIs for extension</li>
<li>Ability to build projects/solutions in parallel fashion</li>
<li>Beyond build process, other parts of software lifecycle like packaging, deploy could be integrated with Team Build</li>
</ul>
<p><a href="http://msdn.microsoft.com/en-us/library/ms181710(VS.80).aspx">Refer the high level Architecture here</a></p>
<p><span style="color:#17365d;font-size:16pt;"><strong>Team Foundation Build logical flow:<br />
</strong></span></p>
<p><img src="http://tfsrocks.files.wordpress.com/2009/10/101609_0142_teamfoundat15.png?w=645" alt="" /></p>
<p><img src="http://tfsrocks.files.wordpress.com/2009/10/101609_0142_teamfoundat25.png?w=645" alt="" /></p>
<p>Build types, build creation, execution and viewing results are largely wizard driven and straight forward – let&#8217;s move on to the actual <span style="color:#17365d;font-size:16pt;"><strong>Build Process flow</strong></span></p>
<p><img src="http://tfsrocks.files.wordpress.com/2009/10/101609_0142_teamfoundat35.png?w=645" alt="" /></p>
<p><span style="color:#17365d;font-size:16pt;"><strong>List of customizable Team Build Targets</strong></span> &#8211; If you wish to extend, tailor Team Foundation Build according to your project needs</p>
<p>For full information on this specific topic – have a look at <a href="http://msdn.microsoft.com/en-us/library/aa337604.aspx">this</a></p>
<div>
<table style="border-collapse:collapse;" border="0">
<col></col>
<col></col>
<tbody>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:solid black .5pt;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BeforeEndToEndIteration</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:solid black .5pt;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BeforeCompileConfiguration</span></td>
</tr>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">AfterEndToEndIteration</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BeforeCompileSolution</span></td>
</tr>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BeforeInitializeWorkspace</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">AfterCompileSolution</span></td>
</tr>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">AfterInitializeWorkspace</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">AfterCompileConfiguration</span></td>
</tr>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BuildNumberOverrideTarget</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">AfterCompile</span></td>
</tr>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BeforeClean</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BeforeGetChangesetsAndUpdateWorkItems</span></td>
</tr>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">AfterClean</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">AfterGetChangesetsAndUpdateWorkItems</span></td>
</tr>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BeforeGet</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BeforeTest</span></td>
</tr>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">AfterGet</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BeforeTestConfiguration</span></td>
</tr>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BeforeLabel</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">AfterTestConfiguration</span></td>
</tr>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">AfterLabel</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">AfterTest</span></td>
</tr>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BeforeCompile</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BeforeDropBuild</span></td>
</tr>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">AfterDropBuild</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BeforeOnBuildBreak</span></td>
</tr>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BeforeCreateWorkItem</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">AfterOnBuildBreak</span></td>
</tr>
<tr style="height:23px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">AfterCreateWorkItem</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">GenerateDocumentation</span></td>
</tr>
</tbody>
</table>
</div>
<p><span style="color:#17365d;font-size:16pt;"><strong>List of customizable Team Build Properties<br />
</strong></span></p>
<p><a href="http://msdn.microsoft.com/en-us/library/aa337598.aspx">Full information</a></p>
<div>
<table style="border-collapse:collapse;" border="0">
<col></col>
<col></col>
<tbody>
<tr style="height:25px;">
<td style="padding-left:7px;padding-right:7px;border-top:solid black .5pt;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">CustomPropertiesForClean</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:solid black .5pt;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">LabelName</span></td>
</tr>
<tr style="height:25px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">CustomPropertiesForBuild</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">OutDir</span></td>
</tr>
<tr style="height:25px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">SkipClean</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">UpdateAssociatedWorkItemsOnBuildBreak</span></td>
</tr>
<tr style="height:25px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">IncrementalGet</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">StopOnFirstFailure</span></td>
</tr>
<tr style="height:25px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">IncrementalBuild</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">SkipGet</span></td>
</tr>
<tr style="height:25px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">CleanCompilationOutputOnly</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">SkipLabel</span></td>
</tr>
<tr style="height:25px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">SkipGetChangesetsUpdateWorkItems</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">SkipInitializeWorkspace</span></td>
</tr>
<tr style="height:25px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">SolutionRoot</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">SkipInvalidConfigurations</span></td>
</tr>
<tr style="height:25px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">BinariesRoot</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">SkipPostBuild</span></td>
</tr>
<tr style="height:25px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">LabelComment</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">SkipDropBuild</span></td>
</tr>
<tr style="height:25px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">CustomizablePublishDir</span></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">SkipWorkItemCreation</span></td>
</tr>
<tr style="height:25px;">
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"></td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><span style="color:black;font-family:Verdana;font-size:8pt;">CustomizableOutDir</span></td>
</tr>
</tbody>
</table>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tfsrocks.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tfsrocks.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tfsrocks.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tfsrocks.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tfsrocks.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tfsrocks.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tfsrocks.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tfsrocks.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tfsrocks.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tfsrocks.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tfsrocks.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tfsrocks.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tfsrocks.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tfsrocks.wordpress.com/70/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=70&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tfsrocks.wordpress.com/2009/10/15/team-foundation-build-brief-intro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ca9c2e686e12d0847cfba7e1bb601cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tfsrocks</media:title>
		</media:content>

		<media:content url="http://tfsrocks.files.wordpress.com/2009/10/101609_0142_teamfoundat15.png" medium="image" />

		<media:content url="http://tfsrocks.files.wordpress.com/2009/10/101609_0142_teamfoundat25.png" medium="image" />

		<media:content url="http://tfsrocks.files.wordpress.com/2009/10/101609_0142_teamfoundat35.png" medium="image" />
	</item>
		<item>
		<title>Essential build management for modern day software development</title>
		<link>http://tfsrocks.wordpress.com/2009/08/12/essential-build-management-for-modern-day-software-development/</link>
		<comments>http://tfsrocks.wordpress.com/2009/08/12/essential-build-management-for-modern-day-software-development/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 00:28:25 +0000</pubDate>
		<dc:creator>tfsrocks</dc:creator>
				<category><![CDATA[Configuration and build management]]></category>
		<category><![CDATA[Build Management]]></category>
		<category><![CDATA[Configuration Management]]></category>
		<category><![CDATA[configuration management best practices]]></category>

		<guid isPermaLink="false">http://tfsrocks.wordpress.com/?p=55</guid>
		<description><![CDATA[Some of the items that we should be watchful inorder to make configuration &#38; build management more productive and useful for the whole SDLC&#8230;. here are some common challenges and after effects if we ignore to take care of them&#8230;. Repeatability &#38; reliability Repeatability -Is about being able to do the same thing over and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=55&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Some of the items that we should be watchful inorder to make configuration &amp; build management more productive and useful for the whole SDLC&#8230;.<br />
here are some common challenges and after effects if we ignore to take care of them&#8230;.</p>
<h4><span style="color:#ff0000;">Repeatability &amp; reliability</span></h4>
<p>Repeatability<br />
-Is about being able to do the same thing over and over<br />
-Is something repeatable after  say 6 months<br />
-Do developers have the ability to pullout a code and assembly which is in live production today</p>
<p>Reliability<br />
-Does the process produces correct and accurate results every time<br />
-Are you confident that the code is being delivered into the build has the defect,  not the build/package/deploy process itself</p>
<h4><span style="color:#ff0000;">Lack of &#8216;Repeatability &amp; reliability&#8217;</span></h4>
<p><span style="color:#ff0000;">Low defect fix rate<br />
</span>-Not able to repeat the build which is in production already..<br />
-Do we have the ability to reconstruct the development environment with the PROD code, fix a defect and ship a patch quickly<br />
-How long does it take to reconstruct matching code and assembly on a developer box? Should be in minutes…<br />
-Inaccurate fixes</p>
<p><span style="color:#ff0000;">Nonstop issues with reliability of build execution<br />
</span>-When a defect found,  are you sure the problem is with the code or could it be the build process<br />
Management lost confidence on build process</p>
<h4><span style="color:#ff0000;">Traceability &amp; completeness</span></h4>
<p><span style="color:#000000;"><span style="color:#ff0000;">Traceability</span><br />
-Ways to understand the complete life cycle of  defect/feature that goes into a build….<br />
</span><span style="color:#000000;"><br />
<span style="color:#ff0000;">Completeness</span><br />
-Ability to trace it back completely and figure out whether the build contains all of what was intended…<br />
-Does it add any value towards the program goals and objectives<br />
- Why and What are we delivering in this build<br />
</span></p>
<h4><span><span style="color:#ff0000;">Lack of ‘traceability and completeness’</span></span></h4>
<p><span><span><span style="color:#000000;">–Not being able to say exactly what is in the build…. <br />
    -&gt;what new features, enhancement, defects have been added and why?<br />
</span></span></span><span><span><span style="color:#000000;"> –Incomplete builds  &amp; Missing builds <br />
    -&gt;</span></span></span><span><span><span style="color:#000000;">Missing some artifacts<br />
    -&gt;Post deploy manual hacks/changes on the environments beyond build process<br />
    -&gt;Sometimes builds are missing from the source control<br />
</span></span></span><span><span style="color:#000000;">–Not being able to say where the build is being used? <br />
   -&gt;Where the build has been deployed? Is it being testing on different environments? What version do I have currently on different environments?<br />
–Not being able to say how the build was carried out…. <br />
  -&gt;Did the source got baselined?<br />
  -&gt;With or without third party assemblies? What version of 3rd party assemblies used?<br />
  -&gt;Was it environment specific build? Any configuration items change based on the environment?<br />
  -&gt;Were there any special compiler/packaging options, instructions followed?</span></span></p>
<h4><span style="color:#ff0000;">Speed, Agility </span></h4>
<p><span style="color:#000000;"><span style="color:#ff0000;">Speed</span><br />
-Is about how quickly a developer can integrate defects and test his changes?<br />
-How fast and integrated is the build process<br />
-Is the process efficient &amp; has absolutely essential steps<br />
-Is it an unattended build/package and deploy process &#8211; if manual process is essential, that&#8217;s a big bottle neck</span></p>
<p><span style="color:#000000;"><span style="color:#ff0000;">Agility</span><br />
-Is about having the build/deploy process in which changes can be integrated<br />
  -&gt;quickly<br />
  -&gt;efficiently<br />
  -&gt;independently, as and when needed<br />
 </span></p>
<h4><span style="color:#ff0000;">Lack of ‘speed, agility’</span></h4>
<p><span style="color:#ff0000;">Late integration, long builds…. late night firefighting&#8230;</span></p>
<p>–High possibility of incomplete build<br />
– features/enhancements/defects may not meet the entry criteria<br />
–Uncertain defect quality<br />
–Possibility of ‘high defect re-open rates’<br />
–Not being able to integrate changes quickly<br />
-Does the build process take so long – results in weekly build rather than CI builds– what if that build fails<br />
-Travelling with a hidden tiger until next build<br />
–Deferred testing puts the milestone in risk<br />
–Lack of confidence on scheduled build<br />
– not sure what can/can’t go<br />
–Risk of missing milestones in the wake of late integrated testing<br />
–Risk of late night fire fighting towards the end of development cycle – team morale will go down </p>
<h4><span style="color:#339966;">So how can the process be improved?</span></h4>
<p><span style="color:#339966;">Following high level goals could make you better<br />
–Implement Continuous Integration<br />
</span><span style="color:#000000;"><span style="color:#339966;">•Define a build once in 30-45 mins interval to make sure source code is syntatically correct and produces binary<br />
–Write light weight tools to encourage teams working on Source Control every single minute<br />
•Create some tools to quickly refresh source &amp; assembly based on build number– improve developer productivity<br />
–Envision efficient check in policy &amp; make developer life easy<br />
•like gated checkins to ensure a change is built along with the latest content from the source tree automatically prior to check in<br />
–Automate and make unattended build/package/deploy/sanity testing<br />
•Use best and authentic tools to ensue maximum benefits from automation<br />
–Ensure build process is simple, transparent, fast and easy<br />
•Anyone should be able to initiate and manage the build process with no or negligible training<br />
-Try to adopt Application Life cycle Management model - Integrate tools suite right from Requirements thru testing..</span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tfsrocks.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tfsrocks.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tfsrocks.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tfsrocks.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tfsrocks.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tfsrocks.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tfsrocks.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tfsrocks.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tfsrocks.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tfsrocks.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tfsrocks.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tfsrocks.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tfsrocks.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tfsrocks.wordpress.com/55/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tfsrocks.wordpress.com&amp;blog=6502523&amp;post=55&amp;subd=tfsrocks&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tfsrocks.wordpress.com/2009/08/12/essential-build-management-for-modern-day-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ca9c2e686e12d0847cfba7e1bb601cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tfsrocks</media:title>
		</media:content>
	</item>
	</channel>
</rss>
