<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1882165764506799121</id><updated>2012-02-01T13:20:00.116+01:00</updated><category term='Architect'/><category term='Visual Studio'/><category term='WIF'/><category term='Powershell'/><category term='SQL Server'/><category term='VS 2010'/><category term='UI'/><category term='Build'/><category term='Security'/><category term='Oracle'/><category term='SOA'/><category term='RIA'/><category term='Azure'/><category term='ASP.NET MVC'/><category term='ASP.NET'/><category term='Testing'/><category term='HTML 5'/><category term='Windows Phone'/><category term='WF'/><category term='VSTO'/><category term='ALM'/><category term='TDD'/><category term='OData'/><category term='MS Project Server'/><category term='Design Patterns'/><category term='TFS 11'/><category term='EPM'/><category term='Mobile'/><category term='Windows Forms'/><category term='jQuery'/><category term='REST'/><category term='Javascript'/><category term='Software Development'/><category term='Silverlight 4'/><category term='MSBuild'/><category term='IIS'/><category term='Reporting Services'/><category term='NoSQL'/><category term='WSS'/><category term='C#'/><category term='Azman'/><category term='Team System'/><category term='NuGet'/><category term='WCF'/><category term='TFS 2010'/><category term='Agile'/><category term='Enterprise Library'/><category term='DB2'/><category term='Sharepoint'/><category term='Scrum'/><category term='NHibernate'/><category term='Tools'/><category term='Web development'/><category term='WPF'/><category term='Entity Framework'/><category term='.NET'/><category term='Silverlight'/><title type='text'>The art of simplicity</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default?start-index=101&amp;max-results=100'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>758</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-5338333154084854310</id><published>2012-02-01T13:20:00.000+01:00</published><updated>2012-02-01T13:20:00.118+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>ASP.NET MVC: Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.</title><content type='html'>&lt;p&gt;When loading a big JsonResult from the server, the request fails with the following error message:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“InvalidOperationException:Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Thanks to this descriptive error message, its quiet clear what’s happening. The size of the JSON object exceeds the maxJsonLength value of the JavaScriptSerializer class that’s used behind the scenes.&lt;/p&gt;  &lt;h5&gt;But how can we change this value? &lt;/h5&gt;  &lt;p&gt;You cannot access this property directly through the JsonResult. Instead you can create your own result:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:0cac26c8-61f6-4a35-b1e2-3108829f85af" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;public class ExtendedJsonResult : ActionResult&lt;br /&gt;{&lt;br /&gt;    public ExtendedJsonResult()&lt;br /&gt;    {&lt;br /&gt;        this.JsonRequestBehavior = JsonRequestBehavior.DenyGet;&lt;br /&gt;    	this.MaxJsonLength=Int.MaxValue;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;    public override void ExecuteResult(ControllerContext context)&lt;br /&gt;    {&lt;br /&gt;        if (context == null)&lt;br /&gt;        {&lt;br /&gt;            throw new ArgumentNullException("context");&lt;br /&gt;        }&lt;br /&gt;        if ((this.JsonRequestBehavior == JsonRequestBehavior.DenyGet) &amp;amp;&amp;amp; string.Equals(context.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase))&lt;br /&gt;        {&lt;br /&gt;            throw new InvalidOperationException(MvcResources.JsonRequest_GetNotAllowed);&lt;br /&gt;        }&lt;br /&gt;        HttpResponseBase response = context.HttpContext.Response;&lt;br /&gt;        if (!string.IsNullOrEmpty(this.ContentType))&lt;br /&gt;        {&lt;br /&gt;            response.ContentType = this.ContentType;&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            response.ContentType = "application/json";&lt;br /&gt;        }&lt;br /&gt;        if (this.ContentEncoding != null)&lt;br /&gt;        {&lt;br /&gt;            response.ContentEncoding = this.ContentEncoding;&lt;br /&gt;        }&lt;br /&gt;        if (this.Data != null)&lt;br /&gt;        {&lt;br /&gt;            JavaScriptSerializer serializer = new JavaScriptSerializer();&lt;br /&gt;            serializer.MaxJsonLength=this.MaxJsonLength;&lt;br /&gt;			response.Write(serializer.Serialize(this.Data));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Encoding ContentEncoding { get; set; }&lt;br /&gt;&lt;br /&gt;    public string ContentType { get; set; }&lt;br /&gt;&lt;br /&gt;    public object Data { get; set; }&lt;br /&gt;&lt;br /&gt;    public JsonRequestBehavior JsonRequestBehavior { get; set; }&lt;br /&gt;&lt;br /&gt;	public int MaxJsonLength{get;set;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-5338333154084854310?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/5338333154084854310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=5338333154084854310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5338333154084854310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5338333154084854310'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/02/aspnet-mvc-error-during-serialization.html' title='ASP.NET MVC: Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-438039378912024206</id><published>2012-01-31T12:50:00.000+01:00</published><updated>2012-01-31T12:50:00.091+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><title type='text'>Internet Explorer rendering modes</title><content type='html'>&lt;p&gt;I have a hard time understanding all the different rendering modes inside IE. I never remember when what mode will be used.&lt;/p&gt;  &lt;p&gt;Thanks to the following flowchart created by &lt;a href="http://hsivonen.iki.fi/author/"&gt;Henri Sivonen&lt;/a&gt;, I have a cheat sheet available. &lt;/p&gt;  &lt;p&gt;He shared the flowchart in his great article: &lt;a href="http://hsivonen.iki.fi/doctype/"&gt;Activating Browser Modes with Doctype&lt;/a&gt;. &lt;img src="http://hsivonen.iki.fi/doctype/ie8-mode.png" width="1027" height="859" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-438039378912024206?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/438039378912024206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=438039378912024206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/438039378912024206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/438039378912024206'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/internet-explorer-rendering-modes.html' title='Internet Explorer rendering modes'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-5236913468790112967</id><published>2012-01-30T12:46:00.000+01:00</published><updated>2012-01-31T09:06:50.420+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><title type='text'>The Firefox fieldset bug… and a possible workaround</title><content type='html'>In an ASP.NET MVC application we are building, we have a long list of items inside a form. These items are wrapped inside one &lt;code&gt;&amp;lt;fieldset&amp;gt;&lt;/code&gt;tag. &lt;br /&gt;The problem is when we try to print this form inside Firefox only the forms part on the first page gets printed, there is no second page but instead one page with the form sliced.&lt;br /&gt;Turns out that when printing a document, Firefox truncate &lt;code&gt;&amp;lt;fieldset&amp;gt;&lt;/code&gt; to one page. This mean that a form with a &lt;code&gt;&amp;lt;fieldset&amp;gt;&lt;/code&gt; that would take more than one page in print can not be printed correctly. This is apparently a known bug tracked on bugzilla since 2008 (see &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=471015"&gt;bug 471015&lt;/a&gt;).&lt;br /&gt;I couldn’t find an ideal solution, in the end I replaced the fieldset by a div and styled it using some css to make it similar.&lt;br /&gt;The original fieldset:&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:0f290415-7390-4194-89c7-0db20d42a1b7" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="xml" name="code"&gt;&amp;lt;fieldset&amp;gt;&lt;br /&gt; &amp;lt;legend&amp;gt;Products&amp;lt;/legend&amp;gt;&lt;br /&gt;&amp;lt;/fieldset&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;The alternative:&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:396dd835-9cf8-434b-a539-1baf67845536" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="xml" name="code"&gt;&amp;lt;div class="fieldset"&amp;gt;&lt;br /&gt;   &amp;lt;span class="fieldset"&amp;gt;Products&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:7b50599c-6630-40bf-85b8-503977fa2552" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;div.fieldset&lt;br /&gt;{&lt;br /&gt;    border: 1pt solid #755418;  &lt;br /&gt;    padding:10px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;span.fieldset&lt;br /&gt;{&lt;br /&gt;    color: #755418;&lt;br /&gt;    font-size: 13px;&lt;br /&gt;    font-weight: bold;&lt;br /&gt;    display:inline-block;&lt;br /&gt;    position:relative;&lt;br /&gt;    top:-20px;&lt;br /&gt;    background-color:#fff;    &lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-5236913468790112967?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/5236913468790112967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=5236913468790112967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5236913468790112967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5236913468790112967'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/firefox-fieldset-bug-and-possible.html' title='The Firefox fieldset bug… and a possible workaround'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1237404103769998304</id><published>2012-01-27T12:45:00.000+01:00</published><updated>2012-01-28T14:40:44.421+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><title type='text'>ASP.NET MVC: AsyncController Timeout</title><content type='html'>For long running operations in ASP.NET MVC the &lt;a href="http://msdn.microsoft.com/en-us/library/ee728598.aspx"&gt;AsyncController&lt;/a&gt; is your friend.&amp;nbsp; One thing that was not so obvious to me is that the AsyncController will not be running forever but has a timeout setting(I think it’s about 45 seconds by default, could not find the exact number). So if your long running operation takes more time, don’t forget to set the timeout of the async controller action in order for this to work. &lt;br /&gt;You do this by setting the &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.asynctimeoutattribute.aspx"&gt;AsyncTimeoutAttribute&lt;/a&gt;&amp;nbsp; Action Filter on the action that you want to extend its timeout:&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:b3f12e5e-be52-4f8e-aa4d-788bb200ccd7" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;public class PrintController : AsyncController&lt;br /&gt;{&lt;br /&gt; private readonly IReportService _reportService;&lt;br /&gt;        &lt;br /&gt; public PrintController(IReportService reportService)&lt;br /&gt; {&lt;br /&gt;  _reportService = reportService;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; [AsyncTimeout(60000)] //6000 milliseconds= 1 minute&lt;br /&gt;    public void PdfAsync(string reportName, ReportType reportType = ReportType.PDF)&lt;br /&gt;    {&lt;br /&gt;  AsyncManager.RegisterTask&amp;lt;byte[]&amp;gt;(RenderReport(reportName, ReportType.Excel), data =&amp;gt; new { data = data, reportName = reportName, reportType = ReportType.Excel });&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt; //Some extra code...&lt;br /&gt; //...&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;And if you don’t want that the AsyncController times out, you have the &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.noasynctimeoutattribute.aspx"&gt;NoAsyncTimeoutAttribute&lt;/a&gt; Action Filter. &lt;br /&gt;Don’t forget to do this(as I did)!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1237404103769998304?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1237404103769998304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1237404103769998304' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1237404103769998304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1237404103769998304'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/aspnet-mvc-asynccontroller-timeout.html' title='ASP.NET MVC: AsyncController Timeout'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-6055822353914176515</id><published>2012-01-26T12:30:00.000+01:00</published><updated>2012-01-26T18:50:39.427+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><title type='text'>ASP.NET MVC AsyncController Helper</title><content type='html'>The &lt;a href="http://bartwullems.blogspot.com/2010/01/using-asynccontroller-in-aspnet-mvc-2.html"&gt;AsyncController&lt;/a&gt; is a really nice feature introduced in ASP.NET MVC 2. It allows you to process your actions&amp;nbsp; asynchronously increasing the throughput of your web server.&lt;br /&gt;Although implementing it is not that hard, I’m not a big fan of the current syntax(The new &lt;a href="http://codeclimber.net.nz/archive/2012/01/09/evolution-of-async-controller-asp-net-mvc.aspx"&gt;async api in ASP.NET MVC 4&lt;/a&gt; looks promising).&lt;br /&gt;In the meanwhile I have written a small helper class to simplify the usage of the AsyncController.&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:95ad7b49-922e-4202-9403-a7dc9f3bda13" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;public static class AsyncManagerExtensions&lt;br /&gt;   {&lt;br /&gt;       public static void RegisterTask&amp;lt;T&amp;gt;(this AsyncManager asyncManager, Task&amp;lt;T&amp;gt; task, Func&amp;lt;T, object&amp;gt; func)&lt;br /&gt;       {&lt;br /&gt;           asyncManager.OutstandingOperations.Increment();&lt;br /&gt;           task.ContinueWith(task2 =&amp;gt;&lt;br /&gt;           {&lt;br /&gt;               object propertyObject = null;&lt;br /&gt;&lt;br /&gt;               if (!task2.IsFaulted)&lt;br /&gt;               {&lt;br /&gt;                   //invoke the provided function with the&lt;br /&gt;                   //result of running the task&lt;br /&gt;                   propertyObject = func(task2.Result);&lt;br /&gt;               }&lt;br /&gt;               else&lt;br /&gt;               {&lt;br /&gt;                   propertyObject = func(default(T));&lt;br /&gt;               }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;               //use reflection to set asyncManager.Parameters&lt;br /&gt;               //for the returned object's fields and properties&lt;br /&gt;               var ty = propertyObject.GetType();&lt;br /&gt;&lt;br /&gt;               foreach (var f in ty.GetFields())&lt;br /&gt;               {&lt;br /&gt;                   asyncManager.Parameters[f.Name] = f.GetValue(propertyObject);&lt;br /&gt;               }&lt;br /&gt;&lt;br /&gt;               foreach (var p in ty.GetProperties())&lt;br /&gt;               {&lt;br /&gt;                   var v = p.GetGetMethod().Invoke(propertyObject, null);&lt;br /&gt;                   asyncManager.Parameters[p.Name] = v;&lt;br /&gt;               }&lt;br /&gt;&lt;br /&gt;               asyncManager.OutstandingOperations.Decrement();&lt;br /&gt;           });&lt;br /&gt;       }&lt;br /&gt;   }&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Using it is simple. I create a controller that inherits from AsyncController:&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:625bb659-1272-460a-b5fd-0e7ad60903ed" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;public class PrintController : AsyncController&lt;br /&gt;{&lt;br /&gt;    private readonly IReportService _reportService;&lt;br /&gt;        &lt;br /&gt;    public PrintController(IReportService reportService)&lt;br /&gt;    {&lt;br /&gt;        _reportService = reportService;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I add a method that returns the Task I want to execute and and the Action Controller method that will be called by the View(in this case through /Print/Pdf) . In this Action Controller method I call the RegisterTask&amp;lt;T&amp;gt; extension method and pass 2 properties:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The method that needs to be executed&amp;nbsp; &lt;/li&gt;&lt;li&gt;An expression that takes the output of the task and maps it to the parameters of the Completed method(based on the parameter name).&lt;/li&gt;&lt;/ul&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:10e59193-ab75-4beb-83b7-61937ea09be4" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;public void PdfAsync(string reportName)&lt;br /&gt;{&lt;br /&gt; AsyncManager.RegisterTask&amp;lt;byte[]&amp;gt;(RenderReport(reportName)), renderReportResult=&amp;gt; new { data = renderReportResult, reportName = reportName });&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private Task&amp;lt;byte[]&amp;gt; RenderReport(string reportName)&lt;br /&gt;{&lt;br /&gt; return  Task.Factory.StartNew(()=&amp;gt;_reportService.RenderReport(reportName));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public ActionResult PdfCompleted(byte[] data, string reportName)&lt;br /&gt;{&lt;br /&gt; var fileName = reportName + ".pdf";&lt;br /&gt; var fileContentResult = File(data, "application/pdf", fileName);&lt;br /&gt; Response.AppendHeader("Content-Disposition", string.Format("inline; filename={0}", fileName));&lt;br /&gt; return fileContentResult;&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-6055822353914176515?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/6055822353914176515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=6055822353914176515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6055822353914176515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6055822353914176515'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/aspnet-mvc-asynccontroller-helper.html' title='ASP.NET MVC AsyncController Helper'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7229679949132350358</id><published>2012-01-25T12:08:00.000+01:00</published><updated>2012-01-25T12:08:01.031+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>What’s new in WCF 4.5?</title><content type='html'>&lt;p&gt;Interested in learning some of the new features of WCF 4.5? Check out this blog series by Ido Flatow:&lt;/p&gt;  &lt;p&gt;1. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/16/what-s-new-in-wcf-4-5-let-s-start-with-wcf-configuration.aspx"&gt;What’s new in WCF 4.5? let’s start with WCF configuration&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/17/what-s-new-in-wcf-4-5-a-single-wsdl-file.aspx"&gt;What’s new in WCF 4.5? a single WSDL file&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/19/what-s-new-in-wcf-4-5-configuration-tooltips-and-intellisense-in-config-files.aspx"&gt;What’s new in WCF 4.5? Configuration tooltips and intellisense in config files&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-configuration-validations.aspx"&gt;What’s new in WCF 4.5? Configuration validations&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;5. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-multiple-authentication-support-on-a-single-endpoint-in-iis.aspx"&gt;What’s new in WCF 4.5? Multiple authentication support on a single endpoint in IIS&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;6. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx"&gt;What’s new in WCF 4.5? Automatic HTTPS endpoint for IIS&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;7. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/10/what-s-new-in-wcf-4-5-basichttpsbinding.aspx"&gt;What’s new in WCF 4.5? BasicHttpsBinding&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;8. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/what-s-new-in-wcf-4-5-changed-default-for-asp-net-compatibility-mode.aspx"&gt;What’s new in WCF 4.5? Changed default for ASP.NET compatibility mode&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7229679949132350358?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7229679949132350358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7229679949132350358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7229679949132350358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7229679949132350358'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/whats-new-in-wcf-45.html' title='What’s new in WCF 4.5?'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-5255755982875254643</id><published>2012-01-24T12:05:00.000+01:00</published><updated>2012-01-24T12:05:00.275+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='MS Project Server'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><title type='text'>TFS: Change MS Project Field mapping</title><content type='html'>&lt;p&gt;One of the nice features of TFS is it’s integration with MS Project. However I always forget how to update the Field Mapping between MS Project and TFS. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;So as a quick reminder:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. Download the MS Project field mapping file from TFS:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE&amp;gt;tfsfieldmapping download /collection:”http://serverName:8080/tfs/collectionname” /teamproject:”teamprojectname” /mappingfile:”c:\fieldmapping.xml” &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2. Update and save fieldmapping.xml&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3. Upload the MS Project field mapping file to TFS:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE&amp;gt;tfsfieldmapping upload /collection:”http://serverName:8080/tfs/collectionname” /teamproject:”teamprojectname” /mappingfile:”c:\fieldmapping.xml” &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-5255755982875254643?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/5255755982875254643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=5255755982875254643' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5255755982875254643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5255755982875254643'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/tfs-change-ms-project-field-mapping.html' title='TFS: Change MS Project Field mapping'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-4781712694282095977</id><published>2012-01-23T11:59:00.000+01:00</published><updated>2012-01-23T11:59:00.064+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Visug: Future of the Web–Slides and Demos</title><content type='html'>&lt;h5&gt;&lt;img src="http://www.visug.be/Portals/_default/Skins/Visug/visug_mainlogo.png" /&gt;&lt;/h5&gt;  &lt;p&gt;Last Thursday I gave a session at the &lt;a href="http://www.visug.be/Eventdetails/tabid/95/EventId/50/Default.aspx"&gt;VISUG&lt;/a&gt;(Belgian Visual Studio User Group) together with Kevin DeRuddere about the &lt;strong&gt;Future of the web.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The slides are available here:&lt;/p&gt;  &lt;div style="width: 425px" id="__ss_11188774"&gt;&lt;strong style="margin: 12px 0px 4px; display: block"&gt;&lt;a title="Javascript omg!" href="http://www.slideshare.net/bwullems/javascript-omg" target="_blank"&gt;Javascript omg!&lt;/a&gt;&lt;/strong&gt; &lt;iframe height="355" marginheight="0" src="http://www.slideshare.net/slideshow/embed_code/11188774" frameborder="0" width="425" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;    &lt;div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/bwullems" target="_blank"&gt;bwullems&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;And the demos can be downloaded &lt;a href="https://skydrive.live.com/redir.aspx?cid=4150ba6e4d23c0b9&amp;amp;resid=4150BA6E4D23C0B9!739&amp;amp;parid=4150BA6E4D23C0B9!142"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-4781712694282095977?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/4781712694282095977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=4781712694282095977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4781712694282095977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4781712694282095977'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/visug-future-of-webslides-and-demos.html' title='Visug: Future of the Web–Slides and Demos'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-5888467349561607791</id><published>2012-01-20T16:52:00.000+01:00</published><updated>2012-01-20T16:52:00.663+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><title type='text'>App_Offline.htm</title><content type='html'>&lt;p&gt;One of the little known features in ASP.NET is the &amp;quot;App_Offline.htm&amp;quot; feature. It&amp;#160; provides a super convenient way to bring down an ASP.NET application while you make changes to it.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-zIOK7D3mv1A/TxGk14Q6VeI/AAAAAAAAAcs/ynZF6WLuv-g/s1600-h/appoffline%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="appoffline" border="0" alt="appoffline" src="http://lh6.ggpht.com/-FYZrjJZjwRs/TxGk26ONI8I/AAAAAAAAAc0/H3QBCj76IbQ/appoffline_thumb%25255B2%25255D.png?imgmax=800" width="626" height="239" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To make this feature work, you have to place the app_offline.htm file in the root of the application. When ASP.NET sees it, it will shut-down the app-domain for the application (and not restart it for requests) and instead send back the contents of the app_offline.htm file in response to all new dynamic requests for the application. &lt;/p&gt;  &lt;p&gt;Once you remove the app_offline.htm file, the next request into the application will cause ASP.NET to load the application and app-domain again, and life will continue along as normal.&lt;/p&gt;  &lt;p&gt;One remark: there are some gotcha’s when using this in ASP.NET MVC context. More information about this here: &lt;a title="http://blog.kurtschindler.net/post/app_offlinehtm-gotchas-with-aspnet-mvc" href="http://blog.kurtschindler.net/post/app_offlinehtm-gotchas-with-aspnet-mvc"&gt;http://blog.kurtschindler.net/post/app_offlinehtm-gotchas-with-aspnet-mvc&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-5888467349561607791?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/5888467349561607791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=5888467349561607791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5888467349561607791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5888467349561607791'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/appofflinehtm.html' title='App_Offline.htm'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-FYZrjJZjwRs/TxGk26ONI8I/AAAAAAAAAc0/H3QBCj76IbQ/s72-c/appoffline_thumb%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-396896874356303275</id><published>2012-01-19T16:42:00.000+01:00</published><updated>2012-01-19T16:42:00.562+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>31 days of SSIS</title><content type='html'>&lt;p&gt;I’m far from an expert in SQL Server Integration Services. &lt;/p&gt;  &lt;p&gt;So the &lt;a href="http://www.jasonstrate.com/2011/01/31-days-of-ssis-the-introduction/"&gt;31 days of SSIS series&lt;/a&gt; from Jason Strate were really helpful to me.&lt;/p&gt;  &lt;p&gt;Now he has packed all this information in one, easy-to-read &lt;a href="http://www.jasonstrate.com/wp-content/uploads/downloads/2012/01/31-Days-of-SSIS.pdf"&gt;ebook&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://media.techtarget.com/digitalguide/images/Misc/tt_ssis_1.jpg" width="530" height="495" /&gt;&lt;/p&gt;  &lt;p&gt;A must read for every SSIS developer!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-396896874356303275?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/396896874356303275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=396896874356303275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/396896874356303275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/396896874356303275'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/31-days-of-ssis.html' title='31 days of SSIS'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-6635352554837300960</id><published>2012-01-18T16:36:00.000+01:00</published><updated>2012-01-18T19:35:01.535+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><title type='text'>Auto-Start ASP.NET(MVC) applications in IIS 7.5</title><content type='html'>&lt;h5&gt;&lt;span style="font-weight: normal;"&gt;If your web application has to execute some pre-initialization work, the “Application_Start” event handler within the Global.asax file of an application is the logical place. However as a consequence the unfortunate first customer that accesses the application has to wait while this logic finishes before processing the request (which can lead to a long delay for them).&lt;/span&gt;&lt;/h5&gt;ASP.NET 4&amp;nbsp; and IIS 7.5 introduce a new feature called “auto-start” that better addresses this scenario. The auto-start feature provides a controlled approach for starting up an application worker process, initializing an ASP.NET application, and then accepting HTTP requests.&lt;br /&gt;&lt;h5&gt;&lt;span style="font-weight: normal;"&gt;First configure the IIS “application pool” worker process that the application runs within to automatically startup when the web-server first loads. Open up the IIS 7.5 applicationHost.config file (C:\Windows\System32\inetsrv\config\applicationHost.config) and add a &lt;/span&gt;&lt;em&gt;&lt;span style="font-weight: normal;"&gt;startMode=”AlwaysRunning”&lt;/span&gt;&lt;/em&gt;&lt;span style="font-weight: normal;"&gt; attribute to the appropriate &amp;lt;applicationPools&amp;gt; entry:&lt;/span&gt;&lt;/h5&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1708d2d0-bc78-4b87-ae44-e4b1f44422b7" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="xml" name="code"&gt;&amp;lt;applicationPools&amp;gt; &lt;br /&gt; &amp;lt;add name="MyAppWorkerProcess" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" /&amp;gt;&lt;br /&gt;&amp;lt;/applicationPools&amp;gt; &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;A single IIS application pool worker process can host multiple ASP.NET applications. You can specify which applications you want to have automatically start when the worker process loads by adding a &lt;em&gt;serviceAutoStartEnabled="true" &lt;/em&gt;attribute on their &amp;lt;application&amp;gt; configuration entry:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ff412a2d-6e41-43da-ae10-6aa6ab61364f" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c" name="code"&gt;&amp;lt;sites&amp;gt;&lt;br /&gt; &amp;lt;site name="MySite" id="1"&amp;gt; &lt;br /&gt;  &amp;lt;application path="/" serviceAutoStartEnabled="true" serviceAutoStartProvider="PreWarmMyCache" /&amp;gt;&lt;br /&gt; &amp;lt;/site&amp;gt; &lt;br /&gt;&amp;lt;/sites&amp;gt;&lt;br /&gt;&amp;lt;serviceAutoStartProviders&amp;gt; &lt;br /&gt; &amp;lt;add name="PreWarmMyCache" type="PreWarmCache, MyAssembly" /&amp;gt;&lt;br /&gt;&amp;lt;/serviceAutoStartProviders&amp;gt; &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The &lt;em&gt;serviceAutoProvider="PreWarmMyCache" &lt;/em&gt;attribute above references a provider entry within the config file that enables you to configure a custom class that can be used to encapsulate any "warming up" logic for the application. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:5050670c-c8e4-4da5-9ac0-3ee40cfb6ec3" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;public class PreWarmCache : System.Web.Hosting.IProcessHostPreloadClient &lt;br /&gt;{&lt;br /&gt; public void Preload(string[] parameters) &lt;br /&gt; { &lt;br /&gt; // Perform initialization and cache loading logic here... &lt;br /&gt; } &lt;br /&gt;} &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;More information and all the details in Scott Guthrie’s post: &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx" title="http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-6635352554837300960?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/6635352554837300960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=6635352554837300960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6635352554837300960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6635352554837300960'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/auto-start-aspnetmvc-applications-in.html' title='Auto-Start ASP.NET(MVC) applications in IIS 7.5'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1306370506558110867</id><published>2012-01-17T16:25:00.000+01:00</published><updated>2012-01-18T19:35:21.741+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>WCF IsRequired Attribute</title><content type='html'>For a customer we are developing some WCF webservices. Our message contracts are defined by using&amp;nbsp; DataContract and DataMember attributes on top of our classes and their properties.&lt;br /&gt;The DataMember attribute has some extra properties that allows us to add some extra rules. For example if a property should always be available, we use (IsRequired=true); to indicate this. These rules are checked when a message is received or send.&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:4b4ff4f5-5bd6-419d-ae77-b20bc5e13734" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;[DataContract]&lt;br /&gt;public class TestClass&lt;br /&gt;{&lt;br /&gt;        [DataMember(IsRequired = true)]&lt;br /&gt;        public string RequiredValue { get; set; }&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;However during our test we noticed that it doesn’t work. &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What’s confusing here is that a DataMember has (EmitDefaultValue=true) set by default. An string property’s value starts as String.Empty. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Turn this off by using (EmitDefaultValue=false). Now, a property’s value is null, letting (IsRequired=true) do its validation work as desired.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:c5e7cab7-c044-4008-9392-4a270e1b6f44" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c" name="code"&gt;[DataContract]&lt;br /&gt;public class TestClass&lt;br /&gt;{&lt;br /&gt;        [DataMember(IsRequired = true, EmitDefaultValue=false)]&lt;br /&gt;        public string RequiredValue { get; set; }&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Although it’s still not what we expected. If we add a not-required property(e.g. NotRequiredValue) that refers to a class(e.g. ChildClass) that has a required property(e.g. RequiredValue) the validation fails saying that the RequiredValue is missing. Anyone who has a solution?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:933e16fd-19dc-48f7-b6ee-677a0b3575a4" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;[DataContract]&lt;br /&gt;public class TestClass&lt;br /&gt;{&lt;br /&gt;        [DataMember(IsRequired = true)]&lt;br /&gt;        public string RequiredValue { get; set; }&lt;br /&gt;  &lt;br /&gt;  [DataMember(IsRequired = false)]&lt;br /&gt;  public ChildClass NotRequiredValue { get;set; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[DataContract]&lt;br /&gt;public class ChildClass&lt;br /&gt;{&lt;br /&gt;        [DataMember(IsRequired = true)]&lt;br /&gt;        public string RequiredValue { get; set; }&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1306370506558110867?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1306370506558110867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1306370506558110867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1306370506558110867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1306370506558110867'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/wcf-isrequired-attribute.html' title='WCF IsRequired Attribute'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-5729425958321383126</id><published>2012-01-16T16:12:00.000+01:00</published><updated>2012-01-16T16:12:00.555+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML 5'/><title type='text'>VISUG: Future of the Web</title><content type='html'>&lt;p&gt;&lt;img src="http://www.visug.be/Portals/_default/Skins/Visug/visug_mainlogo.png" /&gt;&lt;/p&gt;  &lt;p&gt;This Thursday I’m giving a session at the &lt;a href="http://www.visug.be/Eventdetails/tabid/95/EventId/50/Default.aspx"&gt;VISUG&lt;/a&gt;(Belgian Visual Studio User Group) together with Kevin DeRuddere about the &lt;strong&gt;Future of the web:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;In this full evening on the future of the web, Visug offers you an evening with 2 sessions on HTML5, CSS3 and JavaScript.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Session 1: Everything you need to know to get you started with HTML5 (Kevin DeRudder)&lt;/strong&gt;      &lt;br /&gt;HTML5, HTML5, HTML5 everything is HTML5. Should we really implement it in our web apps. Well yes, why not?      &lt;br /&gt;In this quick overview you will get some interesting points to get you started. We will have a look at some of the new tags, forms, canvas and what the future will bring.      &lt;br /&gt;Level 200&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Session 2: JavaScript OMG! : An introduction to the unusual and unexpected features of JavaScript(Bart Wullems).        &lt;br /&gt;&lt;/strong&gt;This session is an introduction to the weird side of JavaScript, and it definitely has a weird side! .NET developers will find a lot of intriguing &amp;quot;features&amp;quot; when they begin to write code in the world's most widely used language. Join us to learn about all the gotchas to watch out for and discover some of the great functionality that JavaScript has to offer…&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;On:&lt;/strong&gt; Thursday, January 19, 2012&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Location:&lt;/strong&gt; Combell offices, Gent &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Subscribe here:&lt;/strong&gt; &lt;a title="http://www.visug.be/Eventdetails/tabid/95/EventId/50/Default.aspx" href="http://www.visug.be/Eventdetails/tabid/95/EventId/50/Default.aspx"&gt;http://www.visug.be/Eventdetails/tabid/95/EventId/50/Default.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-5729425958321383126?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/5729425958321383126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=5729425958321383126' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5729425958321383126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5729425958321383126'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/visug-future-of-web.html' title='VISUG: Future of the Web'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7022516712937100736</id><published>2012-01-13T15:08:00.000+01:00</published><updated>2012-01-13T15:08:00.848+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><title type='text'>OWASP Top 10 for .NET Developers</title><content type='html'>&lt;p&gt;I loved reading &lt;a href="http://www.troyhunt.com/2010/05/owasp-top-10-for-net-developers-part-1.html"&gt;this series&lt;/a&gt; by Troy Hunt. In the meanwhile I learned a lot about application security and risks involved.&lt;/p&gt;  &lt;p&gt;If you have never heard of &lt;a href="https://www.owasp.org/index.php/Main_Page"&gt;OWASP&lt;/a&gt; before a short introduction:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="https://www.owasp.org/index.php/Main_Page"&gt;&lt;em&gt;OWASP&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, the Open Web Application Security Project, is a non-profit charitable organisation established with the express purpose of promoting secure web application design. OWASP has produced some excellent material over the years, not least of which is The Ten Most Critical Web Application Security Risks – or “Top 10” for short.        &lt;br /&gt;The Top 10 is a fantastic resource for the purpose of identification and awareness of common security risks.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Oh, by the way, the current the Top 10 Security Risks for 2010 are&lt;/em&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="https://www.owasp.org/index.php/Top_10_2010-A1"&gt;A1: Injection&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="https://www.owasp.org/index.php/Top_10_2010-A2"&gt;A2: Cross-Site Scripting (XSS)&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="https://www.owasp.org/index.php/Top_10_2010-A3"&gt;A3: Broken Authentication and Session Management&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="https://www.owasp.org/index.php/Top_10_2010-A4"&gt;A4: Insecure Direct Object References&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="https://www.owasp.org/index.php/Top_10_2010-A5"&gt;A5: Cross-Site Request Forgery (CSRF)&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="https://www.owasp.org/index.php/Top_10_2010-A6"&gt;A6: Security Misconfiguration&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="https://www.owasp.org/index.php/Top_10_2010-A7"&gt;A7: Insecure Cryptographic Storage&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="https://www.owasp.org/index.php/Top_10_2010-A8"&gt;A8: Failure to Restrict URL Access&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="https://www.owasp.org/index.php/Top_10_2010-A9"&gt;A9: Insufficient Transport Layer Protection&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="https://www.owasp.org/index.php/Top_10_2010-A10"&gt;A10: Unvalidated Redirects and Forwards&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;To make it even better Troy decided to turn this piece of art into an e-book. So just go and &lt;a href="http://asafaweb.com/OWASP%20Top%2010%20for%20.NET%20developers.pdf"&gt;download&lt;/a&gt; these 255 pages of .NET web development security goodness. &lt;/p&gt;  &lt;p&gt;And thank you, Troy Hunt!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://asafaweb.com/OWASP%20Top%2010%20for%20.NET%20developers.pdf"&gt;&lt;img title="" border="0" alt="OWASP Top 10 for .NET developers eBook" src="http://lh6.ggpht.com/-I81p1lsyVqY/Tu8dSom4CwI/AAAAAAAADEk/BqnaRJ3n5Uc/ipad-32.png?imgmax=800" width="401" height="513" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7022516712937100736?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7022516712937100736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7022516712937100736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7022516712937100736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7022516712937100736'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/owasp-top-10-for-net-developers.html' title='OWASP Top 10 for .NET Developers'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-I81p1lsyVqY/Tu8dSom4CwI/AAAAAAAADEk/BqnaRJ3n5Uc/s72-c/ipad-32.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-359321905554499347</id><published>2012-01-12T14:57:00.000+01:00</published><updated>2012-01-12T14:57:00.837+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>Microsoft Team Foundation Server 2010 MOSS Configuration Tool</title><content type='html'>&lt;p&gt;Configuring your MOSS environment to enable Team Foundation Server integration can be &lt;a href="http://msdn.microsoft.com/en-us/library/ms253053.aspx"&gt;a daunting task&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Microsoft tried to simplify this task by releasing the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/db469790-5e3e-42f3-906e-411a73795a1b"&gt;TFS 2010 MOSS Configuration Tool&lt;/a&gt;.&lt;/p&gt;  &lt;h5&gt;Microsoft Team Foundation Server 2010 MOSS Configuration Tool&lt;/h5&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;You can use this tool to configure an existing installation of Microsoft Office SharePoint Server 2007 or Microsoft SharePoint Server 2010 for use with Microsoft Visual Studio Team Foundation Server 2010. The tool automates the configuration of the following features with certain default values, which are explained in the configuration instructions that are included with the tool. The tool will skip configuring a feature if it is already enabled and configured.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;The configuration tool is designed to configure relatively simple deployments of Office SharePoint Server 2007 or SharePoint Server 2010. The tool uses default settings to configure the features. You should not use this tool if any of the following is true:&lt;/em&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;em&gt;your deployment requires the use of specific ports or protocols &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;your deployment utilizes multiple application-tier servers for the server farm &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;you want to configure your deployment with settings other than the default ones used by the tool&lt;/em&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;I was able to get the tool working on my local test environment, but on our tightly secured company environment, I had one error after the other.&lt;/p&gt;  &lt;p&gt;Anyone who had more success with this tool?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-359321905554499347?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/359321905554499347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=359321905554499347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/359321905554499347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/359321905554499347'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/microsoft-team-foundation-server-2010.html' title='Microsoft Team Foundation Server 2010 MOSS Configuration Tool'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-8313346753695965352</id><published>2012-01-11T14:47:00.000+01:00</published><updated>2012-01-11T14:47:01.086+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='Entity Framework'/><title type='text'>Official Oracle support for Entity Framework v4</title><content type='html'>&lt;p&gt;Although Oracle support for Entity Framework was available through some &lt;a href="http://www.datadirect.com/products/net/index.html"&gt;3th party components&lt;/a&gt;, Oracle has finally released it’s (free!) version of ODP.NET that supports Entity Framework for use in production environments.&lt;/p&gt;  &lt;p&gt;This is great news for many developers! Unfortunately features like Code First and DbContext can not be used with this release.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ODAC 11.2 Release 4 Production Released with Entity Framework and LINQ Support&lt;/strong&gt;    &lt;br /&gt;&lt;em&gt;ODAC 11.2 Release 4 (11.2.0.3) has arrived for Entity Framework and LINQ developers! It includes 32-bit and x64 versions with the option of using an automated installer or xcopy deployment.     &lt;br /&gt;The release incorporates Oracle Database client 11.2.0.3, which can access Oracle Database 9.2 and higher. Oracle supports Entity Framework and LINQ with Microsoft Visual Studio 2010 and .NET Framework 4, including Entity Framework 4.1 and 4.2. Code First is not supported in this release.&lt;/em&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Download ODAC 11.2 Release 4      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html"&gt;32-bit ODAC with Oracle Developer Tools for Visual Studio&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html"&gt;32-bit ODAC xcopy&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html"&gt;x64 ODAC installer and xcopy&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Article: &lt;a href="http://www.oracle.com/technetwork/issue-archive/2011/11-sep/o51odt-453447.html"&gt;Use Entity Framework with ODP.NET&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/topics/dotnet/tech-info/odac-112-r4-ds-1444666.pdf"&gt;ODAC 11.2 Release 4 Data Sheet&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://docs.oracle.com/cd/E20434_01/welcome.html"&gt;ODAC 11.2 Release 4 Documentation&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/database/windows/newfeatures-084113.html"&gt;ODAC New Features List&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.oracle.com/forums/forum.jspa?forumID=146"&gt;Discussion Forum: ODP.NET&lt;/a&gt; - Post feedback on Entity Framework data access&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.oracle.com/forums/forum.jspa?forumID=228"&gt;Discussion Forum: Oracle Developer Tools for Visual Studio&lt;/a&gt; - Post feedback on Entity Framework tools&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-8313346753695965352?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/8313346753695965352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=8313346753695965352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8313346753695965352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8313346753695965352'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/official-oracle-support-for-entity.html' title='Official Oracle support for Entity Framework v4'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7893437500627288343</id><published>2012-01-10T14:40:00.000+01:00</published><updated>2012-01-10T14:40:00.352+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><title type='text'>TFS 2010: What to install where?</title><content type='html'>&lt;p&gt;With all the updates, fixes and service packs it’s hard to keep up with what component you have to install where.&lt;/p&gt;  &lt;p&gt;To help us Grant Holiday provided &lt;a href="http://blogs.msdn.com/b/granth/archive/2012/01/03/tfs-2010-what-service-packs-and-hotfixes-should-i-install.aspx"&gt;an installation overview&lt;/a&gt;.&lt;/p&gt;  &lt;h5&gt;A short summary:&lt;/h5&gt;  &lt;p&gt;Server side:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Application Tier&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=15070"&gt;Team Foundation Server 2010 RTM&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=20506"&gt;Team Foundation Server 2010 SP1&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=26211"&gt;Team Foundation Server 2010 SP1 Cumulative Update 1&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Database Tier&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27594"&gt;SQL Server 2008 Service Pack 3&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Or &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26727"&gt;SQL Server 2008 R2 Service Pack 1&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;Client side:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=329"&gt;Visual Studio 2010 Team Explorer RTM&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=23691"&gt;Visual Studio 2010 Team Explorer SP1&lt;/a&gt;&amp;#160; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f"&gt;Visual Studio 2010 Power Tools&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7893437500627288343?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7893437500627288343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7893437500627288343' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7893437500627288343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7893437500627288343'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/tfs-2010-what-to-install-where.html' title='TFS 2010: What to install where?'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-8852590600929653774</id><published>2012-01-09T11:20:00.000+01:00</published><updated>2012-01-09T11:20:00.510+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><title type='text'>Generate a help page from a Word document: chmProcessor</title><content type='html'>&lt;p&gt;In my ongoing quest to find a good tool to create our help files for a web application we are building, I stumbled over the following tool: &lt;a href="http://chmprocessor.sourceforge.net/"&gt;chmProcessor&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“chmProcessor is a tool that allows generating a help project and a compiled HTML help (CHM file) from a MS Word or HTML 4 file. If the file is a word document, the section titles must use the “Title 1”, “Title 2”, etc styles that offers by default Word. If the file is a HTML 4 file, the titles must use the &amp;lt;H1&amp;gt;, &amp;lt;H2&amp;gt;, etc. tags.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;From this original file, each section of the document is split to different HTML files. Each of these files will be a topic page at the help. From the original document, you can generate:&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;· A Microsoft Help Workshop project.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;· A compiled HTML help (CHM file).&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;· A web site like this.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;· An Adobe PDF file.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;· A Microsoft XPS file.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;· A Java Help JAR file.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;img alt="Main Window" src="http://sourceforge.net/projects/chmprocessor/screenshots/183868" width="610" height="480" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#cc6600"&gt;&lt;font color="#000000"&gt;More information here:&lt;/font&gt; &lt;a title="http://chmprocessor.sourceforge.net/" href="http://chmprocessor.sourceforge.net/"&gt;http://chmprocessor.sourceforge.net/&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;And the download is available here: &lt;a title="http://sourceforge.net/projects/chmprocessor/" href="http://sourceforge.net/projects/chmprocessor/"&gt;http://sourceforge.net/projects/chmprocessor/&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-8852590600929653774?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/8852590600929653774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=8852590600929653774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8852590600929653774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8852590600929653774'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/generate-help-page-from-word-document.html' title='Generate a help page from a Word document: chmProcessor'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-8979702863800507811</id><published>2012-01-06T12:38:00.000+01:00</published><updated>2012-01-06T12:38:00.655+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><title type='text'>TFS: Securing Work Item Definition updates</title><content type='html'>&lt;p&gt;Recently I got the following question from a customer:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“Can you prevent a user from updating a project's work item definition or its project template?”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is not so easy to achieve as there is not a specific permission that controls this feature. By default members of the &amp;quot;Project Collection Administrators&amp;quot; and &amp;quot;Project Administrators&amp;quot; group have hard-coded admin permissions. Even if you remove the &amp;quot;Edit Project-Level Information&amp;quot; permissions, they have the ability to give that permission to themselves again.&lt;/p&gt;  &lt;p&gt;The only way to prevent users from modifying the work item definitions, is to keep them out of the Project Admin groups.&amp;#160; If you still&amp;#160; want to&amp;#160; make these people administrators, I recommend to create a new administrators group and give them the same permissions, except for the following set:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Manage process template(Project Collection level)&lt;/li&gt;    &lt;li&gt;Manage work item link types(Project Collection level)&lt;/li&gt;    &lt;li&gt;Edit project-level information(Project level)&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-8979702863800507811?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/8979702863800507811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=8979702863800507811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8979702863800507811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8979702863800507811'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/tfs-securing-work-item-definition.html' title='TFS: Securing Work Item Definition updates'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1089310484756517865</id><published>2012-01-05T12:27:00.000+01:00</published><updated>2012-01-05T12:27:00.446+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><title type='text'>CleanUp HTML tool</title><content type='html'>&lt;p&gt;On a recent project, we got our documentation in a Word document. Very useful until we had to integrate this documentation inside a web application. You can save a word document as an html page but the end result is ‘less than optimal’. &lt;/p&gt;  &lt;p&gt;There comes the &lt;a href="http://www.cleanuphtml.com/cleanup.html"&gt;CleanUp HTML tool&lt;/a&gt; to the rescue!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.cleanuphtml.com/cleanup.html"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-cNFc0ERQ-wU/Tv7xnGJ4OrI/AAAAAAAAAXs/9MUE5hL-cWY/image%25255B3%25255D.png?imgmax=800" width="244" height="103" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Cleanup HTML &lt;/strong&gt;is online tool based on Tidy to clean up HTML code from excessive tags. Microsoft Word and other Microsoft Office products are known from generating cluttered HTML code and big files when you try to save as web page. This online tool is able to strip all unnecessary &amp;lt;font&amp;gt;, empty tags, non-breaking spaces and Microsoft Word Styles and output properly structured clean code.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1089310484756517865?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1089310484756517865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1089310484756517865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1089310484756517865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1089310484756517865'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/cleanup-html-tool.html' title='CleanUp HTML tool'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-cNFc0ERQ-wU/Tv7xnGJ4OrI/AAAAAAAAAXs/9MUE5hL-cWY/s72-c/image%25255B3%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1707821806450110287</id><published>2012-01-04T12:22:00.000+01:00</published><updated>2012-01-04T12:22:00.515+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 11'/><title type='text'>Visual Studio 11 Developer Preview Training Kit: December Update</title><content type='html'>&lt;p&gt;Last week Microsoft released an update to the Visual Studio 11 Developer Preview Training Kit. &lt;/p&gt;  &lt;p&gt;The Training Kit is available in &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27738"&gt;two different offline packages&lt;/a&gt; and is also available to &lt;a href="http://msdn.microsoft.com/en-us/VS11TrainingCourse"&gt;browse online at MSDN&lt;/a&gt;. You can download the kit as a single package (37.2mb download), or you can download the Web Installer (2.5mb download) to browse the available content and download only the labs that you need.&lt;/p&gt;  &lt;p&gt;Below is the list of hands-on labs that are included in the Training Kit.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Visual Studio Development Environment&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A Lap Around the Visual Studio 11 Development Environment &lt;/li&gt;    &lt;li&gt;What's New in Visual Studio 11 for C++ Developers (new) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Languages&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Asynchronous Programming in the .NET Framework 4.5 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Web&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;What's New in ASP.NET and Web Development in VS 11 &lt;/li&gt;    &lt;li&gt;What's New in Web Forms in ASP.NET 4.5 &lt;/li&gt;    &lt;li&gt;What's New in ASP.NET MVC 4 (new) &lt;/li&gt;    &lt;li&gt;Using Page Inspector in Visual Studio 11 (new) &lt;/li&gt;    &lt;li&gt;Build RESTful APIs with WCF Web API &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;.NET Framework&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Using Portable Class Libraries (new) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Application Lifecycle Management      &lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Building the Right Software: Generating Storyboards and Collecting Stakeholder Feedback with Visual Studio 11 &lt;/li&gt;    &lt;li&gt;Agile Project Management in Team Foundation Server 11 &lt;/li&gt;    &lt;li&gt;Making Developers More Productive with Team Foundation Server 11 &lt;/li&gt;    &lt;li&gt;Diagnosing Issues in Production with IntelliTrace and Visual Studio 11 &lt;/li&gt;    &lt;li&gt;Exploratory Testing and Other Enhancements in Microsoft Test Manager 11 &lt;/li&gt;    &lt;li&gt;Unit Testing with Visual Studio 11: MSTest, NUnit, xUnit.net, and Code Clone &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Windows Metro-style apps      &lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows 8 Developer Preview Hands on Labs from BUILD (link to &lt;a href="http://www.buildwindows.com/labs"&gt;http://www.buildwindows.com/labs&lt;/a&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1707821806450110287?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1707821806450110287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1707821806450110287' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1707821806450110287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1707821806450110287'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/visual-studio-11-developer-preview.html' title='Visual Studio 11 Developer Preview Training Kit: December Update'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-3792195569829654660</id><published>2012-01-03T12:20:00.000+01:00</published><updated>2012-01-03T12:20:00.439+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='MSBuild'/><title type='text'>Community TFS Build Extensions: December release</title><content type='html'>&lt;p&gt;Just before the year ending, a new version of the &lt;a href="http://tfsbuildextensions.codeplex.com/releases/view/75159"&gt;Community TFS Build Extensio&lt;/a&gt;ns is released. This release contains 100 Activities / Actions for Team Foundation Build 2010 and Team Foundation Build 11.&lt;/p&gt;  &lt;p&gt;New in this release is the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/16bafc63-0f20-4cc3-8b67-4e25d150102c"&gt;Community TFS Build Manager&lt;/a&gt;. It is intended to ease the management of builds in medium to large Team Foundation Server environments, though it does provide a few features which all users may find useful.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://geekswithblogs.net/images/geekswithblogs_net/jakob/Windows-Live-Writer/Introducing-Community-TFS-Build-Manager_14F14/image_2.png" /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;b&gt;Current Feature Set&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;View and sort Builds and Build Definitions across multiple Build Controllers and Team Projects &lt;/li&gt;    &lt;li&gt;Bulk operations on Build Definitions      &lt;ul&gt;       &lt;li&gt;Change Build Templates &lt;/li&gt;        &lt;li&gt;Queue &lt;/li&gt;        &lt;li&gt;Enable &lt;/li&gt;        &lt;li&gt;Disable &lt;/li&gt;        &lt;li&gt;Delete &lt;/li&gt;        &lt;li&gt;Set Retention Policies &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Clone Build Definitions (includes workspace mapping translation) &lt;/li&gt;    &lt;li&gt;Create a DGML image of your Builds and Controllers &lt;/li&gt;    &lt;li&gt;Bulk operations on Builds      &lt;ul&gt;       &lt;li&gt;Delete &lt;/li&gt;        &lt;li&gt;Open Drop Folders &lt;/li&gt;        &lt;li&gt;Retain Indefinitely &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt; The Community TFS Build Manager is now available on the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/16bafc63-0f20-4cc3-8b67-4e25d150102c"&gt;Visual Studio Extensions Gallery&lt;/a&gt;  &lt;br /&gt;A blog post by Jakob Ehn describing the features of the Community TFS Build Manager can be found &lt;a href="http://geekswithblogs.net/jakob/archive/2011/12/30/introducing-community-tfs-build-manager.aspx"&gt;here&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-3792195569829654660?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/3792195569829654660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=3792195569829654660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/3792195569829654660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/3792195569829654660'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/community-tfs-build-extensions-december.html' title='Community TFS Build Extensions: December release'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-6226864208671459620</id><published>2012-01-02T12:10:00.000+01:00</published><updated>2012-01-02T12:10:00.821+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='MSBuild'/><title type='text'>TFS 2010 Build: TF215087 error</title><content type='html'>&lt;p&gt;If you ever tried to build some custom activities in TFS 2010 Build you’ve probably run into the following&amp;#160; error message:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;TF215097: An error occurred while initializing a build for build definition \TeamProject\MyBuildDefinition: Cannot create unknown type '{clr-namespace:[namespace];assembly=[assembly]}Activity &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This means that the TFS build service couldn’t create an&amp;#160; instance of the customer workflow activity that is referenced inside your build process template.&lt;/p&gt;  &lt;p&gt;So here is a short checklist with some possible reasons:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You have checked in the modified version of the XAML workflow.&lt;/li&gt;    &lt;li&gt;Your custom activity has the the &lt;strong&gt;BuildActivityAttribute.&lt;/strong&gt;&amp;#160; &lt;/li&gt;    &lt;li&gt;Your custom activity is &lt;strong&gt;public.&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;You have configured your build controller with the path in source control where the custom activities are located . &lt;/li&gt;    &lt;li&gt;Verify that all dependencies for the custom activity assembly/assemblies have been checked into the same location as the assembly. &lt;/li&gt;    &lt;li&gt;The reference to the custom activity assembly in the XAML workflow is correct.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-6226864208671459620?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/6226864208671459620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=6226864208671459620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6226864208671459620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6226864208671459620'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2012/01/tfs-2010-build-tf215087-error.html' title='TFS 2010 Build: TF215087 error'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1880319848104514959</id><published>2011-12-23T14:29:00.000+01:00</published><updated>2011-12-23T14:29:00.149+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML 5'/><title type='text'>HTML 5 and CSS: Six Complete Lessons</title><content type='html'>&lt;p&gt;You want to learn HTML 5 and CSS? Microsft has created &lt;a href="http://www.mis-laboratory.com/faculty/"&gt;six complete lessons&lt;/a&gt; that cover the most interesting and dynamic new features of HTML 5 that are ready to drop into a web development or intro programming course. Each lesson comes with instructor PowerPoint slides, a complete reading assignment with hands-on examples, including the files and assets to use in each assignment. A single lesson has enough content for a 75-100 minute class session, and the hands-on examples are great for either a lab session or homework assignment.&lt;/p&gt;  &lt;p&gt;The six lessons are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Lesson 1 – Defining HTML 5 &lt;/li&gt;    &lt;li&gt;Lesson 2 – Fundamentals of HTML 5, XHTML, and CSS &lt;/li&gt;    &lt;li&gt;Lesson 3 – Introduction to CSS Layout &lt;/li&gt;    &lt;li&gt;Lesson 4 – Using HTML 5 Markup &lt;/li&gt;    &lt;li&gt;Lesson 5 – Working with Canvas &lt;/li&gt;    &lt;li&gt;Lesson 6 – HTML 5 Multi-Media and Drag and Drop&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This content is available at no charge and can be downloaded from here: &lt;a href="http://www.mis-laboratory.com/faculty/"&gt;http://www.mis-laboratory.com/faculty/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1880319848104514959?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1880319848104514959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1880319848104514959' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1880319848104514959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1880319848104514959'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/html-5-and-css-six-complete-lessons.html' title='HTML 5 and CSS: Six Complete Lessons'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-2397029069600582234</id><published>2011-12-22T12:02:00.000+01:00</published><updated>2011-12-22T12:02:00.348+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><title type='text'>Telerik MVC Grid won't refresh after delete</title><content type='html'>&lt;p&gt;For a project we are using the Telerik MVC controls. I have to say that I was really pleased with the experience in general, although I had some small issues.&lt;/p&gt;  &lt;p&gt;One of the problems I had was with the &lt;a href="http://demos.telerik.com/aspnet-mvc/grid/editingajax"&gt;editing feature of the Telerik MVC Grid&lt;/a&gt;. Everything appears to work as expected except for the delete. The delete MVC action is called and the row is&amp;#160; deleted from the database but the grid does not refresh.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:889c22bc-ddd2-46c1-8192-a3526a59eb1a" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;[HttpPost]&lt;br /&gt;[GridAction]&lt;br /&gt;public ActionResult DeleteCodetable(string codetableType, Codetable codetable)&lt;br /&gt;{&lt;br /&gt;	_codetabelService.Delete(codetable);&lt;br /&gt;	//Rebind the grid&lt;br /&gt;	return LoadCodetable(codetableType, refreshCache: true);&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;It took me some time to find the answer on &lt;a href="http://www.telerik.com/community/forums/aspnet-mvc/grid/problem-with-grid-ajax-rebind.aspx"&gt;the forums&lt;/a&gt;. The delete action only passes the id of the element to delete to the action method. This causes some model binding validation errors as the Code and Description field are required on my Codetable object.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:a231d7b8-3794-4bfa-abdb-333e00f446c4" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;public class Codetable&lt;br /&gt;{&lt;br /&gt;    [Required]&lt;br /&gt;    public virtual int Id { get; set; }&lt;br /&gt;    [Required]&lt;br /&gt;	public virtual string Code { get; set; }&lt;br /&gt;	[Required]&lt;br /&gt;	public virtual string Description{ get; set; }&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;By design if there are model state errors (validation didn't work) the grid is not rebound. So when the DeleteCodetable method returns the result, the grid will not refresh. I solved it by introducing the &lt;code&gt;&lt;a href="http://www.codeproject.com/Articles/293894/Partial-Validation-with-Data-Annotations-in-ASP-NE"&gt;IgnoreModelErrors&lt;/a&gt; &lt;/code&gt;attribute in my code.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:a0391492-49b8-40f8-8b59-94b8aa8401bb" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;[HttpPost]&lt;br /&gt;[IgnoreModelErrors("Code,Description"]&lt;br /&gt;[GridAction]&lt;br /&gt;public ActionResult DeleteCodetable(string codetableType, Codetable codetable)&lt;br /&gt;{&lt;br /&gt;	_codetabelService.Delete(codetable);&lt;br /&gt;	//Rebind the grid&lt;br /&gt;	return LoadCodetable(codetableType, refreshCache: true);&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-2397029069600582234?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/2397029069600582234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=2397029069600582234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/2397029069600582234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/2397029069600582234'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/telerik-mvc-grid-won-refresh-after.html' title='Telerik MVC Grid won&amp;#39;t refresh after delete'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-6601697041109459420</id><published>2011-12-21T11:40:00.000+01:00</published><updated>2011-12-21T11:40:00.081+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Microsoft Product Lifecycle Search</title><content type='html'>&lt;p&gt;I get a lot of questions about the lifetime and end of support of multiple Microsoft products (especially about one you probably heard of before… Silverlight &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Knipogende emoticon" src="http://lh5.ggpht.com/-fOAHEi64J3w/Tu3DM7_s0nI/AAAAAAAAAXU/3zZwj0GbqNw/wlEmoticon-winkingsmile%25255B2%25255D.png?imgmax=800" /&gt;). &lt;/p&gt;  &lt;h5&gt;So how do you know how long Microsoft will officially support a product or technology? &lt;/h5&gt;  &lt;p&gt; It’s not a secret. You only have to browse to the &lt;a href="http://support.microsoft.com/lifecycle/search/"&gt;Microsoft Product Lifecycle Search Page&lt;/a&gt; and search the product or technology. &lt;/p&gt;  &lt;p&gt;Let’s do the test with Silverlight 5:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-vsYIkCohZUw/Tu3DNYT_YYI/AAAAAAAAAXc/aoR_q-tLbfM/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-DbF5PDGyRU0/Tu3DOx0fSJI/AAAAAAAAAXk/u7jHLWGltUY/image_thumb%25255B1%25255D.png?imgmax=800" width="856" height="387" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So now it’s official… Silverlight 5 is dead in 2021. I guess that gives you the time you need to upgrade…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-6601697041109459420?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/6601697041109459420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=6601697041109459420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6601697041109459420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6601697041109459420'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/microsoft-product-lifecycle-search.html' title='Microsoft Product Lifecycle Search'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-fOAHEi64J3w/Tu3DM7_s0nI/AAAAAAAAAXU/3zZwj0GbqNw/s72-c/wlEmoticon-winkingsmile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-8034387378975227214</id><published>2011-12-20T10:30:00.000+01:00</published><updated>2011-12-20T10:30:05.024+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DB2'/><title type='text'>Look up DB2 error codes: the fast way</title><content type='html'>&lt;p&gt;I have to admit that I’m not a big fan of DB2 although there is not much wrong with the database itself. I have more problems with the far-from-perfect tooling. &lt;/p&gt;  &lt;p&gt;One of the things that keep annoying me are the cryptic error messages including an even more cryptic SQL error code that DB2 returns. Normally I look up the error code in the &lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v9r7"&gt;DB2 Information Center&lt;/a&gt;, but if you need a shorter and faster way to get at least a short explanation of what an error code means, you can use the following SQL query:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;VALUES SQLERRM(-161)&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Result:&lt;/p&gt;  &lt;pre&gt;&lt;code&gt;1&lt;br /&gt;------------------------------------------------------------------------------------------------------&lt;br /&gt;SQL0161N  The resulting row of the insert or update operation does not conform to the view definition.&lt;/code&gt;&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-8034387378975227214?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/8034387378975227214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=8034387378975227214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8034387378975227214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8034387378975227214'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/look-up-db2-error-codes-fast-way.html' title='Look up DB2 error codes: the fast way'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-8364416700832954217</id><published>2011-12-19T10:23:00.000+01:00</published><updated>2011-12-19T10:23:00.079+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><title type='text'>Team Foundation Server 2010 Power Tools for Eclipse</title><content type='html'>&lt;p&gt;Visual Studio users already know this for a long time, Microsoft has the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f"&gt;Team Foundation Server Power tools&lt;/a&gt;. These tools extend the Visual Studio and Team Explorer IDE with lots of extra functionality. &lt;/p&gt;  &lt;p&gt;Now these features finally become available to Eclipse Developers as Microsoft released the first version of the &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28557&amp;amp;WT.mc_id=rss_alldownloads_all"&gt;Team Foundation Server 2010 Power Tools for Eclipse&lt;/a&gt;.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“A set of Team Foundation Server power tools targeted for Eclipse developers already using Team Explorer Everywhere 2010 with SP1 to talk to TFS. This release brings the ability to be able to sign up for Team Foundation Server alerts directly from Eclipse, to save common work item details into a work item template for quick creation of new work items and to allow searching of files in source control by file name, wildcard or by the developer who has the file checked out.”&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-8364416700832954217?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/8364416700832954217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=8364416700832954217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8364416700832954217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8364416700832954217'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/team-foundation-server-2010-power-tools.html' title='Team Foundation Server 2010 Power Tools for Eclipse'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-3273239134401280935</id><published>2011-12-16T15:55:00.000+01:00</published><updated>2011-12-16T15:55:00.284+01:00</updated><title type='text'>Techniques to improve your training feedback: The happiness door</title><content type='html'>&lt;p&gt;Useful feedback is one the best ways to improve your training skills. But how do you know what people think?&lt;/p&gt;  &lt;p&gt;Of course you can always ask to fill in a questionnaire but that takes a lot of work, so you probably only do this at the end of your training. But this gives you only a general overview and actually it’s already too late. Wouldn’t it be nice to get feedback during the training and adapt immediately?&lt;/p&gt;  &lt;p&gt;One feedback technique I’ll give a try during my next training is ‘The Happiness Door’ as described by Jurgen Appelo in this blog post: &lt;a title="http://www.noop.nl/2011/11/the-happiness-door.html" href="http://www.noop.nl/2011/11/the-happiness-door.html"&gt;http://www.noop.nl/2011/11/the-happiness-door.html&lt;/a&gt;. Don’t forget to read his tips before trying this technique.&lt;/p&gt;  &lt;p&gt;The method is very simple. You ask people to give you &lt;strong&gt;immediate feedback&lt;/strong&gt; after a training session. They do this by adding notes to on a wall or door and placing it next to the happiness index (5 = excellent … 1 = bad) they want. People can add empty notes or leave some comments.&lt;/p&gt;  &lt;p&gt;&lt;img alt="Happinessdoor" src="http://nooperation.typepad.com/.a/6a00e54ff8b9c18834015436da7328970c-800wi" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-3273239134401280935?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/3273239134401280935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=3273239134401280935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/3273239134401280935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/3273239134401280935'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/techniques-to-improve-your-training.html' title='Techniques to improve your training feedback: The happiness door'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-53729361679068210</id><published>2011-12-15T15:36:00.000+01:00</published><updated>2011-12-15T15:36:00.354+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>CSSCop: Integrate CSS Lint into Visual Studio</title><content type='html'>&lt;p&gt;To all .NET Web developers: this is a must have tool for in your tool belt!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/a921b98e-9430-4be2-bf53-1169e12bdb50"&gt;CSSCop&lt;/a&gt; makes it easy to adhere to best practices for writing stylesheets. It catches common errors that affect browser compatibility and much more.&lt;/p&gt;  &lt;p&gt;It uses the widely used &lt;a href="http://csslint.net"&gt;CSS Lint&lt;/a&gt; tool behind the scenes. CSSCop brings it directly into Visual Studio in an easy and convinient way.&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://visualstudiogallery.msdn.microsoft.com/site/view/file/62100/1/contextmenu.png" width="259" height="86" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://i1.visualstudiogallery.msdn.s-msft.com/a921b98e-9430-4be2-bf53-1169e12bdb50/image/file/62104/1/screenshot.png" width="277" height="190" /&gt;&lt;/p&gt;  &lt;p&gt;Download available here: &lt;a title="http://visualstudiogallery.msdn.microsoft.com/a921b98e-9430-4be2-bf53-1169e12bdb50" href="http://visualstudiogallery.msdn.microsoft.com/a921b98e-9430-4be2-bf53-1169e12bdb50"&gt;http://visualstudiogallery.msdn.microsoft.com/a921b98e-9430-4be2-bf53-1169e12bdb50&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-53729361679068210?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/53729361679068210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=53729361679068210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/53729361679068210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/53729361679068210'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/csscop-integrate-css-lint-into-visual.html' title='CSSCop: Integrate CSS Lint into Visual Studio'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7679463767731971487</id><published>2011-12-14T17:15:00.000+01:00</published><updated>2011-12-14T17:15:00.855+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><title type='text'>Team Foundation Server WorkItem FieldControl Attributes</title><content type='html'>&lt;p&gt;Probably the easiest way to customize a TFS WorkItem is by using the Process editor, a part of the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f"&gt;TFS Power Tools&lt;/a&gt;. Using this editor you can add your own work item fields, customize the layout and change the corresponding workflow. Next to the obvious list of settings there are some less known things you can change using the Attributes property.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-w83y9JLnMD8/TuOFsjIfTZI/AAAAAAAAAXE/6rsLv7h5Ho8/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-IyRgZDesg1M/TuOFt18nJmI/AAAAAAAAAXM/0BQXQs07bgs/image_thumb%25255B1%25255D.png?imgmax=800" width="1094" height="445" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;By using these attributes you can add custom attributes to the Work Item XML. Here are some useful attribute samples:&lt;/p&gt;  &lt;blockquote&gt;   &lt;ul&gt;     &lt;li&gt;&lt;strong&gt;NumberFormat&lt;/strong&gt; (for FieldControl only): Useful if a number value is displayed in the field. Possible values: WholeNumbers, SignedWholeNumbers, DecimalNumbers, SignedDecimalNumbers. Setting this attribute determines what characters are allowed to be entered in this control.&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;MaxLength&lt;/strong&gt; (for FieldControl only): Maximum length of allowed characters for field control in form UI.&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;Format&lt;/strong&gt; (for DateTimeControl only): One of values of &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformsdatetimepickerformatclasstopic.asp"&gt;DateTimePickerFormat enum&lt;/a&gt;. Possible values: Long, Short, Time and Custom. Custom format can be set by having 'Custom' as value for this attribute, and setting another attribute named &lt;strong&gt;CustomFormat&lt;/strong&gt; with actual custom format string.&lt;/li&gt;   &lt;/ul&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7679463767731971487?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7679463767731971487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7679463767731971487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7679463767731971487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7679463767731971487'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/team-foundation-server-workitem.html' title='Team Foundation Server WorkItem FieldControl Attributes'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-IyRgZDesg1M/TuOFt18nJmI/AAAAAAAAAXM/0BQXQs07bgs/s72-c/image_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-4683640170192290293</id><published>2011-12-14T14:22:00.000+01:00</published><updated>2011-12-14T14:22:00.804+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='MSBuild'/><title type='text'>TF215097: An error occurred while initializing a build for build definition: Cannot create unknown type</title><content type='html'>&lt;p&gt;While creating some custom build activities for TFS Build I ran into this error&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;TF215097: An error occurred while initializing a build for build definition \OrdinaALM\TestBuild: Cannot create unknown type '{clr-namespace=Ordina.CustomActivities;assembly=Ordina.CustomActivities}Ndepend'.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I discovered that my solution couldn't be loaded because TFS is looking for a particular attribute to my class. As my custom activity was completely build in XAML I had to use a partial class definition to get the attribute added. &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:30e5f95b-d48f-4136-a42a-36fe31f9c188" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;namespace Ordina.CustomActivities&lt;br /&gt;{&lt;br /&gt;	[Microsoft.TeamFoundation.Build.Client.BuildActivity(Microsoft.TeamFoundation.Build.Client.HostEnvironmentOption.All)] &lt;br /&gt;	partial class Ndepend&lt;br /&gt;	{&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-4683640170192290293?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/4683640170192290293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=4683640170192290293' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4683640170192290293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4683640170192290293'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/tf215097-error-occurred-while.html' title='TF215097: An error occurred while initializing a build for build definition: Cannot create unknown type'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-8639582183757682939</id><published>2011-12-13T16:21:00.000+01:00</published><updated>2011-12-13T16:21:00.764+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><title type='text'>QFEs and Hotfix Rollup Package for Microsoft Test Manager 2010</title><content type='html'>&lt;p&gt;If you are using Microsoft Test Manager, this post is for you. &lt;/p&gt;  &lt;p&gt;It’s a good idea to check if you have all the hotfixes and updates installed.These updates contains features like:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Multi-line support for editing test cases in Microsoft Test Manager &lt;/li&gt;    &lt;li&gt;Reduce the size of test data saved to the TFS Database &lt;/li&gt;    &lt;li&gt;Performance improvements for loading automated test cases from a build-drop path &lt;/li&gt;    &lt;li&gt;Performance improvements for publishing test results on a test suite that contains thousands of test cases in Test Manager &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I recommend to have a look at the full list of updates(&lt;a href="http://blogs.msdn.com/b/vstsqualitytools/archive/2011/11/29/qfes-for-microsoft-test-manager-2010.aspx"&gt;QFEs for Microsoft Test Manager 2010&lt;/a&gt;) and download them if one or more are missing.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.florusso.com/image.axd?picture=2010%2F5%2F14022010TestManager.jpg" width="576" height="325" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-8639582183757682939?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/8639582183757682939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=8639582183757682939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8639582183757682939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8639582183757682939'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/qfes-and-hotfix-rollup-package-for.html' title='QFEs and Hotfix Rollup Package for Microsoft Test Manager 2010'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-297696679192107400</id><published>2011-12-12T16:14:00.000+01:00</published><updated>2011-12-12T16:14:00.287+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 11'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Team Foundation Services Update</title><content type='html'>&lt;p&gt;Last week Microsoft releases the first Team Foundation Services update that introduces some significant new functionality. Normally all features we’ll see are also going to be part of the new TFS 11.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;So what’s new?&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Redone navigation model to add a bit more style, rework administration mode and more. &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-92-metablogapi/4011.NewNav_5F00_5E0DCDB2.png"&gt;&lt;img title="NewNav" border="0" alt="NewNav" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-92-metablogapi/5001.NewNav_5F00_thumb_5F00_67868C28.png" width="912" height="123" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Enhanced homepages for teams and team projects to make them more interactive and intuitive.&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-92-metablogapi/0880.homepage_2D00_graphics_5F00_7B9FA8B1.png"&gt;&lt;img title="homepage graphics" border="0" alt="homepage graphics" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-92-metablogapi/8306.homepage_2D00_graphics_5F00_thumb_5F00_5AAC360A.png" width="536" height="554" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Simplified Web UI for Small Teams&lt;/li&gt;    &lt;li&gt;Improved performance&lt;/li&gt;    &lt;li&gt;E-mail Notifications and a new UI for managing subscriptions. &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-92-metablogapi/8304.image_5F00_1780B7DD.png"&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-92-metablogapi/4578.image_5F00_thumb_5F00_0F89157B.png" width="442" height="409" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Forecast Lines to project where your iteration boundaries are likely to fall based on your team’s velocity and the estimates on your product backlog items.&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-92-metablogapi/2425.forecast_2D00_lines_5F00_7F2CCBD1.png"&gt;&lt;img title="forecast lines" border="0" alt="forecast lines" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-92-metablogapi/6622.forecast_2D00_lines_5F00_thumb_5F00_7E5465E7.png" width="816" height="450" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;In-Tile Taskboard Editing on the taskboard.     &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-92-metablogapi/2844.on_2D00_tile_2D00_editing_5F00_6E95A2D3.png"&gt;&lt;img title="on-tile editing" border="0" alt="on-tile editing" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-92-metablogapi/3404.on_2D00_tile_2D00_editing_5F00_thumb_5F00_3FCFEA31.png" width="292" height="355" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Read the official announcement and all the details here: &lt;a title="http://blogs.msdn.com/b/visualstudioalm/archive/2011/12/08/team-foundation-service-december-update.aspx" href="http://blogs.msdn.com/b/visualstudioalm/archive/2011/12/08/team-foundation-service-december-update.aspx"&gt;http://blogs.msdn.com/b/visualstudioalm/archive/2011/12/08/team-foundation-service-december-update.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-297696679192107400?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/297696679192107400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=297696679192107400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/297696679192107400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/297696679192107400'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/team-foundation-services-update.html' title='Team Foundation Services Update'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-2334337006045299174</id><published>2011-12-09T15:20:00.000+01:00</published><updated>2011-12-09T15:20:01.396+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Library'/><title type='text'>Microsoft Patterns &amp; Practices Roadmap</title><content type='html'>&lt;p&gt;Interested in what the Microsoft Patterns &amp;amp; Practices has in the pipeline for us? Have a look at their roadmap. I’m especially looking forward to the Windows 8 Guidance and the CQRS guide.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://msdn.microsoft.com/en-us/practices/bb190332.PnP-FY12-Roadmap-2011-11-2(l=en-us).png" /&gt;&lt;/p&gt;  &lt;p&gt;More information here: &lt;a title="http://msdn.microsoft.com/en-us/practices/bb232643" href="http://msdn.microsoft.com/en-us/practices/bb232643"&gt;http://msdn.microsoft.com/en-us/practices/bb232643&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-2334337006045299174?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/2334337006045299174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=2334337006045299174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/2334337006045299174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/2334337006045299174'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/microsoft-patterns-practices-roadmap.html' title='Microsoft Patterns &amp;amp; Practices Roadmap'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-8973099329586923139</id><published>2011-12-08T14:30:00.000+01:00</published><updated>2011-12-08T14:30:01.919+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><title type='text'>Clean up your development PC</title><content type='html'>&lt;p&gt;Maybe you didn’t notice it yet, but Visual Studio leaves tons of temporary files all over your hard drive. This is why, over time, your computer loses hard disk space. Same thing for Windows updates, fixes, etc…&lt;/p&gt;  &lt;p&gt; As I was running out of disk space I was looking for some ways to free some space. I found two very useful links that saved me a lot of disk space:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://weblogs.asp.net/psheriff/archive/2011/11/08/clean-up-after-visual-studio.aspx"&gt;Clean up after Visual Studio&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/GuideToFreeingUpDiskSpaceUnderWindows7.aspx"&gt;Guide to Freeing up Disk Space under Windows 7&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;img src="http://b4tea.com/wp-content/uploads/2010/07/disk-cleanup.jpg" width="300" height="255" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-8973099329586923139?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/8973099329586923139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=8973099329586923139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8973099329586923139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8973099329586923139'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/clean-up-your-development-pc.html' title='Clean up your development PC'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-82143209080018191</id><published>2011-12-06T14:12:00.000+01:00</published><updated>2011-12-06T14:12:00.533+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Unlocalize.com: Translate localized error messages</title><content type='html'>&lt;p&gt;If you are working on a non-English OS, you probably have seen it: these localized error messages. Very useful for the end user but very annoying for us developers who want to google or bing for this specific problem. And while searching for an English error message gives you thousands of hits, you only get a few when you use the localized error message as the search term.&lt;/p&gt;  &lt;p&gt;Last week I got the following tip from a colleague: &lt;a href="http://unlocalize.com/"&gt;Unlocalize.com&lt;/a&gt;, a very useful website which allows you to translate your localized error messages back to English. It’s even available as a browser plugin for your favorite browser. &lt;/p&gt;  &lt;p&gt;A must have for every developer!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unlocalize.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-hsJ5ZxTKJT0/TtogV7N7THI/AAAAAAAAAW8/HbGFGLizs2w/image%25255B4%25255D.png?imgmax=800" width="686" height="342" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-82143209080018191?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/82143209080018191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=82143209080018191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/82143209080018191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/82143209080018191'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/unlocalizecom-translate-localized-error.html' title='Unlocalize.com: Translate localized error messages'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-hsJ5ZxTKJT0/TtogV7N7THI/AAAAAAAAAW8/HbGFGLizs2w/s72-c/image%25255B4%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-5325258461215327300</id><published>2011-12-05T14:05:00.000+01:00</published><updated>2011-12-05T14:05:00.764+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='MSBuild'/><title type='text'>TFS Build: Build by label</title><content type='html'>&lt;p&gt;By Default Team Foundation Build services allows you to build your solutions either based on the latest version available or on a combination of the latest version and a specific shelveset.&lt;/p&gt;  &lt;h5&gt;But what if you want to build a labeled version of your code?&lt;/h5&gt;  &lt;p&gt;You can specify a Label in the &lt;strong&gt;GetVersion&lt;/strong&gt; parameter in the &lt;strong&gt;Queue new Build Wizard, &lt;/strong&gt;going to the &lt;strong&gt;Parameters&lt;/strong&gt; tab (for labels add the “L” prefix):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-2qURD0ya0zI/TtoenCa3WWI/AAAAAAAAAWs/xCflDPticmg/s1600-h/image%25255B10%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-QX9qKUDK5iE/TtoeoBd5fzI/AAAAAAAAAW0/E5ewzJVhF7k/image_thumb%25255B4%25255D.png?imgmax=800" width="542" height="684" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-5325258461215327300?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/5325258461215327300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=5325258461215327300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5325258461215327300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5325258461215327300'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/tfs-build-build-by-label.html' title='TFS Build: Build by label'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-QX9qKUDK5iE/TtoeoBd5fzI/AAAAAAAAAW0/E5ewzJVhF7k/s72-c/image_thumb%25255B4%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-297461130233082089</id><published>2011-12-02T11:43:00.000+01:00</published><updated>2011-12-02T11:43:00.783+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='NuGet'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='MSBuild'/><title type='text'>Integrate NuGet in your build process: TFS NuGetter</title><content type='html'>&lt;p&gt;Although it’s not that hard to integrate NuGet in your build process, it can always be easier.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://nugetter.codeplex.com/"&gt;NuGettter&lt;/a&gt; is an extension to the Team Foundation Server 2010 build process that will perform all of the necessary versioning, packaging and deployment functions in a customizable and completely repeatable way.&lt;/p&gt;  &lt;h4&gt;Capabilities/Features: &lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Includes all phases of the build process: compile, version, pre-package, package, push/deploy and publish - managed within TFS 2010 automated build &lt;/li&gt;    &lt;li&gt;NuGet Package and deploy features for a simple to an extremely complex library package &lt;/li&gt;    &lt;li&gt;Single or multiple solution builds &lt;/li&gt;    &lt;li&gt;Single or multiple configuration builds &lt;/li&gt;    &lt;li&gt;Manage versioning of the assemblies coordinated or separately from the NuGet package &lt;/li&gt;    &lt;li&gt;Create a package, create and push a package or create a package and push and publish to a NuGet gallery &lt;/li&gt;    &lt;li&gt;Build and have immediate access to the package in a test environment through inherent &amp;quot;Push/Deploy&amp;quot; feature &lt;/li&gt;    &lt;li&gt;Push locations include the NuGet Gallery, a local directory, network share or web site &lt;/li&gt;    &lt;li&gt;Use in any combination of manual, continuous integration or scheduled builds &lt;/li&gt;    &lt;li&gt;Ability to execute PowerShell scripts prior to packaging to organize the files (e.g., lib, tools, content) for the NuGet packaging process (pre-packaging) &lt;/li&gt;    &lt;li&gt;No requirement for NuGet.exe to be installed on the build machine – NuGet.exe can be held in source control and deployed only at the time of the build &lt;/li&gt;    &lt;li&gt;All of the above is managed through the standard TFS Build Workflow process &lt;/li&gt;    &lt;li&gt;Remotely store/manage package information such as version numbers, API keys, and NuSpec manifest files &lt;/li&gt;    &lt;li&gt;All of this is managed via a Team Foundation Server automated build process &lt;/li&gt;    &lt;li&gt;Includes updated build process template &amp;quot;NuGetterVersioningBuildTemplate15.xaml&amp;quot; to work with the TfsVersioning v1.5 extended versioning capabilities. &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;&lt;/h5&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NuGetter Build Process:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;img alt="NuGetter Build Process" src="http://download.codeplex.com/download?ProjectName=nugetter&amp;amp;DownloadId=251988" width="467" height="552" /&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h5&gt;Build Definition Sample:&lt;/h5&gt;  &lt;p&gt;&lt;img alt="NuGetter Build Definition Example" src="http://download.codeplex.com/download?ProjectName=nugetter&amp;amp;DownloadId=251916" width="635" height="747" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-297461130233082089?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/297461130233082089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=297461130233082089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/297461130233082089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/297461130233082089'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/integrate-nuget-in-your-build-process.html' title='Integrate NuGet in your build process: TFS NuGetter'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-2517907133532877680</id><published>2011-12-01T11:38:00.000+01:00</published><updated>2011-12-01T11:38:00.712+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>JavaScript Unit Testing in Visual Studio: Chutzpah 1.3 released</title><content type='html'>&lt;p&gt;A new version of Chutzpah is now live on &lt;a href="http://visualstudiogallery.msdn.microsoft.com/71a4e9bd-f660-448f-bd92-f5a65d39b7f0"&gt;Visual Studio Gallery&lt;/a&gt;, &lt;a href="http://chutzpah.codeplex.com/"&gt;CodePlex&lt;/a&gt; and now &lt;a href="http://nuget.org/List/Packages/Chutzpah"&gt;NuGet&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://visualstudiogallery.msdn.microsoft.com/site/view/file/52595/1/RightMenu.png" width="375" height="120" /&gt;&lt;/p&gt;  &lt;p&gt;This release contains the following changes:&lt;/p&gt;  &lt;h5&gt;Features&lt;/h5&gt;  &lt;p&gt;1. Chutzpah is now able to run &lt;a href="http://pivotal.github.com/jasmine/"&gt;Jasmine&lt;/a&gt; tests in addition to &lt;a href="http://docs.jquery.com/QUnit"&gt;QUnit&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;2. Added a new configuration option to set the timeout on a test file. &lt;/p&gt;  &lt;p&gt;Official announcement here: &lt;a title="http://matthewmanela.com/blog/chutzpah-1-3-0-released/" href="http://matthewmanela.com/blog/chutzpah-1-3-0-released/"&gt;http://matthewmanela.com/blog/chutzpah-1-3-0-released/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-2517907133532877680?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/2517907133532877680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=2517907133532877680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/2517907133532877680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/2517907133532877680'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/12/javascript-unit-testing-in-visual.html' title='JavaScript Unit Testing in Visual Studio: Chutzpah 1.3 released'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7894829213626112888</id><published>2011-11-30T11:34:00.000+01:00</published><updated>2011-11-30T11:34:00.340+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Library'/><title type='text'>Unity IsRegistered throws exceptions when registering Open Generic types.</title><content type='html'>&lt;p&gt;For a long time, I had a very annoying error message when I called the IsRegistered method on the Unity container. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Error Message:       &lt;br /&gt;System.ArgumentException: GenericArguments[0], 'T', on 'Infrastructure.Data.NHibernateRepository`1[T]' violates the constraint of t        &lt;br /&gt;ype 'T'. ---&amp;gt; System.TypeLoadException: GenericArguments[0], 'T', on 'Infrastructure.Data.NHibernateRepository`1[T]' violates the c        &lt;br /&gt;onstraint of type parameter 'T'.&lt;/em&gt;      &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Last week I finally found the root cause of this issue. Let’s have a look at my code first:&lt;/p&gt;  &lt;p&gt;   &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:9a7a5a45-c24e-4a66-826c-d18132118292" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;public interface IRepository&amp;lt;T&amp;gt; where T:Entity&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class NHibernateRepository&amp;lt;T&amp;gt; : IRepository&amp;lt;T&amp;gt; where T : Entity, new()&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;So what’s causing the issue? Have a look at the generic constraints. You see that my interface is less restrictive than my implementation and &lt;u&gt;&lt;strong&gt;that is what makes Unity chokes...&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;One workaround(which is still far from ideal) is that you can apply the same type constraints to the interface. Another (better) workaround is posted by &lt;a href="http://unity.codeplex.com/workitem/11175"&gt;Walter Almeida&lt;/a&gt;. Either way I hope it will be solved in the next release of Unity…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7894829213626112888?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7894829213626112888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7894829213626112888' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7894829213626112888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7894829213626112888'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/unity-isregistered-throws-exceptions.html' title='Unity IsRegistered throws exceptions when registering Open Generic types.'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1131246317505358282</id><published>2011-11-29T11:14:00.000+01:00</published><updated>2011-11-29T11:14:00.094+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><title type='text'>Creating test data using ElasticObject</title><content type='html'>&lt;p&gt;For a recent project I had to write a lot of data-oriented tests. This required me to populate the domain model with lot’s of test data. Having to write a lot of new statements and property setters, I was looking for a cleaner alternative when I stumbled over this library: &lt;a href="http://elasticobject.codeplex.com/"&gt;ElasticObject - An expandable dynamic object for .NET 4.0&lt;/a&gt;.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;A dynamic ElasticObject implementation using .NET 4.0 dynamic features, for fluent access of data types like XML - Access XML &amp;lt;entry name=&amp;quot;user&amp;quot;/&amp;gt; via fluent dynamic wrappers, like var n=entry.name; - You can also use it like ExpandoObject, with multi level property support       &lt;br /&gt;To start with, here are few scenarios you can use ElasticObject&lt;/em&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;em&gt;An easier, fluid way to work with data formats – like XML and JSON. Presently, we’ve some support for XML. &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;Cleaner code though it is duck typed &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;A hierarchical way to maintain loosely typed data.&lt;/em&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;I used it to create a whole object hierarchy in a very simple way, like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/__Mw4iY-4nuY/S369mcf_ABI/AAAAAAAAAm8/OO99pQiV4N8/s1600-h/image%5B97%5D.png"&gt;&lt;img title="image" border="0" alt="image" src="http://lh5.ggpht.com/__Mw4iY-4nuY/S369nqzA5GI/AAAAAAAAAnA/LDy9IXkN-ko/image_thumb%5B57%5D.png?imgmax=800" width="663" height="176" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Read More: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;About ElasticObject - Sample Usecases &lt;a href="http://amazedsaint.blogspot.com/2010/02/introducing-elasticobject-for-net-40.html"&gt;http://amazedsaint.blogspot.com/2010/02/introducing-elasticobject-for-net-40.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;A 10 Minute ASP.NET MVC Twitter searchup using Ducktyped Viewmodels using ElasticObject &lt;a href="http://amazedsaint.blogspot.com/2010/02/10-minute-twitter-search-app-using-duck.html"&gt;http://amazedsaint.blogspot.com/2010/02/10-minute-twitter-search-app-using-duck.html&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1131246317505358282?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1131246317505358282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1131246317505358282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1131246317505358282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1131246317505358282'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/creating-test-data-using-elasticobject.html' title='Creating test data using ElasticObject'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/__Mw4iY-4nuY/S369nqzA5GI/AAAAAAAAAnA/LDy9IXkN-ko/s72-c/image_thumb%5B57%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-4871265405413998376</id><published>2011-11-28T11:06:00.000+01:00</published><updated>2011-11-28T11:06:00.132+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Visual Studio cannot start debugging because the debug target is missing</title><content type='html'>&lt;p&gt;Sometimes you lose a lot of time finding the most idiot problems. Last week I had to do a code review so I downloaded the solution from Team Foundation Service and opened it. First I wanted to try to run the application but it failed with the following error message:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;     &lt;br /&gt;&lt;em&gt;“Visual Studio cannot start debugging because the debug target 'D:\dev\ApplicationToReview\bin\Debug\ApplicationToReview.exe' is missing. Please build the project and retry, or set the OutputPath and AssemblyName properties appropriately to point at the correct location for the target assembly.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Ok. So I rebuild the project a few times, had a look at the output folders only to see that the required assembly was definitely there. In the end I noticed that although the current project was set as the start up project but it was not configured to run in the Configuration Manager. &lt;/p&gt;  &lt;p&gt;After checking the project under configuration manager everything worked fine. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-4871265405413998376?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/4871265405413998376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=4871265405413998376' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4871265405413998376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4871265405413998376'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/visual-studio-cannot-start-debugging.html' title='Visual Studio cannot start debugging because the debug target is missing'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-5286236115977417326</id><published>2011-11-25T19:49:00.000+01:00</published><updated>2011-11-25T19:49:00.354+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='UI'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML 5'/><title type='text'>Adobe Flex/Flash versus Microsoft Silverlight. And the winner is… HTML 5!</title><content type='html'>&lt;p&gt;The last weeks there were some rumors that &lt;a href="http://www.zdnet.com/blog/microsoft/will-there-be-a-silverlight-6-and-does-it-matter/11180"&gt;Silverlight 5 might just be the last version of the technology&lt;/a&gt;. Combine this with the fact that &lt;a href="http://blogs.adobe.com/conversations/2011/11/flash-focus.html"&gt;Adobe is&amp;#160; killing any further development of it's flash mobile plugin&lt;/a&gt; and you can only conclude that both Microsoft and Adobe think that the future of web development does not lie in a proprietary plugin technology, &lt;a href="http://www.zdnet.com/blog/btl/native-apps-could-be-temporary-option-until-html5-improves-panel-says/62588"&gt;but in HTML5&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.wired.com/images_blogs/epicenter/2011/08/HTML5_sticker1.png" width="722" height="361" /&gt;&lt;/p&gt;  &lt;p&gt;Flash has long been the standard bearer of richer experiences inside browsers. I’ve always had the feeling that Microsoft only created Silverlight to get a piece of this cake. (Maybe someone still remembers that Silverlight version 1 was based on JavaScript?!). Although I have to admit that Silverlight showed some real potential and allowed to create stunning user experiences , far better than I had ever even seen imagined with Flash. And now that Adobe is refocusing it’s effort to HTML 5, Microsoft no longer cares and I’m guessing that Silverlight 6 will never see the light. &lt;/p&gt;  &lt;h5&gt;But what about the Windows Phone than you could ask? &lt;/h5&gt;  &lt;p&gt;It’s all based on Silverlight so it will not disappear right? Even there I think we’ll see Silverlight replaced by a new WinRT alternative(just by guessing that Windows Phone 8 will have the same version number as Windows 8 &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh3.ggpht.com/-mZGI3nOAWM4/Tsf6ZsJViVI/AAAAAAAAAWk/JRjjVMvVp6c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;).&lt;/p&gt;  &lt;h5&gt;Should you care as a WPF/Silverlight developer? &lt;/h5&gt;  &lt;p&gt;No. One XAML framework will be replaced by another. And as long as the tooling for HTML 5 doesn’t keep up, we’ll remain far more productive in XAML development (without even talking about the technical expertise required to build an enterprise level business application, and no that’s not the same as a web application enhanced with some JavaScript here and there…). However in a future were HTML5 will become more and more important, it’s not wise to place all your eggs in one basket.&lt;/p&gt;  &lt;h5&gt;Should you care as a Mobile developer?&lt;/h5&gt;  &lt;p&gt;Although a native experience remains the ideal, I don’t see a world where every application will be written for each and every mobile platform. So I think the future of mobile is HTML5 and mobile web applications. For now, there are a few restrictions, but if you know about the device APIs you should realize those few limitations are going away in the near future. &lt;/p&gt;  &lt;p&gt;So the safest guess today as a developer is to spend time learning HTML5 and JavaScript and you are ready to build rich user experiences for Web, Windows AND Mobile. &lt;/p&gt;  &lt;p&gt;I know how I’ll spend my time the upcoming months…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-5286236115977417326?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/5286236115977417326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=5286236115977417326' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5286236115977417326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5286236115977417326'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/adobe-flexflash-versus-microsoft.html' title='Adobe Flex/Flash versus Microsoft Silverlight. And the winner is… HTML 5!'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-mZGI3nOAWM4/Tsf6ZsJViVI/AAAAAAAAAWk/JRjjVMvVp6c/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-4248030866839675546</id><published>2011-11-24T18:14:00.000+01:00</published><updated>2011-11-24T18:14:00.596+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><title type='text'>Mobile website vs Mobile application</title><content type='html'>&lt;p&gt;With Mobile being the new hype everyone wants to build web application. But should I build a native Mobile application or is it better to build a mobile version of my web application?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://headscape.co.uk"&gt;HeadScape&lt;/a&gt; released this nice info graphic helping you in answering this question:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://boagworld.com/wp-content/uploads/2011/11/Web_Native_1.8-1024x720.jpg" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-4248030866839675546?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/4248030866839675546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=4248030866839675546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4248030866839675546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4248030866839675546'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/mobile-website-vs-mobile-application.html' title='Mobile website vs Mobile application'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7840815557564372814</id><published>2011-11-23T18:06:00.000+01:00</published><updated>2011-11-23T18:06:00.665+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><title type='text'>Web.config Transformation Tester</title><content type='html'>&lt;p&gt;When you deploy a Web site, you often want some settings in the deployed application's Web.config file to be different from the development Web.config file. For example, you might want to disable debug options and change connection strings so that they point to different databases. Starting from Visual Studio 2010, ASP.NET provides tools that automate the process of changing (transforming) Web.config files when they are deployed. For each environment that you want to deploy to, you create a transform file that specifies only the differences between the original Web.config file and the deployed Web.config file for that environment.&lt;/p&gt;  &lt;p&gt;A transform file is an XML file that specifies how the Web.config file should be changed when it is deployed. Transformation actions are specified by using XML attributes that are defined in the XML-Document-Transform namespace, which is mapped to the xdt prefix. The XML-Document-Transform namespace defines two attributes: Locator and Transform. The Locator attribute specifies the Web.config element or set of elements that you want to change in some way. The Transform attribute specifies what you want to do to the elements that the Locator attribute finds. &lt;/p&gt;  &lt;p&gt;More information about creating a transformation file &lt;a href="http://msdn.microsoft.com/en-us/library/dd465318.aspx"&gt;here&lt;/a&gt; and about the syntax &lt;a href="http://msdn.microsoft.com/en-us/library/dd465326.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Last week I discovered the &lt;a href="http://webconfigtransformationtester.apphb.com/"&gt;Web.config Transformation Tester&lt;/a&gt;, a simple web tool that allows you to test your transformations in a very easy way. It allows you to paste your web.config into the top text box and your transform into the second one. Click the 'Transform' button to see the result of the transformation. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://webconfigtransformationtester.apphb.com/"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-fYptBLQg948/TsfinyJdL1I/AAAAAAAAAWc/C4oyyN0lH0Q/image%25255B5%25255D.png?imgmax=800" width="347" height="375" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7840815557564372814?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7840815557564372814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7840815557564372814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7840815557564372814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7840815557564372814'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/webconfig-transformation-tester.html' title='Web.config Transformation Tester'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-fYptBLQg948/TsfinyJdL1I/AAAAAAAAAWc/C4oyyN0lH0Q/s72-c/image%25255B5%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-6298984849262881058</id><published>2011-11-22T17:55:00.000+01:00</published><updated>2011-11-22T17:55:00.311+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Windows Azure Updates: SDK 1.6 and Training Kit November 2011 update released</title><content type='html'>&lt;p&gt;And there is Microsoft again with 3 new updates for Windows Azure—a new version of the Windows Azure SDK, a new Windows Azure HPC Scheduler SDK, and an updated Windows Azure Platform Training Kit.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Highlights:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Windows Azure SDK (November 2011&lt;/b&gt;)—Multiple updates to the Windows Azure Tools for Visual Studio 2010 that simplify development, deployment, and management on Windows Azure. The full Windows Azure SDK can be downloaded via the Web Platform installer &lt;a href="http://www.microsoft.com/web/gallery/install.aspx?appid=WindowsAzureToolsVS2010"&gt;here&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Windows Azure HPC Scheduler SDK&lt;/b&gt;— Works in conjunction with the Windows Azure SDK and includes modules and features to author high performance computing (HPC) applications that use large amounts of compute resources in parallel to complete work.&amp;#160; The SDK is available &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh545593.aspx"&gt;here&lt;/a&gt; for download. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Windows Azure Platform Training Kit&lt;/b&gt;—Includes hands-on labs, demos, and presentations to help you learn how to build applications that use Windows Azure. Compatible with the new Windows Azure SDK and Windows Azure Tools for Visual Studio 2010. The training kit can be downloaded &lt;a href="http://go.microsoft.com/fwlink/?LinkID=130354"&gt;here.&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Here are the details:&lt;/p&gt;  &lt;p&gt;The &lt;b&gt;Windows Azure SDK for .NET&lt;/b&gt; includes the following new features:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Windows Azure Tools for Visual Studio 2010&lt;/b&gt;      &lt;ul&gt;       &lt;li&gt;&lt;b&gt;Streamlined publishing:&lt;/b&gt; This makes connecting your environment to Windows Azure much easier by providing a publish settings file for your account.&amp;#160; This allows you to configure all aspects of deployments, such as Remote Desktop (RDP), without ever leaving Visual Studio.&amp;#160; Simply use the Visual Studio publishing wizard to download the publish settings and import them into Visual Studio.&amp;#160; By default, publish will make use of in-place deployment upgrades for significantly faster application updates. &lt;/li&gt;        &lt;li&gt;&lt;b&gt;Multiple profiles:&lt;/b&gt; Your publish settings, build config, and cloud config choices will be stored in one or more publish profile MSBuild files. This makes it easy for you and your team to quickly change all of your environment settings.&amp;#160; &lt;/li&gt;        &lt;li&gt;&lt;b&gt;Team Build:&lt;/b&gt; The Windows Azure Tools for Visual Studio 2010 now offer MSBuild command-line support to package your application and pass in properties.&amp;#160; Additionally, they can be installed on a lighter-weight build machine without the requirement of Visual Studio being installed. &lt;/li&gt;        &lt;li&gt;&lt;b&gt;In-Place Updates: &lt;/b&gt;Visual Studio now allows you to make improved in-place updates to deployed services in Windows Azure. For more details visit &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/10/19/announcing-improved-in-place-updates.aspx"&gt;http://blogs.msdn.com/b/windowsazure/archive/2011/10/19/announcing-improved-in-place-updates.aspx&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;b&gt;Enhanced Publishing Wizard:&lt;/b&gt; Overhaul of publishing experience to sign-in, configure the deployment, and review the summary of changes &lt;/li&gt;        &lt;li&gt;&lt;b&gt;Automatic Credential Management Configuration:&lt;/b&gt; No longer need to manually create or manage a cert &lt;/li&gt;        &lt;li&gt;&lt;b&gt;Multiple Subscription Deployment Management:&lt;/b&gt; Makes it easier to use multiple Windows Azure subscriptions by selecting the subscription you want to use when publishing within Visual Studio. &lt;/li&gt;        &lt;li&gt;&lt;b&gt;Hosted Service Creation: &lt;/b&gt;Create new hosted services within Visual Studio, without having to visit the Windows Azure Portal. &lt;/li&gt;        &lt;li&gt;&lt;b&gt;Storage Accounts: &lt;/b&gt;Create and configure appropriate storage accounts within Visual Studio (no longer need to do this manually) &lt;/li&gt;        &lt;li&gt;&lt;b&gt;Remote Desktop Workflow&lt;/b&gt;: Enable by clicking a checkbox and providing a username/password – no need to create or upload a cert &lt;/li&gt;        &lt;li&gt;&lt;b&gt;Deployment Configurations: &lt;/b&gt;Manage multiple deployment environment configurations &lt;/li&gt;        &lt;li&gt;&lt;b&gt;Azure Activity Log: &lt;/b&gt;More information about the publish and virtual machine initialization status&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For more information on Windows Azure Tools for Visual Studio 2010, see &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/ff683673.aspx"&gt;What’s New in the Windows Azure Tools&lt;/a&gt;.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Windows Azure Libraries for .NET 1.6&lt;/b&gt;      &lt;ul&gt;       &lt;li&gt;&lt;b&gt;Service Bus &amp;amp; Caching: &lt;/b&gt;Service Bus and caching client libraries from the previous Windows Azure AppFabric SDK have now been updated and incorporated into the Windows Azure Libraries for .NET to simplify the development experience.&lt;b&gt;&lt;/b&gt;&lt;/li&gt;        &lt;li&gt;&lt;b&gt;Queues:&lt;/b&gt;          &lt;ul&gt;           &lt;li&gt;Support for UpdateMessage method (for updating queue message contents and invisibility timeout) &lt;/li&gt;            &lt;li&gt;New overload for AddMessage that provides the ability to make a message invisible until a future time &lt;/li&gt;            &lt;li&gt;The size limit of a message is raised from 8KB to 64KB &lt;/li&gt;            &lt;li&gt;Get/Set Service Settings for setting the analytics service settings&lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Windows Azure Emulator&lt;/b&gt;      &lt;ul&gt;       &lt;li&gt;Performance improvements to compute &amp;amp; storage emulators.&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Click &lt;a href="http://www.microsoft.com/web/gallery/install.aspx?appid=WindowsAzureToolsVS2010"&gt;here&lt;/a&gt; to download the Windows Azure SDK via the Web Platform Installer.&lt;/p&gt;  &lt;p&gt;The &lt;strong&gt;Windows Azure Training Kit November 2011&lt;/strong&gt; includes the following updates:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;[New demo] Publishing Cloud Applications with Visual Studio&lt;/li&gt;    &lt;li&gt;[Updated] Labs and Demos to leverage the new Window Azure SDK &amp;amp; Tools 1.6&lt;/li&gt;    &lt;li&gt;[Updated] SQL Azure Presentations&lt;/li&gt;    &lt;li&gt;Applied several minor fixes in content&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Click &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=41&amp;amp;srcfamilyid=413e88f8-5966-4a83-b309-53b7b77edf78&amp;amp;srcdisplaylang=en&amp;amp;u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fA%2f7%2fC%2fA7CF725D-A215-4294-B0DC-2C01BDB01397%2fWAPTK%20-%20Web%20Installer%20%28Preview%202%29.exe"&gt;here&lt;/a&gt; to download the Training Kit via the Web Platform Installer. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-6298984849262881058?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/6298984849262881058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=6298984849262881058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6298984849262881058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6298984849262881058'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/windows-azure-updates-sdk-16-and.html' title='Windows Azure Updates: SDK 1.6 and Training Kit November 2011 update released'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-8403721443783212855</id><published>2011-11-21T17:44:00.000+01:00</published><updated>2011-11-21T17:44:00.350+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>.NET Framework 4.5–New features overview</title><content type='html'>&lt;p&gt;You want to get an idea of all the new features in .NET Framework 4.5? Have a look at this nice poster created by &lt;a href="http://www.heikniemi.net/hardcoded/2011/10/whats-new-in-net-framework-4-5-poster/"&gt;Jouni Heikniemi&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.heikniemi.net/hardcoded/wp-content/uploads/2011/10/WhatsNewNET45-en.png"&gt;&lt;img title="What&amp;#39;s new in .NET Framework 4.5?" border="0" alt="" src="http://www.heikniemi.net/hardcoded/wp-content/uploads/2011/10/WhatsNewNET45-en1.png" width="675" height="479" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-8403721443783212855?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/8403721443783212855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=8403721443783212855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8403721443783212855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8403721443783212855'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/net-framework-45new-features-overview.html' title='.NET Framework 4.5–New features overview'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7791272472341467140</id><published>2011-11-18T11:58:00.000+01:00</published><updated>2011-11-18T11:58:00.474+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><title type='text'>Showing the ‘Runas’ option in the context menu</title><content type='html'>&lt;p&gt;Just a simple reminder for something that I always seem to forget:&lt;/p&gt;  &lt;p&gt;In Windows you can run the ‘Runas’ command/ This allows you to run a program as if it was running from a different user account on your computer while you are still logged on to your user account.&lt;/p&gt;  &lt;blockquote&gt;   &lt;ul&gt;     &lt;li&gt;Press and hold the &lt;b&gt;Shift&lt;/b&gt; key and right click on the program's shortcut or EXE file, then click on &lt;b&gt;Run as different user&lt;/b&gt;. (See screenshot below) &lt;/li&gt;   &lt;/ul&gt;    &lt;blockquote&gt;     &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-Le6gJbOiqLw/Tr5RZZi8jQI/AAAAAAAAAWM/n_61Q8-6eQg/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-CQVESmBiYrQ/Tr5RaNlpVAI/AAAAAAAAAWU/Z2WTV8QlRLk/image_thumb%25255B1%25255D.png?imgmax=800" width="328" height="422" /&gt;&lt;/a&gt;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;ul&gt;     &lt;li&gt;Type in the &lt;b&gt;user name&lt;/b&gt; and &lt;b&gt;password&lt;/b&gt; of the user account that you want to run this program as. (see screenshot below)        &lt;br /&gt;&lt;b&gt;NOTE:&lt;/b&gt; &lt;i&gt;If the user account is on a domain, then you would use &lt;/i&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt;UserName@Domain&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;i&gt; or &lt;b&gt;Domain\UserName&lt;/b&gt; for the user name instead&lt;/i&gt;. &lt;/li&gt;   &lt;/ul&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7791272472341467140?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7791272472341467140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7791272472341467140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7791272472341467140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7791272472341467140'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/showing-runas-option-in-context-menu.html' title='Showing the ‘Runas’ option in the context menu'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-CQVESmBiYrQ/Tr5RaNlpVAI/AAAAAAAAAWU/Z2WTV8QlRLk/s72-c/image_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-8315507821916302581</id><published>2011-11-17T11:51:00.000+01:00</published><updated>2011-11-17T11:51:00.048+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><title type='text'>TFS 2010: TF203028 and TF203071 branching errors</title><content type='html'>&lt;p&gt;&lt;b&gt;TF203028: You cannot create a branch at {path} because a branch already exists at {sub path}.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;You see this message when a branch root exists at a sub path of the folder you are trying to mark as a branch root. &lt;/p&gt;  &lt;p&gt;In the case a sub-folder was incorrectly marked as a branch root, you can recover easily from this by converting the branch root back to a folder , from the File-&amp;gt;Source Control-&amp;gt;Branching &amp;amp; Merging-&amp;gt;Convert to Folder menu.&lt;/p&gt;  &lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-56-90/2577.1.png" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;TF203071: The operation cannot be completed because the source folder that you specified contains a branch. If you want to perform this operation on the branch, then you must specify {path} as the source of the operation.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This occurs when you try to create a branch from a folder and there is a “branch roots” below this. &lt;/p&gt;  &lt;p&gt;The reason for this restriction is consider the scenario, I have the following tree structure:&lt;/p&gt;  &lt;p&gt;$/proj/MyProduct/Branches – regular folder&lt;/p&gt;  &lt;p&gt;$/proj/MyProduct/Branches/v1.1 – regular folder&lt;/p&gt;  &lt;p&gt;$/proj/MyProduct/Branches/v1.1/Dev - branch root&lt;/p&gt;  &lt;p&gt;$/proj/MyProduct/Branches/v1.1/Test - branch root, related to Dev&lt;/p&gt;  &lt;p&gt;$/proj/MyProduct/Branches/v1.1/Release - branch root, related to Test.&lt;/p&gt;  &lt;p&gt;Users were branching v1.1 to v1.2, hoping that the relationship between Dev-&amp;gt;Test-&amp;gt;Release is maintained. However the relationship being established ends up being: &lt;/p&gt;  &lt;p&gt;$/proj/MyProduct/Branches/v1.1/Dev -&amp;gt; $/proj/MyProduct/Branches/v1.2/Dev&lt;/p&gt;  &lt;p&gt;$/proj/MyProduct/Branches/v1.1/Test –&amp;gt; $/proj/MyProduct/Branches/v1.2/Test &lt;/p&gt;  &lt;p&gt;$/proj/MyProduct/Branches/v1.1/Release –&amp;gt;$/proj/MyProduct/Branches/v1.2/Release&lt;/p&gt;  &lt;p&gt;To prevent users from making this assumption, we have the restriction. If you hit this message, you have a choice:&lt;/p&gt;  &lt;p&gt;a. You are in the scenario described above, in that case you can setup your branches by branching $/proj/MyProduct/Branches/v1.1/Dev -&amp;gt; $/proj/MyProduct/Branches/v1.2/Dev and then branching -&amp;gt; $/proj/MyProduct/Branches/v1.2/Dev -&amp;gt; $/proj/MyProduct/Branches/v1.2/Test -&amp;gt;$/proj/MyProduct/Branches/v1.2/Release&lt;/p&gt;  &lt;p&gt;b. If you still want to proceed with the operation (this is likely because $/proj/MyProduct/Branches/v1.1/Dev was incorrectly marked as a branch root). You can do so by converting the “branch root” back to a folder, from the File-&amp;gt;Source Control-&amp;gt;Branching &amp;amp; Merging-&amp;gt;Convert to Folder menu.&lt;/p&gt;  &lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-56-90/8168.1.png" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-8315507821916302581?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/8315507821916302581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=8315507821916302581' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8315507821916302581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8315507821916302581'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/tfs-2010-tf203028-and-tf203071.html' title='TFS 2010: TF203028 and TF203071 branching errors'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1361454456450322186</id><published>2011-11-16T11:44:00.000+01:00</published><updated>2011-11-16T11:44:00.153+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><title type='text'>TFS 2010: Cube processing failed</title><content type='html'>&lt;p&gt;At a customer, we had some problems with the TFS Datawarehouse cube no longer being processed. When looking at the logs, I noticed the following error message:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;LastRun QueueTimeUtc=&amp;quot;&lt;b&gt;2011-11-10T13:15:59.497Z&lt;/b&gt;&amp;quot; ExecutionStartTimeUtc=&amp;quot;&lt;b&gt;2011-11-10T13:16:00.517Z&lt;/b&gt;&amp;quot; EndTimeUtc=&amp;quot;&lt;b&gt;2011-11-10T13:18:00.637Z&lt;/b&gt;&amp;quot; Result=&amp;quot;&lt;b&gt;Blocked&lt;/b&gt;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;lt;ResultMessage&amp;gt;&lt;b&gt;[Version Control Warehouse Sync]: ---&amp;gt; MakeDataChanges() result=DataChangesPending. ---&amp;gt; TF221033: Job failed to acquire a lock using lock mode Shared, resource DataSync: [TFSDB].[Tfs_Warehouse] and timeout 30.&lt;/b&gt;&amp;lt;/ResultMessage&amp;gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;lt;/LastRun&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Some useful links to solve this problem:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/granth/archive/2010/07/12/monitoring-the-tfs-data-warehouse-faq.aspx"&gt;Monitoring the TFS Data Warehouse – FAQ&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/granth/archive/2010/02/07/tfs2010-warehouse-and-job-status-reports.aspx"&gt;TFS2010: Warehouse and Job Service Administrator Reports&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;&lt;/h5&gt;  &lt;h5&gt;Our solution:&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Go to the warehouse control service, which in our case is at: &lt;a href="http://tfs:8080/tfs/TeamFoundation/Administration/v3.0/warehousecontrolservice.asmx"&gt;http://tfs:8080/tfs/TeamFoundation/Administration/v3.0/warehousecontrolservice.asmx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;From there click on the &lt;strong&gt;SetWarehouseJobEnabledState&lt;/strong&gt; operation. In here you'll see that you can specify the collection, the job, and what state to put it in.&lt;/li&gt;    &lt;li&gt;If you want to know the list of jobs, you can run the &lt;strong&gt;GetProcessingStatus&lt;/strong&gt; operation from the warehouse control service.&lt;/li&gt;    &lt;li&gt;Set all jobs to &lt;strong&gt;FullyDisabled&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;Then set one to Enabled and process the warehouse using the &lt;strong&gt;ProcessWarehouse&lt;/strong&gt; link on the warehouse control service page.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1361454456450322186?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1361454456450322186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1361454456450322186' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1361454456450322186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1361454456450322186'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/tfs-2010-cube-processing-failed.html' title='TFS 2010: Cube processing failed'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7027215570415127300</id><published>2011-11-15T11:32:00.000+01:00</published><updated>2011-11-15T11:32:00.488+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><title type='text'>TFS 2010: Administrative reports</title><content type='html'>&lt;p&gt;After blogging about &lt;a href="http://bartwullems.blogspot.com/2010/06/tfs-2010-status-reports.html"&gt;2 administrative reports&lt;/a&gt; some time ago, I have a new list with useful reports for the TFS administrator.&lt;/p&gt;  &lt;p&gt;Microsoft released some reports that visualize the information that TFS stores about the health of the data warehouse.    &lt;h5&gt;&lt;/h5&gt; These reports are useful to TFS administrators, operations/support teams, project administrators &amp;amp; end-users. The reports in this pack display the following kinds of information: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Recent processing times &lt;/li&gt;    &lt;li&gt;Current status (whether the cube is processing now and, if not, when it is scheduled to process next) &lt;/li&gt;    &lt;li&gt;Schema conflicts &lt;/li&gt;    &lt;li&gt;Most recent time that each adapter successfully ran &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Interpreting the reports&lt;/h5&gt;  &lt;p&gt;In the download, there is a FAQ document which includes screenshots of what different reports mean and common questions. The contents of the FAQ are also available at &lt;a href="http://blogs.msdn.com/b/granth/archive/2010/07/12/monitoring-the-tfs-data-warehouse-faq.aspx"&gt;Monitoring the TFS Data Warehouse – FAQ&lt;/a&gt;.&lt;/p&gt;  &lt;h5&gt;Requirements&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;SQL Server Reporting Services 2008 or 2008 R2 &lt;/li&gt;    &lt;li&gt;A shared datasource to which you connect the report, as the installation instructions describe how to configure. &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Download: &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17/1348.AdminReportPack.zip"&gt;AdminReportPack.zip&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h5&gt;  &lt;p&gt;Download and install this report pack to the Team Foundation Server Reporting Services Instance to monitor warehouse and cube processing status.&lt;/p&gt;  &lt;p&gt;For information about how to install this report pack, see Installing Admin Report Pack for TFS.docx that is included in the download.&lt;/p&gt;  &lt;p&gt;The pack includes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Admin Report Pack for TFS FAQ.docx &lt;/li&gt;    &lt;li&gt;Installing Admin Report Pack for TFS.docx &lt;/li&gt;    &lt;li&gt;Reports\Cube Status.rdl &lt;/li&gt;    &lt;li&gt;Reports\Blocked Fields.rdl &lt;/li&gt;    &lt;li&gt;Reports\Reportable Fields.rdl &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Here’s an overview of how the reports look and what questions you can answer with them.&lt;/p&gt;  &lt;p&gt;More information and the original post: &lt;a title="http://blogs.msdn.com/b/granth/archive/2010/07/12/administrative-report-pack-for-team-foundation-server-2010.aspx" href="http://blogs.msdn.com/b/granth/archive/2010/07/12/administrative-report-pack-for-team-foundation-server-2010.aspx"&gt;http://blogs.msdn.com/b/granth/archive/2010/07/12/administrative-report-pack-for-team-foundation-server-2010.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7027215570415127300?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7027215570415127300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7027215570415127300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7027215570415127300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7027215570415127300'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/tfs-2010-administrative-reports.html' title='TFS 2010: Administrative reports'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-8308177777974189104</id><published>2011-11-14T11:21:00.000+01:00</published><updated>2011-11-14T11:21:00.290+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Library'/><title type='text'>Attempt by security transparent method to access security critical method</title><content type='html'>&lt;p&gt;Last week I was spending some time integrating the &lt;a href="http://msdn.microsoft.com/en-us/library/ff648951.aspx"&gt;Microsoft Enterprise Library Data Access Application Block&lt;/a&gt; with the &lt;a href="http://code.google.com/p/mvc-mini-profiler/"&gt;MVC Mini Profiler&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;After overriding some methods, I was ready to run my first test. But instead of getting some profiling results all I got was the following error message:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“Attempt by security transparent method 'Microsoft.Practices.EnterpriseLibrary.Data.Database.CreateConnection()' to access security critical method 'MvcMiniProfiler.MiniProfiler.get_Current()' failed.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So why did I got this error and what does it mean?&lt;/p&gt;  &lt;p&gt;Let me first tell you that the Enterprise Library assembly is marked with the &lt;strong&gt;AllowPartiallyTrustedCallersAttribute&lt;/strong&gt; and uses the level 2 &lt;b&gt;security &lt;/b&gt;transparency model.&amp;#160; Level 2 transparency causes all methods in AllowPartiallyTrustedCallers assemblies to become &lt;b&gt;security&lt;/b&gt; &lt;b&gt;transparent&lt;/b&gt; by default. &lt;/p&gt;  &lt;p&gt; In .Net4.0 framework, &lt;b&gt;security&lt;/b&gt; tranparency rules prevent any &lt;b&gt;security&lt;/b&gt; &lt;b&gt;transparent&lt;/b&gt; code to call into &lt;b&gt;security&lt;/b&gt; &lt;b&gt;critical&lt;/b&gt; code. In .Net4.0 default &lt;b&gt;security&lt;/b&gt; transpareny of library assemblies is &lt;b&gt;&lt;i&gt;security&lt;/i&gt;&lt;/b&gt;&lt;i&gt; &lt;b&gt;critical&lt;/b&gt;&lt;/i&gt;. The&lt;em&gt; Enterprise Library&lt;/em&gt; assembly is marked with &lt;b&gt;AllowPartiallyTrustedCallers&lt;/b&gt; attribute. This explicitly tells the &lt;b&gt;security&lt;/b&gt; framework that this library will accept calls from &lt;b&gt;security&lt;/b&gt; &lt;b&gt;transparent&lt;/b&gt; callers. But the assembly &lt;i&gt;MvcMiniProfiler &lt;/i&gt;do not have &lt;b&gt;AllowPartiallyTrustedCallers&lt;/b&gt; attribute on it. This means it will not allow partial trusted or untrusted code to call into it. &lt;/p&gt;  &lt;p&gt;I solved the problem by forking the MvcMiniProfiler code and adding the &lt;b&gt;AllowPartiallyTrustedCallers&lt;/b&gt; attribute on the assembly. Anyone who knows a better(read=more secure) alternative?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-8308177777974189104?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/8308177777974189104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=8308177777974189104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8308177777974189104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8308177777974189104'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/attempt-by-security-transparent-method.html' title='Attempt by security transparent method to access security critical method'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-4081829951062508809</id><published>2011-11-11T11:04:00.000+01:00</published><updated>2011-11-11T11:04:00.060+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Windows Azure Training Kit: October 2011 release</title><content type='html'>&lt;p&gt;And there is the Azure team again… &lt;/p&gt;  &lt;p&gt;The October release of the Windows Azure Platform Training Kit (WAPTK) is now available as a free &lt;a href="http://go.microsoft.com/fwlink/?LinkID=130354"&gt;download&lt;/a&gt;. Download the full training kit including the hands-on labs, demo scripts, and presentations &lt;a href="http://go.microsoft.com/fwlink/?LinkID=130354"&gt;here&lt;/a&gt;. Browse through the individual hands-on labs on MSDN &lt;a href="http://bit.ly/WAPCourse"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The October 2011 version of the training kit includes the following new and updated content:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;HOL: SQL Azure Data-tier Applications &lt;b&gt;&lt;i&gt;NEW&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;HOL: SQL Azure Data Sync &lt;b&gt;&lt;i&gt;NEW&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;HOL: SQL Azure Federations &lt;b&gt;&lt;i&gt;NEW&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;DEMO: Provisioning Logical Servers using Cmdlets &lt;b&gt;&lt;i&gt;NEW&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;DEMO: Parallel Computing on Windows Azure - Travelling Salesman &lt;b&gt;&lt;i&gt;NEW&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;SQL Azure Labs and Demos with the new portal and tooling experience &lt;b&gt;&lt;i&gt;UPDATED&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;Applied several minor fixes in content &lt;b&gt;&lt;i&gt;UPDATED&lt;/i&gt;&lt;/b&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-25/6087.WAPTK.png" /&gt;&lt;/p&gt;  &lt;p&gt;For more information about the new SQL Azure content, including the new HOLs, please refer to the blog post, &lt;a href="http://blogs.msdn.com/b/rdoherty/archive/2011/10/31/new-and-updated-sql-azure-labs-available.aspx"&gt;“New and Updated SQL Azure Labs Available”&lt;/a&gt;, just posted to Roger Doherty’s blog.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-4081829951062508809?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/4081829951062508809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=4081829951062508809' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4081829951062508809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4081829951062508809'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/windows-azure-training-kit-october-2011.html' title='Windows Azure Training Kit: October 2011 release'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-5988497397019724561</id><published>2011-11-10T11:01:00.000+01:00</published><updated>2011-11-10T11:01:00.889+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Waterfall project management was a mistake</title><content type='html'>&lt;p&gt;Last week I was reading the&lt;em&gt; &lt;a href="http://agilescout.com/are-project-managers-living-a-lie/"&gt;‘Are project managers living a lie?’&lt;/a&gt;&lt;/em&gt; blog post by Peter Saddington, when I noticed the following eye-opening paragraph:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“It has always been eye-opening to many people when I tell my workshop participants or clients that they old waterfall way of doing software was never intended to be used. It was a misinterpretation of Dr. Royce’s seminal paper. What happened was that government agencies read the first page, saw a diagram (with a poorly chosen caption), and said: “Hey, that’s how we do software development!&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Yes, that’s right. &lt;strong&gt;Waterfall project management was never the point.&lt;/strong&gt; It was actually iterative development that Dr. Winston Royce was pointing to… later in his paper.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;If they had read the second page of Dr. Royce’s paper, they would have found the following quotes:&lt;/em&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;&lt;em&gt;“I believe in this concept, but the implementation described above is risky and invites failure.”&lt;/em&gt;&lt;/p&gt;      &lt;p&gt;&lt;em&gt;“Yet if these phenomena fail to satisfy the various external constraints, then invariably a major redesign is required.”&lt;/em&gt;&lt;/p&gt;      &lt;p&gt;&lt;em&gt;“The required design changes are likely to be so disruptive that the software requirements upon which the design is based and which provides the rationale for everything are violated. Either the requirements must be modified, or a substantial change in the design is required. In effect the development process has returned to the origin and one can expect up to a &lt;strong&gt;100-percent overrun in schedule and/or costs.”&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;p&gt;It’s kind of sad that the most used Project Management technology today is based on a misinterpretation of a paper. I hope that some (project) managers will read this paper and maybe even start thinking about how they are managing their projects today… (and yes, I’m also talking about the &lt;a href="http://www.google.be/url?sa=t&amp;amp;rct=j&amp;amp;q=scrum%20but&amp;amp;source=web&amp;amp;cd=10&amp;amp;ved=0CHIQFjAJ&amp;amp;url=http%3A%2F%2Fwww.scrumalliance.org%2Fresource_download%2F1122&amp;amp;ei=GVq2TtfnFIT14QS34qjtCQ&amp;amp;usg=AFQjCNFufoCq8TUlMpF7p7WRvRABct06XQ"&gt;‘Scrum but…’&lt;/a&gt; adepts!)&lt;/p&gt;  &lt;p&gt;&lt;a style="margin: 12px auto 6px; display: block; font: 14px helvetica,arial,sans-serif; text-decoration: underline; font-size-adjust: none; font-stretch: normal; -x-system-font: none" title="View Waterfall Managing the Development of Large Software Systems Royce on Scribd" href="http://www.scribd.com/doc/70663522/Waterfall-Managing-the-Development-of-Large-Software-Systems-Royce"&gt;Waterfall Managing the Development of Large Software Systems Royce&lt;/a&gt;&lt;object id="doc_978315827907815" name="doc_978315827907815" height="500" width="100%" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline:none;"&gt;		&lt;param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"&gt;		&lt;param name="wmode" value="opaque"&gt;		&lt;param name="bgcolor" value="#ffffff"&gt;		&lt;param name="allowFullScreen" value="true"&gt;		&lt;param name="allowScriptAccess" value="always"&gt;		&lt;param name="FlashVars" value="document_id=70663522&amp;amp;access_key=key-1qqdmdnkfj6pzj81vdoy&amp;amp;page=1&amp;amp;viewMode=list"&gt;		&lt;embed id="doc_978315827907815" name="doc_978315827907815" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=70663522&amp;amp;access_key=key-1qqdmdnkfj6pzj81vdoy&amp;amp;page=1&amp;amp;viewMode=list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="500" width="100%" wmode="opaque" bgcolor="#ffffff"&gt;&lt;/embed&gt;	&lt;/object&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-5988497397019724561?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/5988497397019724561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=5988497397019724561' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5988497397019724561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5988497397019724561'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/waterfall-project-management-was.html' title='Waterfall project management was a mistake'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-2959780139734923199</id><published>2011-11-09T10:27:00.000+01:00</published><updated>2011-11-09T10:27:00.127+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><title type='text'>Visual Studio 2010: NUnit support</title><content type='html'>&lt;p&gt;Microsoft announced full support for NUnit and other Testing frameworks in Visual Studio 11. However today you still don’t have NUnit integration out-of-the-box. Of course you can use the &lt;a href="http://www.jetbrains.com/resharper/"&gt;Resharper plugin&lt;/a&gt; or &lt;a href="http://www.testdriven.net/"&gt;TestDriven.NET&lt;/a&gt; but these are not free(although worth every cent). Last week I discovered &lt;a href="http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099"&gt;Visual Nunit&lt;/a&gt;, a free alternative to run your NUnit tests inside Visual Studio.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099"&gt;Visual Nunit&lt;/a&gt; is an open source NUnit runner for Visual Studio 2010. It provides convenient view to test cases and enables debugging (red arrow) tests easily inside development environment. It does not require separate test project. Implemented as Visual Studio Integration Package. &lt;/p&gt;  &lt;h5&gt;Features:&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Easy test debugging &lt;/li&gt;    &lt;li&gt;Easy and fast NUnit test execution &lt;/li&gt;    &lt;li&gt;NET 2.0, 3.0, 3.5 and 4.0 support &lt;/li&gt;    &lt;li&gt;Test execution progress, time and summary &lt;/li&gt;    &lt;li&gt;Stack trace view &lt;/li&gt;    &lt;li&gt;Test filtering based on project, namespace and fixture &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;img alt="Visual Nunit 2010" src="http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099/image/file/17040/9/screenshot.png?Id=17040" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-2959780139734923199?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/2959780139734923199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=2959780139734923199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/2959780139734923199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/2959780139734923199'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/visual-studio-2010-nunit-support.html' title='Visual Studio 2010: NUnit support'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-4539219047953383291</id><published>2011-11-08T10:18:00.000+01:00</published><updated>2011-11-08T15:43:13.251+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>JavaScript Patterns: Settings object</title><content type='html'>One of the patterns you see a lot in jQuery and other JavaScript based framework is the use of a Settings object to pass configuration data to a module or function.&lt;br /&gt;Again without spending too much words, a short sample:&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:58fdace0-46bc-4914-8aca-3370c005d7a3" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;(function ($) {&lt;br /&gt;      $.fn.blink = function (options) {&lt;br /&gt;      var settings = {&lt;br /&gt;     'speed': 'fast', &lt;br /&gt;    'repeat': 3&lt;br /&gt;        };&lt;br /&gt;        //if the options isn’t null extend defaults with user options.&lt;br /&gt;        if ( options ) { &lt;br /&gt;        $.extend( settings, options );&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        for(var i = 0;i&amp;lt;settings.repeat;i++)&lt;br /&gt;        {&lt;br /&gt;      this.fadeOut(settings.speed);&lt;br /&gt;      this.fadeIn(settings.speed);&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;})(jQuery);&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This is a function from a jQuery plugin(can’t remember the exact name). But the important things to notice here are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The blink method allows you to pass an options object.&lt;br /&gt;&amp;nbsp; &lt;/li&gt;&lt;li&gt;Inside the blink method a settings object is created with some default settings.&lt;br /&gt;&amp;nbsp; &lt;/li&gt;&lt;li&gt;If the user specified the options object, it will override one or more defaults by using the ‘extend’ method.&lt;/li&gt;&lt;/ol&gt;Learn it, love it…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-4539219047953383291?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/4539219047953383291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=4539219047953383291' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4539219047953383291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4539219047953383291'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/javascript-patterns-settings-object.html' title='JavaScript Patterns: Settings object'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-6796338811554646631</id><published>2011-11-07T10:11:00.000+01:00</published><updated>2011-11-07T10:11:00.571+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><title type='text'>IBM Rational to Team Foundation Server Integration Tools - Training and Exploration Sandbox</title><content type='html'>&lt;p&gt;While I’m busy working on a IBM Rational ClearCase to Team Foundation Server migration, I discovered that the ALM rangers have provided an evaluation and training sandbox. It offers an easy to use and near-zero-admin exploration, training and testing environment for IBM Rational ClearCase and/or IBM Rational ClearQuest migrations to Team Foundation Server, based on the latest supported &lt;a href="http://visualstudiogallery.msdn.microsoft.com/f854dd59-8eeb-4673-8d9a-ae012989bfa2"&gt;Team Foundation Server Integration Tools&lt;/a&gt;.&lt;/p&gt;  &lt;h5&gt;Supported scenario’s&lt;/h5&gt;  &lt;p&gt;Some of the supported scenario’s in this environment are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;IBM Rational ClearCase to Team Foundation Server migration&lt;/li&gt;    &lt;li&gt;IBM Rational ClearQuest to Team Foundation Server migration&lt;/li&gt;    &lt;li&gt;Team Foundation Server to Team Foundation Server migration&lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;How do you get started?&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Access the sandbox in three steps:      &lt;br /&gt;1. Register at &lt;a href="http://www.teamdevcentral.com/hosted_Team_Foundation_Server_TFS_clearCase.html"&gt;teamdevcentral.com &lt;/a&gt;      &lt;br /&gt;2. Check your e-mail       &lt;br /&gt;3. Connect using RDC over the Internet as per received instructions&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;More information &lt;a href="http://blogs.msdn.com/b/visualstudioalm/archive/2011/10/26/ibm-rational-to-team-foundation-server-integration-tools-training-and-exploration-sandbox.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-6796338811554646631?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/6796338811554646631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=6796338811554646631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6796338811554646631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6796338811554646631'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/ibm-rational-to-team-foundation-server.html' title='IBM Rational to Team Foundation Server Integration Tools - Training and Exploration Sandbox'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-8890802836488008054</id><published>2011-11-04T11:35:00.000+01:00</published><updated>2011-11-06T10:04:19.930+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='UI'/><title type='text'>Telerik MVC Grid: Client Side filtering</title><content type='html'>One of the nice features of the Telerik MVC Grid is &lt;a href="http://demos.telerik.com/aspnet-mvc/razor/grid/filtering?theme=vista"&gt;filtering&lt;/a&gt;. What makes this even cooler is that you can easily add your own filters using the client side API.&lt;br /&gt;An example:&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:c0c4c7fa-dbe8-42c3-bc5d-50d7d3b225ad" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="js" name="code"&gt;$(function () {&lt;br /&gt;    var button = $("#filterButton");&lt;br /&gt;&lt;br /&gt;    var filtered = false;&lt;br /&gt;&lt;br /&gt;    button.click(function (e) {&lt;br /&gt;        e.preventDefault();&lt;br /&gt;        var grid = $("#ordersGrid").data('tGrid');&lt;br /&gt;&lt;br /&gt;        if (filtered === false) {&lt;br /&gt;            button.html('Remove filter');&lt;br /&gt;            filtered = true;&lt;br /&gt;   //Add filter&lt;br /&gt;            grid.filter("OrderID~eq~10255");&lt;br /&gt;        }&lt;br /&gt;        else {&lt;br /&gt;            button.html('Add filter');&lt;br /&gt;            filtered = false;&lt;br /&gt;   //Remove filter&lt;br /&gt;            grid.filter('');&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        alert("clicked");&lt;br /&gt;    });&lt;br /&gt;});&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Remark:&lt;/strong&gt; Unfortunately this only seems to work when operationmode of the grid is not changed to GridOperationMode.Client.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-8890802836488008054?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/8890802836488008054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=8890802836488008054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8890802836488008054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8890802836488008054'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/telerik-mvc-grid-client-side-filtering.html' title='Telerik MVC Grid: Client Side filtering'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7335644246213660884</id><published>2011-11-03T10:37:00.000+01:00</published><updated>2011-11-03T20:32:42.075+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Javascript Patterns: The Module pattern</title><content type='html'>There are a lot of different ways to structure your Javascript code (and the most popular one remains no structure at all &lt;img alt="Glimlach" class="wlEmoticon wlEmoticon-smile" src="http://lh5.ggpht.com/-EvZNpbWZzUE/Tq5saJKKqWI/AAAAAAAAAV0/NJdle4c7zSs/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;). One of the most used patterns out there is the Module pattern. Instead of giving you a long explanation, let me show you a short sample:&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:6b57ff3b-b7cb-49e9-bcad-cad6d359b8f7" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="js" name="code"&gt;var module=(function(){&lt;br /&gt; var helloText='Hello world'&lt;br /&gt; &lt;br /&gt; function sayHello(){&lt;br /&gt;  alert(helloText);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; return { sayHello: sayHello}; &lt;br /&gt;})();&lt;br /&gt;&lt;br /&gt;module.sayHello(); &lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;h5&gt;What’s happening inside this code?&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;I create a JavaScript function that I immediately invoke. The result is assigned to the variable ‘module’.&lt;br /&gt;&amp;nbsp; &lt;/li&gt;&lt;li&gt;Inside this function I create a variable called ‘helloText’. As JavaScript uses function scope instead of block scope, this variable is available everywhere inside this function but not outside of it.&lt;br /&gt;&amp;nbsp; &lt;/li&gt;&lt;li&gt;I add a function ‘sayHello’, this function is also only accessible inside the ‘Module’ function.&lt;br /&gt;&amp;nbsp; &lt;/li&gt;&lt;li&gt;As a last step I create a new JavaScript object with a function sayHello on it that refers to the internal ‘sayHello’ function I’ve just created. This object is then returned. When I immediately invoked the function in step 1 I got the object back we’ve created with one public function ‘sayHello’.&lt;/li&gt;&lt;/ol&gt;By following this Module pattern, I can create nicely scoped functions and variables without fear for naming conflicts and without polluting the global scope.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Learn it, love it…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7335644246213660884?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7335644246213660884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7335644246213660884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7335644246213660884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7335644246213660884'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/javascript-patterns-module-pattern.html' title='Javascript Patterns: The Module pattern'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-EvZNpbWZzUE/Tq5saJKKqWI/AAAAAAAAAV0/NJdle4c7zSs/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-797941496582482352</id><published>2011-11-02T10:19:00.000+01:00</published><updated>2011-11-02T10:19:00.870+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='UI'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Bug in Telerik MVC Grid Control: Displaying items 1 - NaN of undefined</title><content type='html'>&lt;p&gt;After starting a project with the &lt;a href="http://www.trirand.com/jqgridwiki/doku.php"&gt;jqGrid&lt;/a&gt; control, we decided to move to the &lt;a href="http://www.telerik.com/products/aspnet-mvc/grid.aspx"&gt;Telerik MVC Grid control&lt;/a&gt;. Although a very powerful control, some advanced scenario’s were just too painful to implement with the jqGrid. So we replaced the jqGrid control with the Telerik MVC Grid control and were really happy with the result(we were able to get the same functionality with half the amount of code).&lt;/p&gt;  &lt;p&gt;However it still has some rough edges here and there. One error we got was when our grid control was bound to an empty list, the following text was shown in the pager part:&lt;em&gt; ‘Displaying items 1 - NaN of undefined’&lt;/em&gt;. This issue is mentioned on the &lt;a href="http://www.telerik.com/community/forums/aspnet-mvc/grid/paging-info-text-bug-if-grid-is-empty.aspx"&gt;Telerik MVC forums&lt;/a&gt; and a bug fix is available &lt;a href="http://www.telerik.com/ClientsFiles/285062_telerik-grid-min-js.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;UPDATE: &lt;/strong&gt;Last week Telerik released their first beta of the Q3 2011 version of the Telerik MVC controls. I validated the beta and it seems that the issue is no longer there. Great job Telerik!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-CJBFmA0h8m0/Tq5oF6x3HrI/AAAAAAAAAVk/PyGq8AAhwu0/s1600-h/overview-sprite%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="overview-sprite" border="0" alt="overview-sprite" src="http://lh6.ggpht.com/-NYlizWHU0GI/Tq5oGoFVHnI/AAAAAAAAAVs/gKh9vSHfklU/overview-sprite_thumb%25255B2%25255D.jpg?imgmax=800" width="285" height="280" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-797941496582482352?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/797941496582482352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=797941496582482352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/797941496582482352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/797941496582482352'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/11/bug-in-telerik-mvc-grid-control.html' title='Bug in Telerik MVC Grid Control: Displaying items 1 - NaN of undefined'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-NYlizWHU0GI/Tq5oGoFVHnI/AAAAAAAAAVs/gKh9vSHfklU/s72-c/overview-sprite_thumb%25255B2%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-5873952446119482735</id><published>2011-10-31T09:52:00.001+01:00</published><updated>2011-10-31T09:52:52.235+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><title type='text'>OData Service for Team Foundation Server 2010 - v1</title><content type='html'>&lt;p&gt;A few months ago Microsoft released the beta of the OData Service for Team Foundation Server 2010. Last week they finally&amp;#160; announced that v1 of this service is now available and you can download it &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=d6f8968c-f27f-43fb-88ae-8805db257a67"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What is it?     &lt;br /&gt;&lt;/b&gt; The purpose of this project is to help developers work with data from Team Foundation Server on multiple device types (such as smartphones and tablets) and operating systems. OData provides a great solution for this goal, and has been embraced by numerous developers for building great device-specific applications. OData is accessible from any device and application stack which supports HTTP requests. This OData service interacts directly with the &lt;a href="http://msdn.microsoft.com/library/bb130146.aspx"&gt;TFS client object model&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;iframe style="width: 512px; height: 288px" src="http://channel9.msdn.com/Blogs/briankel/OData-Service-for-Team-Foundation-Server-2010/player?w=512&amp;amp;h=288" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;    &lt;p&gt;Check out &lt;a href="http://blogs.msdn.com/b/briankel/archive/2011/10/26/odata-service-for-team-foundation-server-2010-v1.aspx"&gt;Brian Keller’s post&lt;/a&gt; for more information.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-5873952446119482735?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/5873952446119482735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=5873952446119482735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5873952446119482735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5873952446119482735'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/odata-service-for-team-foundation.html' title='OData Service for Team Foundation Server 2010 - v1'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7214470389662197257</id><published>2011-10-28T15:04:00.000+02:00</published><updated>2011-10-28T15:04:00.782+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Visual Studio Troubles: The project file has been moved, renamed or is not on your computer</title><content type='html'>&lt;p&gt;After doing a rename and merging a solution inside Visual Studio(one tip: never try to combine these two things at the same time), one project don’t want to load anymore. Instead I always got the following error: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“The project file has been moved, renamed or is not on your computer.”&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;I tried a lot of stuff but in the end the following solution worked:&lt;/b&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Close Visual Studio.&lt;/li&gt;    &lt;li&gt;Browse to the solution folder of the project which is giving you problems. &lt;/li&gt;    &lt;li&gt;Find the .suo file and delete it.&lt;/li&gt;    &lt;li&gt; Reopen your solution. Visual Studio will recreate the .suo file and everything worked. &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7214470389662197257?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7214470389662197257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7214470389662197257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7214470389662197257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7214470389662197257'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/visual-studio-troubles-project-file-has.html' title='Visual Studio Troubles: The project file has been moved, renamed or is not on your computer'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-4460947333522487916</id><published>2011-10-27T14:58:00.000+02:00</published><updated>2011-10-27T14:58:00.285+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Visual Studio 2010 Feature Pack 2</title><content type='html'>&lt;p&gt;Between all the fuzz about Windows 8 and Visual Studio 11, you should almost forget that we still have a long way to go with Visual Studio 2010. &lt;/p&gt;  &lt;p&gt;Microsoft extended the rich feature set of VS by releasing the second &lt;a href="http://msdn.microsoft.com/en-us/library/gg269474.aspx"&gt;Visual Studio 2010 Feature Pack&lt;/a&gt;. This Feature Pack has following features :-&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Testing features:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;Playback tests using the Mozilla Firefox browser. You can use Windows Internet Explorer 7 (or later versions) to record UI actions on a website or a Web-based application and then play back the tests using the Mozilla Firefox browser version 3.5 and 3.6.&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;Edit coded UI tests using the Coded UI Test Editor. The editor lets you easily modify your coded UI tests. You can locate, view, and edit your test methods, UI actions and their associated controls in the UI control map.&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;You can create coded UI tests or action recordings for Silverlight 4 applications. Action recordings enable you to fast forward through steps in a manual test.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg413375.aspx"&gt;Testing the Application with Feature Pack 2&lt;/a&gt;&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Code visualization and modeling features:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;Use the Generate Code command to generate skeleton code from elements on UML class diagrams. You can use the default transformations, or you can write custom transformations to translate UML types into code.&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;Create UML class diagrams from existing code.&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;Explore the organization and relationships in C, C++, and ASP.NET projects by generating dependency graphs.&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;Import elements from UML sequence diagrams, class diagrams, and use case diagrams as XMI 2.1 files that are exported from other modeling tools.&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;Create links and view links from work items to model elements.&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;Create layer diagrams from C or C++ code and validate dependencies.&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;Write code to modify layer diagrams and to validate code against layer diagrams.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Remark:&lt;/strong&gt; This package is only available for MSDN subscribers.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-4460947333522487916?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/4460947333522487916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=4460947333522487916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4460947333522487916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4460947333522487916'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/visual-studio-2010-feature-pack-2.html' title='Visual Studio 2010 Feature Pack 2'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-4698699742322681822</id><published>2011-10-26T14:47:00.000+02:00</published><updated>2011-10-26T14:47:00.202+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Visual Studio 11 Developer Preview Training Kit October 2011 Release</title><content type='html'>&lt;p&gt;Microsoft released their first Training Kit for the upcoming Visual Studio 11.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“The Visual Studio 11 Developer Preview Training Kit includes hands-on labs to help you understand how to take advantage of the variety of enhancements in Visual Studio 11 and the .NET Framework 4.5, how to support and manage the entire application lifecycle and how to build Windows Metro style apps.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h4&gt;Instructions&lt;/h4&gt;  &lt;p&gt;There are two files you can download to install this Training Kit: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The file VS11TrainingKitOctober2011.Setup.exe will install the entire training kit, After downloading this file, you do not need an Internet connection to install the files. Download and launch the self-extracting package. The Training Kit will uncompress to the selected folder and launch a HTML browser for the content. &lt;/li&gt;    &lt;li&gt;The file VS11TK_WebInstaller_Preview.exe provides you with the ability to install all or only some of the training kit. Download and launch the self-extracting package. Then select the labs you wish to install. You can rerun the installer to add labs in the future. This installer requires an Internet connection.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Download link: &lt;a title="http://www.microsoft.com/download/en/details.aspx?id=27738" href="http://www.microsoft.com/download/en/details.aspx?id=27738"&gt;http://www.microsoft.com/download/en/details.aspx?id=27738&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="[SNAGHTML1ed07198%255B4%255D.png]" src="http://lh6.ggpht.com/-NdDMKSwV8BA/TpzEilgfTEI/AAAAAAAAEkw/E8S_samVb1s/s1600/SNAGHTML1ed07198%25255B4%25255D.png" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-4698699742322681822?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/4698699742322681822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=4698699742322681822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4698699742322681822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4698699742322681822'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/visual-studio-11-developer-preview.html' title='Visual Studio 11 Developer Preview Training Kit October 2011 Release'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-NdDMKSwV8BA/TpzEilgfTEI/AAAAAAAAEkw/E8S_samVb1s/s72-c/SNAGHTML1ed07198%25255B4%25255D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-5418777863823112065</id><published>2011-10-25T14:43:00.000+02:00</published><updated>2011-10-25T14:43:00.157+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Compiler as a service: Project Roslyn</title><content type='html'>&lt;p&gt;Microsoft announced the availability of the &lt;strong&gt;Roslyn CTP &lt;/strong&gt;last week.&lt;/p&gt;  &lt;p&gt;This release marks a significant step to the new way of thinking of compilers, and the agility that is now possible with language innovation, IDE tooling, and powering the ecosystem. The &lt;strong&gt;C#&lt;/strong&gt; and &lt;strong&gt;VB&lt;/strong&gt; compilers are no longer black boxes – something we put source text into, do some magic on, and get an assembly out. All that rich information about code is no longer thrown away, but is now exposed as a full-fidelity object model that can be easily consumed by all. In addition, it was released a preview of the first-ever Interactive window for &lt;strong&gt;C#&lt;/strong&gt; that contains full IDE support – including IntelliSense and even automatically detecting missing using directives.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;How to get started:&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p&gt;Download the &lt;a href="http://download.microsoft.com/download/F/4/7/F4700C93-A150-48D8-A62C-7D075E161F38/RoslynSetup.exe"&gt;CTP&lt;/a&gt;. The CTP installs on Visual Studio 2010 SP1 and can be safely installed side-by-side with Visual Studio 11.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Go to &lt;strong&gt;Start&lt;/strong&gt; -&amp;gt; &lt;strong&gt;All Programs&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Microsoft Codename Roslyn CTP&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Getting Started&lt;/strong&gt; to launch the entry point into all the documentation, samples, and tools.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Read the &lt;a href="http://download.microsoft.com/download/E/A/D/EADEC33E-FBA3-43BF-9226-427BDAC27610/Roslyn%20Project%20Overview.docx"&gt;Roslyn Project Overview&lt;/a&gt; for a good overview of the project.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Learn from the rich samples included (paste as &lt;strong&gt;C#&lt;/strong&gt;/&lt;strong&gt;VB&lt;/strong&gt;, refactorings, code analysis, and code generation tools).&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Run the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=231190"&gt;walkthroughs&lt;/a&gt; to learn about the Compiler APIs, the Services API, or using the Interactive window.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;For those of you that aren’t extension writers, download the CTP to try out the Interactive window and use the Copy Paste C#/VB extensions that were built to help with your daily work now!&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;The release includes the following features:&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p&gt;&lt;i&gt;Visual Studio Project Templates&lt;/i&gt;        &lt;br /&gt;These project templates help you get started using the Roslyn APIs and building new Visual Studio extensions using the C# or VB APIs.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;i&gt;Reference Assemblies&lt;/i&gt;        &lt;br /&gt;The Roslyn assemblies can be added to projects via the &lt;strong&gt;Add Reference&lt;/strong&gt; dialog.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;i&gt;Interactive Window&lt;/i&gt;        &lt;br /&gt;A new tool window called &lt;strong&gt;C# Interactive&lt;/strong&gt; is available in Visual Studio by invoking &lt;strong&gt;View&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Other Windows&lt;/strong&gt; -&amp;gt; &lt;strong&gt;C# Interactive&lt;/strong&gt; from the menu. You can explore by either executing snippets of code in the C# Interactive tool window, or cumulatively building up execution context as you experiment.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;i&gt;Script File Editing Support&lt;/i&gt;        &lt;br /&gt;C# Script (.csx) files allow top-level statements much like the C# Interactive window. You can create a new C# Script file by invoking File -&amp;gt; New File -&amp;gt; Script -&amp;gt; Visual C# Script from the Visual Studio menu. In addition to typing directly into the tool window, you can also select code in C# and C# Script (.csx) files and invoke &amp;quot;Execute in Interactive&amp;quot; or &amp;quot;Copy to Interactive&amp;quot; from the context menu. C# Script editing features like IntelliSense are powered by the Roslyn Language Service.&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Some Links:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/ericlippert/archive/2011/10/19/the-roslyn-preview-is-now-available.aspx"&gt;The Roslyn Preview Is Now Available&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/nl-be/roslyn"&gt;Official Roslyn site&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/forums/en-us/roslyn"&gt;Roslyn forum&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2011/10/19/introducing-the-microsoft-roslyn-ctp.aspx"&gt;Introducing the Microsoft “Roslyn” CTP&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mindscapehq.com/blog/index.php/2011/10/20/in-bed-with-roslyn/"&gt;In bed with Roslyn&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.davidebbo.com/2011/10/using-roslyn-to-implement-mvc-razor.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+DavidEbbo+%28David+Ebbo%29"&gt;Using Roslyn to implement an MVC Razor view engine&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27744&amp;amp;WT.mc_id=rss_alldownloads_all"&gt;Whitepaper: Project Roslyn overview&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27745&amp;amp;WT.mc_id=rss_alldownloads_all"&gt;Walkthroughs: Project Roslyn CTP&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-5418777863823112065?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/5418777863823112065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=5418777863823112065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5418777863823112065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5418777863823112065'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/compiler-as-service-project-roslyn.html' title='Compiler as a service: Project Roslyn'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-8795054782139118485</id><published>2011-10-24T14:34:00.000+02:00</published><updated>2011-10-24T17:11:05.649+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='NuGet'/><title type='text'>Downloading an old version of a NuGet package</title><content type='html'>&lt;a href="http://nuget.codeplex.com/"&gt;&lt;img align="right" src="http://download.codeplex.com/Download?ProjectName=nuget&amp;amp;DownloadId=162974&amp;amp;Build=18207" style="display: inline; float: right;" /&gt;&lt;/a&gt;By default &lt;a href="http://nuget.codeplex.com/"&gt;NuGet&lt;/a&gt; will always download the latest version of a package. But what if you don’t want the most reason version? Luckily there is a way to specify the package version by using the Package Manager Console in Visual Studio. &lt;br /&gt;First bring up the Package Manager Console in Visual Studio. Go to &lt;strong&gt;Tools|Library Package Manager|Package Manager Console&lt;/strong&gt;.&lt;br /&gt;You can install a package by using the ‘Install-Package’ powershell command. This command has a Version argument that can be used to specify a specific version.&lt;br /&gt;&lt;pre&gt;&lt;code&gt;Install-Package PackageName -Version 1.3.1&lt;/code&gt;&lt;/pre&gt;See the &lt;a href="http://nuget.codeplex.com/wikipage?title=Package%20Manager%20Console%20Command%20Reference"&gt;command reference&lt;/a&gt; for details. If you use the Intellisense feature inside the Package Manager Console(by using the TAB key), you even get the list of available versions.&lt;br /&gt;&lt;br /&gt;The same thing works if you want to update an existing package, this time by using the ‘Update-Package’ powershell command. &lt;br /&gt;&lt;br /&gt;&lt;code&gt;Update-Package PackageName -Version 1.3.2&lt;br /&gt;    &lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-8795054782139118485?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/8795054782139118485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=8795054782139118485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8795054782139118485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8795054782139118485'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/downloading-old-version-of-nuget.html' title='Downloading an old version of a NuGet package'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-6632111989777056301</id><published>2011-10-21T18:38:00.000+02:00</published><updated>2011-10-22T14:49:14.896+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML 5'/><title type='text'>The power of HTML 5 and Javascript: Rendering PDF’s in your browser</title><content type='html'>Today I was once again amazed about the power that HTML5 and Javascript can offer when I discovered PDF.js. This Javascript library is written by a couple of clever guys over at &lt;a href="http://andreasgal.com/2011/06/15/pdf-js/"&gt;Mozilla&lt;/a&gt; and allows you to display &lt;strong&gt;PDFs&lt;/strong&gt; inside your browser using &lt;strong&gt;Javascript&lt;/strong&gt; and &lt;strong&gt;HTML5&lt;/strong&gt;. The code is available for download on &lt;a href="https://github.com/andreasgal/pdf.js"&gt;Github&lt;/a&gt;. &lt;br /&gt;&lt;h5&gt;Benefits&lt;/h5&gt;The traditional approach to rendering PDFs in a browser is to use a native-code plugin, either Adobe’s own PDF Reader or other commercial renderers, or some open source alternative. From a security perspective, this enlarges the trusted code base and increases the risk of code based injection attacks. An HTML5-based implementation is completely immune to this class of problems.&lt;br /&gt;If you want to see a demo of &lt;a href="https://github.com/andreasgal/pdf.js"&gt;pdf.js&lt;/a&gt;, click on this &lt;a href="http://people.mozilla.org/~gal/test.html"&gt;link&lt;/a&gt;. There are still glitches and rendering artifacts but it already shows the potential of this library.&lt;br /&gt;&lt;h5&gt;A quick sample&lt;/h5&gt;Download the latest code required from &lt;a href="https://github.com/andreasgal/pdf.js"&gt;Github&lt;/a&gt; to start developing. Create a web page and embed the following Javascript references:&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:3186895c-c76c-45d7-a485-229e6f273f28" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="js" name="code"&gt;&amp;lt;script type="text/javascript" src="scripts/pdf.js"&amp;gt;&amp;lt;/script&amp;gt;  &lt;br /&gt;&amp;lt;script type="text/javascript" src="scripts/metrics.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="scripts/fonts.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="scripts/glyphlist.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Add the new &amp;lt;canvas&amp;gt; HTML5 control to the body of your page&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:423e5e87-f6cd-4921-8113-c68d3268c5b2" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="xml" name="code"&gt;&amp;lt;canvas id="pdf-canvas" style="border:1px solid black;"/&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now you can start rendering your PDF by writing some Javascript code:&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:9809e82e-270b-4a5c-89e9-a1e9bef16736" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="js" name="code"&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;'use strict';      &lt;br /&gt;getPdf('myPDFFile.pdf', function getPdf(data) {&lt;br /&gt; // Instantiate PDFDoc with PDF data          &lt;br /&gt; var pdf = new PDFDoc(data);          &lt;br /&gt; var page = pdf.getPage(1);          &lt;br /&gt; var scale = 1.5;&lt;br /&gt;&lt;br /&gt; // Prepare canvas using PDF page dimensions          &lt;br /&gt; var canvas = document.getElementById('pdf-canvas');&lt;br /&gt; var context = canvas.getContext('2d');&lt;br /&gt; canvas.height = page.height * scale;&lt;br /&gt; canvas.width = page.width * scale;          &lt;br /&gt; &lt;br /&gt; // Render PDF page into canvas context&lt;br /&gt; page.startRendering(context);      &lt;br /&gt;});  &lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-6632111989777056301?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/6632111989777056301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=6632111989777056301' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6632111989777056301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6632111989777056301'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/power-of-html-5-and-javascript.html' title='The power of HTML 5 and Javascript: Rendering PDF’s in your browser'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7454698848176524551</id><published>2011-10-20T18:08:00.000+02:00</published><updated>2011-10-20T18:08:00.702+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Library'/><title type='text'>Enterprise Library: Windows Azure Autoscaling application block</title><content type='html'>&lt;p&gt;Last week Microsoft released a beta version of the&amp;#160; &lt;b&gt;Windows Azure Autoscaling Application Block&lt;/b&gt;.To learn more about this application block watch the video walkthrough:&lt;/p&gt;  &lt;p&gt;&lt;iframe style="width: 512px; height: 288px" src="http://channel9.msdn.com/posts/Autoscaling-Windows-Azure-applications/player?w=512&amp;amp;h=288" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;The easiest way to download the block is via &lt;a href="http://nuget.org/List/Search?packageType=Packages&amp;amp;searchCategory=All+Categories&amp;amp;searchTerm=wasabi&amp;amp;sortOrder=package-download-count&amp;amp;pageSize=10"&gt;NuGet&lt;/a&gt;. There are two packages – one with binaries and one containing the source. The beta includes a sample application for hosting the block and for exploratory testing. &lt;/p&gt;  &lt;p&gt;This version offers a lot of new features as well as bug fixes. Check &lt;a href="http://entlib.codeplex.com/wikipage?title=WASABiBetaReleaseNotes&amp;amp;referringTitle=EntLib5Azure"&gt;this page&lt;/a&gt; for the change log.&lt;/p&gt;  &lt;h5&gt;Getting Started&lt;/h5&gt;  &lt;p&gt;Please follow the instructions in the included &lt;b&gt;Readme&lt;/b&gt; file to learn how to use the block binaries and about the pre-requisites if you want to build the block from source. They also released a first draft set of documentation, which includes the &lt;b&gt;reference documentation&lt;/b&gt; and an early preview of the &lt;b&gt;Developer’s Guide&lt;/b&gt;. Both are available via &lt;a href="http://entlib.codeplex.com/releases/view/74618"&gt;Codeplex&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;There is also a sample app that showcases various usages of the Autoscaling Application Block. Therefore they expanded the scope of the Tailspin reference implementation originally shipped with the &lt;a href="http://wag.codeplex.com/releases/view/71446"&gt;Developing Application for the Cloud Guide&lt;/a&gt; by making it more elastic. The sample app is also available via Codeplex.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7454698848176524551?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7454698848176524551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7454698848176524551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7454698848176524551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7454698848176524551'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/enterprise-library-windows-azure.html' title='Enterprise Library: Windows Azure Autoscaling application block'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7765651803716716508</id><published>2011-10-19T17:59:00.000+02:00</published><updated>2011-10-19T17:59:00.625+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><title type='text'>Team Foundation Server Source Control Explorer VS 2010 Extension</title><content type='html'>&lt;p&gt;&lt;strong&gt;TFSSCExplorerExtension&lt;/strong&gt; is a Visual Studio 2010 Extension Package that adds new functionality to the &lt;strong&gt;TFS Source Control Explorer&lt;/strong&gt; window. Most important features are &lt;strong&gt;Drag &amp;amp; Drop&lt;/strong&gt; support, &lt;strong&gt;Move&lt;/strong&gt; and &lt;strong&gt;Branch&lt;/strong&gt; functions even for multiple files selection and &lt;strong&gt;Merge from Sources&lt;/strong&gt; feature.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/c6642e7f-1a58-4ff0-aef9-0322dcc2b28d"&gt;&lt;img title="image" border="0" alt="image" src="http://lh6.ggpht.com/-k1rKtapsEO8/ToudVIsKc3I/AAAAAAAAEck/5vpZ3PiOrwc/image%25255B8%25255D.png?imgmax=800" width="500" height="315" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There is a version available both for Visual Studio 2010 and Visual Studio 11 Developer Preview:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/c6642e7f-1a58-4ff0-aef9-0322dcc2b28d"&gt;VS 2010 version&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/dc925252-2e11-46df-9cd0-af4b8097ca4f"&gt;VS2011 DP version&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7765651803716716508?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7765651803716716508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7765651803716716508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7765651803716716508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7765651803716716508'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/team-foundation-server-source-control.html' title='Team Foundation Server Source Control Explorer VS 2010 Extension'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-k1rKtapsEO8/ToudVIsKc3I/AAAAAAAAEck/5vpZ3PiOrwc/s72-c/image%25255B8%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7576915657984808507</id><published>2011-10-18T17:52:00.000+02:00</published><updated>2011-10-18T22:49:35.200+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Telerik MVC Extensions: Using a more recent jQuery version</title><content type='html'>If you are looking for custom ASP.NET MVC controls, the &lt;a href="http://www.telerik.com/products/aspnet-mvc.aspx"&gt;Telerik MVC Extensions&lt;/a&gt; are one of the options. If you are using them you probably included them in your ASP.NET MVC web application by using NuGet. These extension are jQuery based and jQuery 1.5.1 is included out of the box.&lt;br /&gt;Including the required Javascript files is easy. Just at the following code to the bottom of your Razor page(your Telerik controls should be placed BEFORE the scripts).&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:fe3a3cbc-32eb-4f50-a3d8-f0344d1668ea" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;@(Html.Telerik().ScriptRegistrar()) &lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This will include jQuery and all other required Javascript files automatically. But what if you are using a more recent jQuery version? I first removed the jQuery script from the Scripts\2011.2.712\ folder but this resulted in errors. Instead what you need to do is change your script as follows:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ef8b41c2-421d-4006-8f97-00e2cd62cecf" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;@(Html.Telerik().ScriptRegistrar() &lt;br /&gt;   .jQuery(false) &lt;br /&gt;) &lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;The ScriptRegistrar will no longer complain and you can reference the jQuery version of your choice. I tried it with jQuery 1.6.2 and everything worked fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7576915657984808507?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7576915657984808507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7576915657984808507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7576915657984808507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7576915657984808507'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/telerik-mvc-extensions-using-more.html' title='Telerik MVC Extensions: Using a more recent jQuery version'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7220544004041944372</id><published>2011-10-17T17:53:00.000+02:00</published><updated>2011-10-17T17:53:00.831+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Running your build server on Azure</title><content type='html'>&lt;p&gt;With the first preview of TFS Services(read: Team Foundation Server on Azure), you’re ALM environment in the cloud get’s a lot closer. &lt;/p&gt;  &lt;p&gt;But what about my build server? Do I still need to host some servers myself or is their an alternative available?&lt;/p&gt;  &lt;p&gt;Although not an official solution (yet), one of the options you have is using an Azure VM Role with a build service, and configure it against your TFS Services instance. &lt;/p&gt;  &lt;h5&gt;&lt;/h5&gt;  &lt;p&gt;&lt;strong&gt;What’s needed to get this working? &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;First of all you need a Windows Azure account of course. Login to the Windows Azure portal(&lt;a href="http://windows.azure.com"&gt;http://windows.azure.com&lt;/a&gt;) and sign up for the VM role beta program(yes it’s still in beta). It can take some time before your subscription is approved so be patient(it took a few weeks before our subscription was activated).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;While you are waiting for your subscription approval you can already create the VHD required for your VM role. Follow the steps as described in the following post: &lt;a href="http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_vmrolelab_topic2"&gt;http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_vmrolelab_topic2&lt;/a&gt;. Replace task 2 with the installation of TFS build Service 11 (&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/09/15/configuring-a-build-server-against-your-shiny-new-hosted-tfs-account.aspx"&gt;Look here for the steps&lt;/a&gt;), but only do the installation and skip the configuration part. Replace Task3 and only change the port number in bullet 9 to 9191(This is the default one for the TFS Build Service). &lt;/p&gt;  &lt;p&gt;After your subscription is activated you can upload the VHD to Windows Azure(on my slow ADSL connection it took me a few hours). As a final step use the Remote Desktop functionality to connect to the VM Role instance(More info here: &lt;a href="http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_vmrolelab_topic3"&gt;http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_vmrolelab_topic3&lt;/a&gt;) and configure the build service according to the steps described by &lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/09/15/configuring-a-build-server-against-your-shiny-new-hosted-tfs-account.aspx"&gt;Brian Harry&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;That’s it! &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-zt4o-E4WO9Y/TpvPVFnxbuI/AAAAAAAAAVU/EFKh4xPAFeA/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-arx-UaxruF8/TpvPVhWHZKI/AAAAAAAAAVc/O0kLVfqN5_U/image_thumb%25255B1%25255D.png?imgmax=800" width="1015" height="143" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7220544004041944372?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7220544004041944372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7220544004041944372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7220544004041944372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7220544004041944372'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/running-your-build-server-on-azure.html' title='Running your build server on Azure'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-arx-UaxruF8/TpvPVhWHZKI/AAAAAAAAAVc/O0kLVfqN5_U/s72-c/image_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-6296354046825440425</id><published>2011-10-13T21:26:00.001+02:00</published><updated>2011-10-13T21:26:13.897+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><title type='text'>TFS Build Error: The process cannot access the file 'data.coverage' because it is being used by another process</title><content type='html'>&lt;p&gt;Last week we had a situation on our build server where the build was running indefinitely. After stopping the build, the following error was thrown:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The process cannot access the file 'data.coverage' because it is being used by another process.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;As the problem only happened when code coverage was enabled, I guessed that it had to do something with the test runner. One thing I noticed on the build machine that the VSPerfmon.exe kept running.&lt;/p&gt;  &lt;p&gt;After killing this process, the build completed and the issue was gone.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-6296354046825440425?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/6296354046825440425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=6296354046825440425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6296354046825440425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6296354046825440425'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/tfs-build-error-process-cannot-access.html' title='TFS Build Error: The process cannot access the file &amp;#39;data.coverage&amp;#39; because it is being used by another process'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-6270676065205671978</id><published>2011-10-13T15:45:00.000+02:00</published><updated>2011-10-13T15:45:00.049+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='MSBuild'/><title type='text'>Customizing TFS Build 2010</title><content type='html'>&lt;p&gt;&lt;img style="display: inline; float: right" align="right" src="https://blufiles.storage.live.com/y1pmWgAWdoVcUs2kVGejEga4dO19U0J--5RL9YB_wl48RWrxWKqPqohycg1hgzoLYQxzfGJIZCOjzA/CLIPART_OF_25530_SMJPG.jpg?psid=1" width="360" height="323" /&gt;If you are looking into TFS Build customizations, I can recommend starting with the following blog series by Ewald Hofman: &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/04/20/Customize-Team-Build-2010-e28093-Part-1-Introduction.aspx"&gt;Part 1: Introduction&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/04/27/Customize-Team-Build-2010-e28093-Part-2-Add-arguments-and-variables.aspx"&gt;Part 2: Add arguments and variables&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/04/28/Customize-Team-Build-2010-e28093-Part-3-Use-more-complex-arguments.aspx"&gt;Part 3: Use more complex arguments&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/04/29/Customize-Team-Build-2010-e28093-Part-4-Create-your-own-activity.aspx"&gt;Part 4: Create your own activity&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/05/13/Customize-Team-Build-2010-e28093-Part-5-Increase-AssemblyVersion.aspx"&gt;Part 5: Increase AssemblyVersion&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/05/17/Customize-Team-Build-2010-e28093-Part-6-Use-custom-type-for-an-argument.aspx"&gt;Part 6: Use custom type for an argument&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/05/27/Customize-Team-Build-2010-e28093-Part-7-How-is-the-custom-assembly-found.aspx"&gt;Part 7: How is the custom assembly found&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/05/28/Customize-Team-Build-2010-e28093-Part-8-Send-information-to-the-build-log.aspx"&gt;Part 8: Send information to the build log&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/05/28/Customize-Team-Build-2010-e28093-Part-9-Impersonate-activities-(run-under-other-credentials).aspx"&gt;Part 9: Impersonate activities (run under other credentials)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/06/01/Customize-Team-Build-2010-e28093-Part-10-Include-Version-Number-in-the-Build-Number.aspx"&gt;Part 10: Include Version Number in the Build Number&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/10/01/Customize-Team-Build-2010-e28093-Part-11-Speed-up-opening-my-build-process-template.aspx"&gt;Part 11: Speed up opening my build process template&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/10/01/Customize-Team-Build-2010-e28093-Part-12-How-to-debug-my-custom-activities.aspx"&gt;Part 12: How to debug my custom activities&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/10/02/Customize-Team-Build-2010-e28093-Part-13-Get-control-over-the-Build-Output.aspx"&gt;Part 13: Get control over the Build Output&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/11/09/Part-14-Execute-a-PowerShell-script.aspx"&gt;Part 14: Execute a PowerShell script&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2010/11/09/Part-15-Fail-a-build-based-on-the-exit-code-of-a-console-application.aspx"&gt;Part 15: Fail a build based on the exit code of a console application&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ewaldhofman.nl/post/2011/04/06/Customize-Team-Build-2010-e28093-Part-16-Specify-the-relative-reference-path.aspx"&gt;Part 16: Specify the relative reference path&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Afterwards you can get into more detail by browsing through Jason Prickett’s blog at &lt;a title="http://blogs.msdn.com/b/jpricket/" href="http://blogs.msdn.com/b/jpricket/"&gt;http://blogs.msdn.com/b/jpricket/&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-6270676065205671978?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/6270676065205671978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=6270676065205671978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6270676065205671978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6270676065205671978'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/customizing-tfs-build-2010.html' title='Customizing TFS Build 2010'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-4024055712765335747</id><published>2011-10-12T14:41:00.000+02:00</published><updated>2011-10-12T14:41:00.472+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Use Fiddler to validate version problems with Javascript libraries</title><content type='html'>I’m a big fan of &lt;a href="http://www.fiddler2.com/fiddler2/"&gt;Fiddler&lt;/a&gt; for a long time. Last week I had to test some jQuery compatibility issues with a new web application we were building. At first I was replacing all the Javascript files with newer versions, updating all the references and so on… Although this approach worked it was cumbersome and error-prone. Isn’t there a better alternative?&lt;br /&gt;&lt;h5&gt;&lt;/h5&gt;&lt;h5&gt;Fiddler to the rescue!&lt;/h5&gt;I found the following post by Eric Law where he uses Fiddler to load a different version of jQuery without updating any reference:&lt;a href="http://blogs.msdn.com/b/ieinternals/archive/2011/08/19/using-fiddler-to-verify-a-jquery-update-will-fix-a-compatibility-problem.aspx" title="http://blogs.msdn.com/b/ieinternals/archive/2011/08/19/using-fiddler-to-verify-a-jquery-update-will-fix-a-compatibility-problem.aspx"&gt;http://blogs.msdn.com/b/ieinternals/archive/2011/08/19/using-fiddler-to-verify-a-jquery-update-will-fix-a-compatibility-problem.aspx&lt;/a&gt;.&amp;nbsp; Exactly where I was looking for!&lt;br /&gt;So how can you do this? &lt;br /&gt;&lt;ul&gt;&lt;li&gt;First, download the (newer) version of the library you want to test. &lt;/li&gt;&lt;li&gt;Start Fiddler and go to the &lt;strong&gt;AutoResponder&lt;/strong&gt; tab. Use the&lt;strong&gt; Add…&lt;/strong&gt; button to create a new rule to map requests for your Javascript library to the newly downloaded file.&lt;img alt="image" border="0" height="162" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-47-13-metablogapi/0245.image_5F00_3D8981F9.png" title="image" width="626" /&gt;&lt;/li&gt;&lt;li&gt;Also set the &lt;strong&gt;Unmatched requests passthrough &lt;/strong&gt;option to ensure that Fiddler doesn’t automatically generate 404s for requests that don’t match any of the rules.&lt;/li&gt;&lt;li&gt;Reload your web application you’ll see that&amp;nbsp; Fiddler intercepts the request for the older library and returns the newer one instead. &lt;/li&gt;&lt;/ul&gt;If I only found out this feature sooner…&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Remark:&lt;/strong&gt; Don't forget to remove this rule afterwards. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-4024055712765335747?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/4024055712765335747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=4024055712765335747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4024055712765335747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4024055712765335747'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/use-fiddler-to-validate-version.html' title='Use Fiddler to validate version problems with Javascript libraries'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-4032208525165226747</id><published>2011-10-11T14:21:00.000+02:00</published><updated>2011-10-11T14:21:00.697+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Developer cheat sheet</title><content type='html'>&lt;p&gt;As a developer there are so many things you need to remember: keyboard shortcuts, programming language syntax, code snippets, … and the list keeps growing.&lt;/p&gt;  &lt;p&gt;So make your life as a developer a little bit easier and use this ultimate cheat sheet at &lt;a title="http://devcheatsheet.com/" href="http://devcheatsheet.com/"&gt;http://devcheatsheet.com/&lt;/a&gt;.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“DevCheatSheet.com is a directory of free cheat sheets and quick reference cards for developers, programmers, engineers, and nerds”&lt;/em&gt;&amp;#160; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;img src="http://dev102.com/Dev102/wp-content/uploads/2008/05/cheatsheet.png" width="337" height="441" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-4032208525165226747?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/4032208525165226747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=4032208525165226747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4032208525165226747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4032208525165226747'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/developer-cheat-sheet.html' title='Developer cheat sheet'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-2361655704180534670</id><published>2011-10-10T13:09:00.000+02:00</published><updated>2011-10-10T13:09:00.092+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Architect'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>NServiceBus Modeling Tools</title><content type='html'>&lt;p&gt;If you are still not convinced that NServiceBus could make your message based architecture a lot simpler, maybe this new feature can convince you: &lt;/p&gt;  &lt;h5&gt;NServiceBus Modeling&lt;/h5&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“Visual Studio integrated modeling tools for NServiceBus allow you to graphically design your distributed solution and have all of your projects created, appropriate references set up, configuration of queues and routing made to &amp;quot;just work&amp;quot;, on top of all the regular NServiceBus goodness.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This first version includes Visual Studio integration and really makes developing with NServiceBus much more productive and enjoyable.&lt;/p&gt; &lt;iframe height="225" src="http://player.vimeo.com/video/29659143?byline=0&amp;amp;portrait=0" frameborder="0" width="400" webkitallowfullscreen="webkitallowfullscreen" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;  &lt;p&gt;&lt;a href="http://vimeo.com/29659143"&gt;NServiceBus Modeling Tools for Visual Studio&lt;/a&gt; from &lt;a href="http://vimeo.com/user8685263"&gt;NServiceBus Ltd.&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;You can get this tool on the NServiceBus &lt;a href="http://www.nservicebus.com/Downloads.aspx"&gt;download page&lt;/a&gt; or via the Visual Studio Gallery &lt;a href="http://visualstudiogallery.msdn.microsoft.com/c262316b-34da-45c8-9230-25adaf103803"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-2361655704180534670?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/2361655704180534670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=2361655704180534670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/2361655704180534670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/2361655704180534670'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/nservicebus-modeling-tools.html' title='NServiceBus Modeling Tools'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1118316577005967254</id><published>2011-10-07T21:37:00.000+02:00</published><updated>2011-10-07T21:37:00.184+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>WPF is still alive!</title><content type='html'>&lt;p&gt;With all the fuzz about the dead of Silverlight, we should almost forget that it still has a big brother WPF. &lt;/p&gt;  &lt;p&gt;After the announcements at Build it looks like that WPF isn’t dead either. It even has some very useful new and enhanced features &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Ribbon control: WPF 4.5 ships with a &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.ribbon.ribbon(v=VS.110).aspx"&gt;Ribbon&lt;/a&gt; control that hosts a Quick Access Toolbar, Application Menu, and tabs. &lt;/li&gt;    &lt;li&gt;Improved performance when displaying large sets of grouped data&lt;/li&gt;    &lt;li&gt;New features for the VirtualizingPanel&lt;/li&gt;    &lt;li&gt;Binding to static properties: You can use static properties as the source of a data binding. The data binding engine recognizes when the property's value changes if a static event is raised. &lt;/li&gt;    &lt;li&gt;Accessing collections on non-UI Threads: WPF enables you to access and modify data collections on threads other than the one that created the collection. This enables you to use a background thread to receive data from an external source, such as a database, and display the data on the UI thread. By using another thread to modify the collection, your user interface remains responsive to user interaction.&lt;/li&gt;    &lt;li&gt;Synchronously and Asynchronously validating data: The &lt;a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifydataerrorinfo(v=VS.110).aspx"&gt;INotifyDataErrorInfo&lt;/a&gt; interface enables data entity classes to implement custom validation rules and expose validation results asynchronously. This interface also supports custom error objects, multiple errors per property, cross-property errors, and entity-level errors.&lt;/li&gt;    &lt;li&gt;Automatically updating the source of a data binding: If you use a data binding to update a data source, you can use the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.delay(v=VS.110).aspx"&gt;Delay&lt;/a&gt; property to specify an amount of time to pass after the property changes on the target before the source updates. &lt;/li&gt;    &lt;li&gt;Binding to types that Implement ICustomTypeProvider&lt;/li&gt;    &lt;li&gt;Retrieving data binding information from a binding expression&lt;/li&gt;    &lt;li&gt;Checking for a valid DataContext object&lt;/li&gt;    &lt;li&gt;Repositioning data as the data's values change (Live shaping): A collection of data can be grouped, sorted, or filtered. WPF 4.5 enables the data to be rearranged when the data is modified. &lt;/li&gt;    &lt;li&gt;Integrating WPF with win32 Graphical User Interfaces(My favorite!): WPF 4.5 provides better integration between WPF and Win32 user interface components. &lt;/li&gt;    &lt;li&gt;Improved Support for Establishing a Weak Reference to an Event: Implementing the weak event pattern is now easier because subscribers to events can participate in it without implementing an extra interface. The generic &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.weakeventmanager(v=VS.110).aspx"&gt;WeakEventManager&lt;/a&gt; class also enables subscribers to participate in the weak event pattern if a dedicated &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.weakeventmanager(v=VS.110).aspx"&gt;WeakEventManager&lt;/a&gt; does not exist for a certain event.&lt;/li&gt;    &lt;li&gt;New methods for the Dispatcher class: The Dispatcher class defines new methods for synchronous and asynchronous operations.&lt;/li&gt;    &lt;li&gt;Markup Extensions for Events: WPF 4.5 supports markup extensions for events. While WPF does not define a markup extension to be used for events, third parties are able to create a markup extension that can be used with events.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;More information and all the details here: &lt;a title="http://msdn.microsoft.com/en-us/library/bb613588(v=VS.110).aspx" href="http://msdn.microsoft.com/en-us/library/bb613588(v=VS.110).aspx"&gt;http://msdn.microsoft.com/en-us/library/bb613588(v=VS.110).aspx&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1118316577005967254?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1118316577005967254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1118316577005967254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1118316577005967254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1118316577005967254'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/wpf-is-still-alive.html' title='WPF is still alive!'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1295740166148901552</id><published>2011-10-06T21:27:00.000+02:00</published><updated>2011-10-06T21:27:00.616+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>JBOWS: Just a Bunch of Web Services</title><content type='html'>&lt;p&gt;Sometimes you know that something is an anti-pattern but you don’t find a good name for it. Last week I discovered the following old blog post about &lt;a href="http://bill-poole.blogspot.com/2008/05/jbows-is-bad.html"&gt;JBOWS&lt;/a&gt;. I immediately recognized this as something I had seen before in a lot of so called ‘SOA’ architectures. Unfortunately this anti-pattern still applies today.&lt;/p&gt;  &lt;p&gt;JBOWS stands for &lt;em&gt;&lt;b&gt;J&lt;/b&gt;ust a &lt;b&gt;B&lt;/b&gt;unch &lt;b&gt;o&lt;/b&gt;f &lt;b&gt;W&lt;/b&gt;eb &lt;b&gt;S&lt;/b&gt;ervices&lt;/em&gt; and indicates a service oriented architecture that focuses on tooling and technology rather than architecture and analysis. Most of the time this happens because IT is leading the SOA initiative(instead of the business).&amp;#160; And SOA with little or no cooperation from the business is meant to fail. Therefore most JBOWS architectures deliver little or no value to the business. If anything, overall business agility will decrease over time as more and more disorganized services spring up with considerably more complex and brittle dependencies that need to be maintained.&lt;/p&gt;  &lt;p&gt;So if you recognize this inside your own organization, know that it has a name &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Glimlach" src="http://lh4.ggpht.com/--G5DNDxo7tk/ToYYJQQggnI/AAAAAAAAAVQ/GQY04TRztyc/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.coloradoresearch.com/wp-content/uploads/2007/11/dilbert2666700071126.gif" width="600" height="208" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1295740166148901552?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1295740166148901552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1295740166148901552' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1295740166148901552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1295740166148901552'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/jbows-just-bunch-of-web-services.html' title='JBOWS: Just a Bunch of Web Services'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/--G5DNDxo7tk/ToYYJQQggnI/AAAAAAAAAVQ/GQY04TRztyc/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1669430011925234281</id><published>2011-10-05T21:17:00.000+02:00</published><updated>2011-10-05T21:17:00.478+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><title type='text'>Brain meltdown: Practical Foundations for Programming Languages</title><content type='html'>&lt;p&gt;Last week I found the following free programming book at &lt;a href="http://www.cs.cmu.edu/~rwh/plbook/book.pdf"&gt;http://www.cs.cmu.edu/~rwh/plbook/book.pdf&lt;/a&gt;&amp;#160; on &amp;quot;Practical Foundations for Programming Languages&amp;quot;.&lt;/p&gt;  &lt;p&gt;As the title states it focuses on the foundations of programming languages. The idea is that most&amp;#160; programming language features start from the concept of a type   &lt;br /&gt;structure that governs its syntax and semantics. Although very interesting to read, it almost cost me a brain meltdown.&lt;/p&gt;  &lt;p&gt;Read at your own risk!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1669430011925234281?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1669430011925234281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1669430011925234281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1669430011925234281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1669430011925234281'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/brain-meltdown-practical-foundations.html' title='Brain meltdown: Practical Foundations for Programming Languages'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-508991160660028315</id><published>2011-10-04T21:04:00.000+02:00</published><updated>2011-10-04T21:04:00.190+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Scrum for Team System became Open Source</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;Crispin Parker, the original creater of the great &lt;a href="http://www.scrumforteamsystem.co.uk/"&gt;Scrum for Team System&lt;/a&gt; template has left his company. Luckily for us he took the Scrum for Team System template with him and turned it into an open source initiative.&amp;#160; Let’s hope that this will bring the template to the next level.&lt;/p&gt;  &lt;p&gt;So from now on if you are looking for a new version of the template, go to &lt;a title="http://scrumforteamsystem.codeplex.com/" href="http://scrumforteamsystem.codeplex.com/"&gt;http://scrumforteamsystem.codeplex.com/&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;BTW: Old versions are still available at &lt;a title="http://www.scrumforteamsystem.co.uk/" href="http://www.scrumforteamsystem.co.uk/"&gt;http://www.scrumforteamsystem.co.uk/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-508991160660028315?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/508991160660028315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=508991160660028315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/508991160660028315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/508991160660028315'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/scrum-for-team-system-became-open.html' title='Scrum for Team System became Open Source'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-698289145647779195</id><published>2011-10-03T20:55:00.000+02:00</published><updated>2011-10-03T20:55:00.324+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Windows Azure Platform Training Kit – September 2011 Update</title><content type='html'>&lt;p&gt;Earlier this month Microsoft released an updated version of the Windows Azure Platform Training Kit. The September 2011 update of the training kit includes updated hands-on labs for the Windows Azure SDK/Tools version 1.5 (September 2011.) The September update also includes a new hands-on lab for Service Bus Messaging, which demonstrates how to send and receive messages using the new Service Bus Message Queues and Topics that were just released.&lt;/p&gt;  &lt;p&gt;You can download the full training kit including the hands-on labs, demo scripts, and presentations from the Microsoft download center here: &lt;a href="http://bit.ly/WAPTKSept2011"&gt;http://bit.ly/WAPTKSept2011&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you don’t want to download the complete training kit, you can try the new &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=8396"&gt;Windows Azure Platform Training Kit – Web Installer&lt;/a&gt;. This new training kit web installer is a very small application weighing in at 2MB. It enables you to select and download just the hands-on labs, demos, and presentations that you want instead of downloading the entire training kit. As new or updated hands-on labs, presentations, and demos are available they will automatically show up in the web installer – so you won’t have to download it again(and it has a nice Metro style UI). &lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-25/0407.Installer1.png" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-698289145647779195?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/698289145647779195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=698289145647779195' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/698289145647779195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/698289145647779195'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/10/windows-azure-platform-training-kit.html' title='Windows Azure Platform Training Kit – September 2011 Update'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-8172979285894525615</id><published>2011-09-30T16:49:00.000+02:00</published><updated>2011-09-30T20:25:46.956+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><title type='text'>ASP.NET MVC: Performance tips</title><content type='html'>Although there are a lot of different ways to optimize your ASP.NET MVC web applications, some are cheaper then others. Here are some very simple tips that still can make a significant difference:&lt;br /&gt;&lt;h5&gt;Run in Release mode&lt;/h5&gt;Always make sure that your application is compiled in Release mode and that your web.config file is configured with &lt;code&gt;&amp;lt;compilation debug="false" /&amp;gt;&lt;/code&gt;. Use the web.config transformations feature to automatically change this value in release mode.&lt;br /&gt;&lt;h5&gt;Use only the View Engines that you need&lt;/h5&gt;As you probably know the MVC framework supports multiple view engines. This means that each time MVC is trying to find a view it’s searching through all these view engines. In MVC 3 two view engines are registered by default (WebForms and Razor). So if you use only one view engine, remove the ones you are not using:&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e12fbbcc-9de0-4828-a91b-352b342899c3" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;protected void Application_Start() &lt;br /&gt;{ &lt;br /&gt;	ViewEngines.Engines.Clear(); &lt;br /&gt;	ViewEngines.Engines.Add(new RazorViewEngine()); &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5&gt;Use the CachedDataAnnotationsModelMetadataProvider from ASP.NET MVC Futures&lt;/h5&gt;In the ASP.NET MVC 3 Futures you can find a little gem called the CachedDataAnnotationsModelMetadataProvider. For using this provider, just open global.asax file and add the following line in the Application_Start method,&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:6bb3aab2-075b-4bd4-ac0f-6f5da17d82f8" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;ModelMetadataProviders.Current = new CachedDataAnnotationsModelMetadataProvider();&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;Avoid passing null models to views&lt;/h5&gt;Don’t pass in a null model to a view that uses strongly-typed html helpers (such as &lt;code&gt;Html.TextBoxFor&lt;/code&gt;). Strongly-typed html helpers such as &lt;code&gt;Html.TextBoxFor(m =&amp;gt; m.Name)&lt;/code&gt; will try to emit the value of the model using the provided expression. However when something along the expression chain is null a NullReferenceException will be thrown when the expression gets evaluated. MVC’s expression evaluator catches the exception but on a page with multiple such html helpers the cost of the exception adds up. You can avoid that cost by always passing an empty instance of the model to the view: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:b9b80e1d-a3bb-41c7-8b0d-3757e24eb401" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;public ActionResult Insert() &lt;br /&gt;{ &lt;br /&gt;	return View(new Product()); &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;h5&gt;Uninstall URL Rewrite if you don’t use it&lt;/h5&gt;When performing URL generation (for example via a method like &lt;code&gt;Html.ActionLink&lt;/code&gt;) in some cases MVC checks to see if the currently requested URL has been rewritten by the URL Rewrite module. If that is the case the result is processed so that it correctly matches the URL requested by the client. The act of checking if a URL has been rewritten has a non-trivial cost (because it involves checking server variables). ASP.NET MVC 3 checks to see if URL Rewrite is turned off and can cache that fact thus avoiding the need to inspect server variables for each request. If URL Rewrite is turned on MVC will have to check server variables even if no rewriting happened for a particular request so if you are not using URL Rewrite you should turn it off.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-8172979285894525615?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/8172979285894525615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=8172979285894525615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8172979285894525615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8172979285894525615'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/09/aspnet-mvc-performance-tips.html' title='ASP.NET MVC: Performance tips'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7014758331776441980</id><published>2011-09-29T12:49:00.000+02:00</published><updated>2011-09-29T12:49:00.308+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Powershell'/><title type='text'>Writing Powershell scripts inside Visual Studio: PowerGUI Visual Studio Extension</title><content type='html'>&lt;p&gt;You want to write Powershell scripts inside Visual Studio? Thanks to the&amp;#160; &lt;a href="http://www.powergui.org"&gt;PowerGUI&lt;/a&gt; Visual Studio Extension this becomes very easy. &lt;/p&gt;  &lt;p&gt;Here is the list of available features:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;PowerGUI Console Tool Window &lt;/li&gt;    &lt;li&gt;PowerShell Project Type&lt;/li&gt;    &lt;li&gt;IntelliSense support through a custom PowerShell editor &lt;/li&gt;    &lt;li&gt;Syntax highlighting and script analysis &lt;/li&gt;    &lt;li&gt;Supports PowerGUI settings &lt;/li&gt;    &lt;li&gt;Supports PowerGUI imported modules &lt;/li&gt;    &lt;li&gt;Supports PowerGUI Snippets &lt;/li&gt;    &lt;li&gt;PowerShell debugging &lt;/li&gt;    &lt;li&gt;PowerGUI Console Tool Window &lt;/li&gt;    &lt;li&gt;PowerShell Project Type&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;img title="screenshot.png" alt="screenshot.png" src="http://i3.codeplex.com/Download?ProjectName=powerguivsx&amp;amp;DownloadId=127360" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7014758331776441980?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7014758331776441980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7014758331776441980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7014758331776441980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7014758331776441980'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/09/writing-powershell-scripts-inside.html' title='Writing Powershell scripts inside Visual Studio: PowerGUI Visual Studio Extension'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7122969500212813402</id><published>2011-09-28T12:44:00.000+02:00</published><updated>2011-09-28T12:44:00.089+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>JScript Editor Extensions for Visual Studio</title><content type='html'>&lt;p&gt;While browsing through some Channel 9 videos, I discovered the following session:&lt;/p&gt; &lt;iframe style="width: 512px; height: 288px" src="http://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-Studio-Toolbox-JScript-Editor-Extensions/player?w=512&amp;amp;h=288" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;Damian Edwards, a member of the ASP.NET team at Microsoft talks in this episode about the JScript Editor Extensions(Microsoft calls it JScript because Oracle owns the rights on the name JavaScript) and about what can be expected in Visual Studio vNext. &lt;/p&gt;  &lt;p&gt;This JScript Editor Extensions bundles the following functionality:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Brace Matching&lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Adds support for automatically highlighting the matching opening or closing brace to the one currently at the cursor. Supports matching parenthesis: (), square brackets: [], and curly braces: {}. Braces in strings, comments and regular expression literals are ignored.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Outlining / Cold-folding&lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Adds support for automatically creating outlining regions for JScript blocks. Blocks are detected via opening and closing curly braces. Braces in strings, comments and regular expression literals are ignored.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Current Word Highlighting&lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Adds support for highlighting all instances of the word currently at the cursor.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;IntelliSense Doc-Comments &amp;lt;para&amp;gt; Support&lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Adds support for the &amp;lt;para&amp;gt; element in JScript IntelliSense doc-comments to allow display of new lines in IntelliSense tooltips, e.g.&lt;/p&gt;  &lt;p&gt;function hello(name) {   &lt;br /&gt;/// &amp;lt;summary&amp;gt;A great function    &lt;br /&gt;/// &amp;lt; para&amp;gt;Some info on a new line&amp;lt;/para&amp;gt;    &lt;br /&gt;/// &amp;lt;/summary&amp;gt;    &lt;br /&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot; type=&amp;quot;String&amp;quot;&amp;gt;The name to say hello to&amp;lt;/param&amp;gt;    &lt;br /&gt;return &amp;quot;hello &amp;quot; + name;    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;Download the extension here: &lt;a title="http://visualstudiogallery.msdn.microsoft.com/872d27ee-38c7-4a97-98dc-0d8a431cc2ed?SRC=Home" href="http://visualstudiogallery.msdn.microsoft.com/872d27ee-38c7-4a97-98dc-0d8a431cc2ed?SRC=Home"&gt;http://visualstudiogallery.msdn.microsoft.com/872d27ee-38c7-4a97-98dc-0d8a431cc2ed?SRC=Home&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And if you want to know more about the improvements in the Visual Studio 11 JavaScript editor: &lt;a title="http://www.asp.net/vnext/whats-new#_Toc303354500" href="http://www.asp.net/vnext/whats-new#_Toc303354500"&gt;http://www.asp.net/vnext/whats-new#_Toc303354500&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7122969500212813402?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7122969500212813402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7122969500212813402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7122969500212813402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7122969500212813402'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/09/jscript-editor-extensions-for-visual.html' title='JScript Editor Extensions for Visual Studio'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1771266280035033739</id><published>2011-09-27T12:24:00.000+02:00</published><updated>2011-09-27T12:24:00.606+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><title type='text'>The type or namespace name 'Linq' does not exist in the namespace 'System.Data'</title><content type='html'>&lt;p&gt;Last week I was creating a demo application to show some ASP.NET features when I kept getting the following error:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“The type or namespace name 'Linq' does not exist in the namespace 'System.Data'”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I had the System.Data.Linq DLL referenced in my application and verified through the Object Browser that this namespace was indeed part of this assembly. Although a very stupid error it took me some time to figure out why it wasn’t working….&lt;/p&gt;  &lt;p&gt;I was finally able to solve the issue by adding the following line in my web.config:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:cb1379f0-5613-413f-b005-4e0affac086e" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1771266280035033739?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1771266280035033739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1771266280035033739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1771266280035033739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1771266280035033739'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/09/type-or-namespace-name-does-not-exist.html' title='The type or namespace name &amp;#39;Linq&amp;#39; does not exist in the namespace &amp;#39;System.Data&amp;#39;'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1206527079831768403</id><published>2011-09-26T12:16:00.000+02:00</published><updated>2011-09-26T12:16:00.435+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><title type='text'>JavaScript weirdness</title><content type='html'>&lt;p&gt;Interested in some of the curiosities inside the JavaScript programming language? Have a look at &lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/tags/JavaScriptOMG/default.aspx"&gt;Mike Taulty’s blog&lt;/a&gt; where he walks through a lot of (little known) JavaScript features.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2011/09/06/javascript-omg-1-to-5.aspx"&gt;JavaScript OMG! #1 to #5&lt;/a&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;OMG #1 – Optional Semi-Colons&lt;/li&gt;      &lt;li&gt;OMG #2 – JavaScript Type System&lt;/li&gt;      &lt;li&gt;OMG #3 – JavaScript and Underflow, Overflow, Div Zero&lt;/li&gt;      &lt;li&gt;OMG #4 – JavaScript and RegExp&lt;/li&gt;      &lt;li&gt;OMG #5 – Truthy and Falsy&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2011/09/06/javascript-omg-6-to-10.aspx"&gt;JavaScript OMG! #6 to #10&lt;/a&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;OMG #6 – The Global Object&lt;/li&gt;      &lt;li&gt;OMG #7 – “Expando Objects”&lt;/li&gt;      &lt;li&gt;OMG #8 – Wrappers&lt;/li&gt;      &lt;li&gt;OMG #9 – Type Conversions&lt;/li&gt;      &lt;li&gt;OMG#10 – Object to Primitive Conversions&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2011/09/06/javascript-omg-11-to-15.aspx"&gt;JavaScript OMG! #11 to #15&lt;/a&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;OMG #11 – Variable Scope and Hoisting&lt;/li&gt;      &lt;li&gt;OMG #12 – Bitwise Operators&lt;/li&gt;      &lt;li&gt;OMG #13 – Equality and Strict Equality&lt;/li&gt;      &lt;li&gt;OMG #14 – “use strict”&lt;/li&gt;      &lt;li&gt;OMG #15 – Magic of Short-Circuiting ANDs and Truthy/Falsy&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2011/09/06/javascript-omg-16-to-20.aspx"&gt;JavaScript OMG!: #16 to #20&lt;/a&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;OMG#16 – Function Arguments&lt;/li&gt;      &lt;li&gt;OMG #17 – Nested Functions&lt;/li&gt;      &lt;li&gt;OMG #18 – Arrays versus Lists&lt;/li&gt;      &lt;li&gt;OMG #19 – Function Invocation Context &amp;amp; Strict Mode&lt;/li&gt;      &lt;li&gt;OMG #20 – Nested Functions &amp;amp; Invocation Context&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2011/09/07/javascript-omg-21-to-25.aspx"&gt;JavaScript OMG #21 to #25&lt;/a&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;OMG #21 – Everything’s a Function&lt;/li&gt;      &lt;li&gt;OMG #22 – array.sort() won’t sort numbers “correctly”&lt;/li&gt;      &lt;li&gt;OMG #23 – parseInt() needs help&lt;/li&gt;      &lt;li&gt;OMG #24 – Callbacks and Scope&lt;/li&gt;      &lt;li&gt;OMG #25 – Function Literals Create Functions&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1206527079831768403?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1206527079831768403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1206527079831768403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1206527079831768403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1206527079831768403'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/09/javascript-weirdness.html' title='JavaScript weirdness'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-4925026393421494781</id><published>2011-09-25T12:06:00.000+02:00</published><updated>2011-09-25T12:06:00.740+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><title type='text'>How to connect to tfspreview.com from Visual Studio 2010?</title><content type='html'>&lt;p&gt;After registering an account on &lt;a href="https://tfspreview.com/"&gt;TFS Preview&lt;/a&gt;, I immediately wanted to add some code and start playing with it. However just entering [your account name].tfspreview.com&amp;#160; in Team Explorer had no effect.&lt;/p&gt;  &lt;h5&gt;So what do you need to do to get this working?&lt;/h5&gt;  &lt;p&gt;First you need Visual Studio 2010 with SP1 applied. Secondly you need to install &lt;a href="http://go.microsoft.com/fwlink/?LinkID=212065"&gt;KB2581206&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;After installing the hotfix, a connection can be made through the “Add Team Foundation Server” dialogue in VS2010:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;URL of Team Foundation Server = [your account name].tfspreview.com &lt;/li&gt;    &lt;li&gt;Connection Details:      &lt;ul&gt;       &lt;li&gt;Path = tfs &lt;/li&gt;        &lt;li&gt;Port = 443 &lt;/li&gt;        &lt;li&gt;Protocol = HTTPS&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ReOMulyeoMU/Tn2rvcVzfZI/AAAAAAAAAU4/XNL_qy0x4UM/s1600-h/image%25255B7%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-H9qMUu7t3k4/Tn2rwEv7xHI/AAAAAAAAAU8/DNvFHS3TOKM/image_thumb%25255B3%25255D.png?imgmax=800" width="529" height="310" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You’ll get a connection dialog to connect through Live Id:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-CGjdj0gkunk/Tn2rwqKj6BI/AAAAAAAAAVA/Ts_kOXzzOHg/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-gJTZs4nad0c/Tn2rxE5qCrI/AAAAAAAAAVE/onyGVXAA_Rg/image_thumb%25255B1%25255D.png?imgmax=800" width="696" height="408" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That’s it!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-TIuoUgf104U/Tn2rxS2-SKI/AAAAAAAAAVI/Ae4Q3T1KQLs/s1600-h/image%25255B11%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-46rEW-rSjxI/Tn2ryAUXmqI/AAAAAAAAAVM/ntr1L4mDh3g/image_thumb%25255B5%25255D.png?imgmax=800" width="512" height="258" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-4925026393421494781?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/4925026393421494781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=4925026393421494781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4925026393421494781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4925026393421494781'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/09/how-to-connect-to-tfspreviewcom-from.html' title='How to connect to tfspreview.com from Visual Studio 2010?'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-H9qMUu7t3k4/Tn2rwEv7xHI/AAAAAAAAAU8/DNvFHS3TOKM/s72-c/image_thumb%25255B3%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-4860661347051632033</id><published>2011-09-24T11:57:00.001+02:00</published><updated>2011-09-24T11:57:18.142+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>What after BUILD?</title><content type='html'>&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-bV8W1P7KQ9c/Tn2pe0CcBnI/AAAAAAAAAUw/T2eyaZqhpLg/s1600-h/c056e72a-e7e6-4aa1-b2ad-4e2265933726%25255B1%25255D%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="c056e72a-e7e6-4aa1-b2ad-4e2265933726[1]" border="0" alt="c056e72a-e7e6-4aa1-b2ad-4e2265933726[1]" src="http://lh6.ggpht.com/-xV0SYmPNL3w/Tn2pfbljo9I/AAAAAAAAAU0/26tSOhnk3SA/c056e72a-e7e6-4aa1-b2ad-4e2265933726%25255B1%25255D_thumb%25255B2%25255D.jpg?imgmax=800" width="576" height="130" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After 2 weeks of vacation I’m working myself through all the information that was released at the &lt;a href="http://www.buildwindows.com/"&gt;Microsoft BUILD conference&lt;/a&gt;. If you couldn’t be there(like most of us) certainly start with the 2 keynotes(&lt;a href="http://channel9.msdn.com/events/BUILD/BUILD2011/KEY-0001"&gt;Keynote #1&lt;/a&gt; &amp;amp; &lt;a href="http://channel9.msdn.com/events/BUILD/BUILD2011/KEY-0002"&gt;Keynote #2&lt;/a&gt;). This will inspire you enough to browse through all the other sessions(&lt;a title="http://channel9.msdn.com/Events/BUILD/BUILD2011" href="http://channel9.msdn.com/Events/BUILD/BUILD2011"&gt;http://channel9.msdn.com/Events/BUILD/BUILD2011&lt;/a&gt;).&amp;#160; &lt;/p&gt;  &lt;p&gt;One nice thing I noticed is that if you have an HTML5 enabled browser, the videos are shown using the HTML 5 &amp;lt;video&amp;gt; tag giving you the option to change the play speed(most sessions are still watchable at 1.4x speed). Unfortunately a full screen option is not available(yet), but you can always switch back to the Silverlight player. &lt;/p&gt;  &lt;p&gt;Continue your journey by downloading and experimenting with&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows 8 Developer Preview      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://wdp.dlws.microsoft.com/WDPDL/9B8DFDFF736C5B1DBF956B89D8A9D4FD925DACD2/WindowsDeveloperPreview-64bit-English-Developer.iso"&gt;Windows Developer Preview with developer tools English, 64-bit (x64)&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://wdp.dlws.microsoft.com/WDPDL/9B8DFDFF736C5B1DBF956B89D8A9D4FD925DACD2/WindowsDeveloperPreview-64bit-English.iso"&gt;Windows Developer Preview English, 64-bit (x64)&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://wdp.dlws.microsoft.com/WDPDL/9B8DFDFF736C5B1DBF956B89D8A9D4FD925DACD2/WindowsDeveloperPreview-32bit-English.iso"&gt;Windows Developer Preview English, 32-bit (x86)&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Visual Studio 11(for MSDN Subscribers)      &lt;ul&gt;       &lt;li&gt;&lt;a href="https://msdn.microsoft.com/subscriptions/securedownloads/default.aspx?PV=18:448:---:en:---"&gt;Visual Studio Agents 11 Developer Preview (x86 and x64) - DVD (English) &lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="https://msdn.microsoft.com/subscriptions/securedownloads/default.aspx?PV=18:448:---:en:---"&gt;Visual Studio Team Foundation Server 11 Developer Preview Web Installer (x86 and x64) - (English) &lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="https://msdn.microsoft.com/subscriptions/securedownloads/default.aspx?PV=18:448:---:en:---"&gt;Visual Studio Team Foundation Server 11 Developer Preview (x86 and x64) - DVD (English) &lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="https://msdn.microsoft.com/subscriptions/securedownloads/default.aspx?PV=18:448:---:en:---"&gt;Visual Studio Team Explorer Everywhere 11 Developer Preview (x86 and x64) - DVD (English) &lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="https://msdn.microsoft.com/subscriptions/securedownloads/default.aspx?PV=18:448:---:en:x64"&gt;Visual Studio 11 Developer Preview Remote Debugger (x64) - (English) &lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="https://msdn.microsoft.com/subscriptions/securedownloads/default.aspx?PV=18:448:---:en:x86"&gt;Visual Studio 11 Developer Preview Remote Debugger (x86) - (English) &lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="https://msdn.microsoft.com/subscriptions/securedownloads/default.aspx?PV=18:448:---:en:---"&gt;Visual Studio 11 Developer Preview Web Installer (x86 and x64) - (English) &lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="https://msdn.microsoft.com/subscriptions/securedownloads/default.aspx?PV=18:448:---:en:---"&gt;Visual Studio 11 Developer Preview (x86 and x64) - DVD (English) &lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="https://msdn.microsoft.com/subscriptions/securedownloads/default.aspx?PV=18:448:---:en:---"&gt;.NET Framework 4.5 Developer Preview Web Installer (x86 and x64) - (English) &lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="https://msdn.microsoft.com/subscriptions/securedownloads/default.aspx?PV=18:448:---:en:---"&gt;.NET Framework 4.5 Developer Preview (x86 and x64) - (English) &lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Visual Studio 11 (for non-MSDN Subscribers)      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=225709"&gt;Visual Studio 11 Developer Preview&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=225714"&gt;Visual Studio Team Foundation Server 11 Developer Preview&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=228575"&gt;Visual Studio Team Explorer Everywhere 11 Developer Preview&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=225758"&gt;Visual Studio Agents 11 Developer Preview&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=225757"&gt;Visual Studio 11 Developer Preview Remote Debugger&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=225767"&gt;.NET Framework 4.5 Developer Preview&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Team Foundation Server 11      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27539"&gt;Team Foundation Server 11 Developer Preview&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://aka.ms/VS11ALMVM"&gt;Visual Studio 11 ALM Virtual Machine + Hands on Labs&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Team Foundation Services&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://tfspreview.com/"&gt;TFS Preview&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-4860661347051632033?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/4860661347051632033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=4860661347051632033' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4860661347051632033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/4860661347051632033'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/09/what-after-build.html' title='What after BUILD?'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-xV0SYmPNL3w/Tn2pfbljo9I/AAAAAAAAAU0/26tSOhnk3SA/s72-c/c056e72a-e7e6-4aa1-b2ad-4e2265933726%25255B1%25255D_thumb%25255B2%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-2101054326162851618</id><published>2011-09-09T20:51:00.000+02:00</published><updated>2011-09-09T23:18:53.488+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>Design Patterns: Null Object</title><content type='html'>&lt;em&gt;‘If you have a hammer, everything looks like a nail’&lt;/em&gt;. My favorite pattern today is the Null object pattern, so I’m applying it everywhere &lt;img alt="Glimlach" class="wlEmoticon wlEmoticon-smile" src="http://lh4.ggpht.com/-Orq0bPKhwes/TmPInJWYuGI/AAAAAAAAAUs/FoFQRBScdFc/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;&lt;br /&gt;But what’s this pattern exactly and why is it so useful? Let’s consider the following code :&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:a7418ebb-522b-4573-9ea4-e06c48511888" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;class DiscountRepository&lt;br /&gt;{&lt;br /&gt;    public Discount GetDiscountFor(Order order)&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public abstract class Discount&lt;br /&gt;{   &lt;br /&gt;   public abstract int Calculate(Order order);&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;We have an abstract class that represents our object and a repository.&lt;br /&gt;&lt;br /&gt;Now what if you have an order for which there is no discount information available in the database. You always have to check for null and having this all over the place make the code less readable.&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:b96b6b30-fe8f-4a60-9155-41f304759825" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c" name="code"&gt;public void ProcessOrder(Order order)&lt;br /&gt;{&lt;br /&gt;    var discount=_repository.GetDiscountFor(order);&lt;br /&gt;    if (discount != null)&lt;br /&gt;        discount.Calculate(order);&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;I don’t like this code.&amp;nbsp; So let’s apply the Null Object pattern to make the above code prettier and less error-prone. All we need to do is to implement the abstract class(you can achieve the same result by using an interface) one more time but this time we will do it inside our Discount class like this :&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:053514d6-59cf-4ac1-b013-7bc86d5b74ab" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c" name="code"&gt;public abstract class Discount&lt;br /&gt;{&lt;br /&gt;    public abstract int Calculate(Order order);&lt;br /&gt;        &lt;br /&gt;    public static readonly Discount NULL = new NullDiscount();&lt;br /&gt;    private class NullDiscount : Discount&lt;br /&gt;    {            &lt;br /&gt;        public override int Calculate(Order order) { return 0; }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Our ProcessOrder now looks like this :&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:d385ac4d-07d8-4ed7-8988-e90902164bf4" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;public void ProcessOrder(Order order)&lt;br /&gt;{&lt;br /&gt;    var discount=_repository.GetDiscountFor(order);&lt;br /&gt;    discount.Calculate(order);&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;And our GetDiscountFor method looks like this :&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:6320bbfc-f729-4750-b98e-8d2a843052a1" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;public Discount GetDiscountFor(Order order)&lt;br /&gt;{&lt;br /&gt;    if(/* Not Found */)&lt;br /&gt;        return Discount.NULL;&lt;br /&gt;    else&lt;br /&gt;        /* The db record */&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-2101054326162851618?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/2101054326162851618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=2101054326162851618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/2101054326162851618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/2101054326162851618'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/09/design-patterns-null-object.html' title='Design Patterns: Null Object'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-Orq0bPKhwes/TmPInJWYuGI/AAAAAAAAAUs/FoFQRBScdFc/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1839983454120281677</id><published>2011-09-08T20:31:00.000+02:00</published><updated>2011-09-08T20:31:00.186+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><title type='text'>Impress your colleagues with your knowledge about… private builds</title><content type='html'>&lt;p&gt;One of the little known features of Team Foundation Server 2010 are private builds (a.k.a. “Buddy Builds”).A Private build is just like a Gated check-in build, but without the automatic check-in and enforcement.&lt;/p&gt;  &lt;p&gt;It’s a way to manually queue a Gated check-in build and provide a Shelveset name. It provides another sanity check beyond F5. You specify a private build by selecting a Shelveset to merge with the latest source code when queuing a build.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-i1bO3Fp2Or8/TmPD8V1zgII/AAAAAAAAAUk/BeTVqv4Fmag/s1600-h/PrivateBuild%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="PrivateBuild" border="0" alt="PrivateBuild" src="http://lh3.ggpht.com/-IHjlzV5fLrc/TmPD8220o-I/AAAAAAAAAUo/-Etobcl-mpc/PrivateBuild_thumb%25255B1%25255D.png?imgmax=800" width="479" height="148" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You queue a private build if you want to build the changes that you have put into a shelveset. You can use a private build (also known as a &amp;quot;buddy build&amp;quot;) to validate changes to your code before you check it in. By performing a private build of your changes before you check them in, you can reduce the chance that they will break any builds that your team runs regularly (such as the nightly build).&lt;/p&gt;  &lt;h5&gt;&lt;font style="font-weight: normal"&gt;From the &lt;a href="http://msdn.microsoft.com/en-us/library/ms181722.aspx#queue_private"&gt;MSDN website:&lt;/a&gt;&lt;/font&gt;&lt;/h5&gt;  &lt;blockquote&gt;   &lt;h5&gt;&lt;em&gt;How Private Builds Differ from Public Builds&lt;/em&gt;&lt;/h5&gt;    &lt;p&gt;&lt;em&gt;The results of a completed private build differ from a completed public build in the following ways:&lt;/em&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;em&gt;A private build resembles a gated check-in build in that you are building code that includes changes in a shelveset. However, your changes are not automatically checked in for you after a private build as they are after a gated check-in build.&lt;/em&gt;&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;&lt;em&gt;The following build process parameters are presumed to be False and therefore have no effect, regardless of the setting specified in the build definition:&lt;/em&gt;&lt;/p&gt;        &lt;ul&gt;         &lt;li&gt;           &lt;p&gt;&lt;em&gt;Label Sources&lt;/em&gt;&lt;/p&gt;         &lt;/li&gt;          &lt;li&gt;           &lt;p&gt;&lt;em&gt;Create Work Item on Failure&lt;/em&gt;&lt;/p&gt;         &lt;/li&gt;          &lt;li&gt;           &lt;p&gt;&lt;em&gt;Associate Changesets and Work Items&lt;/em&gt;&lt;/p&gt;         &lt;/li&gt;       &lt;/ul&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;&lt;em&gt;In Build Explorer, the completed build appears next to the following icon: &lt;img title="ms181722.Icon_BldPrivateBuild(en-us,VS.100).gif" alt="ms181722.Icon_BldPrivateBuild(en-us,VS.100).gif" src="http://i.msdn.microsoft.com/dynimg/IC291057.gif" /&gt;&lt;/em&gt;&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;&lt;em&gt;The completed build is named by using the format &lt;strong&gt;Build &lt;/strong&gt;N where N is a unique integer value. This format differs from that of public builds, which you specify by using the Build Number Format parameter. &lt;/em&gt;&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;&lt;em&gt;For each build definition, you specify a separate (and optionally different) retention policy to limit the number of completed private builds that are stored in the system. &lt;/em&gt;&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h5&gt;Queue a Private Build&lt;/h5&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;p&gt;In Team Explorer, click the appropriate team project.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;On the Build menu, click Queue New Build. &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;In the Build definition list, select a build definition.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;In the What do you want to build? list, select Latest sources with shelveset. &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Perform one of the following steps:&lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;p&gt;If you already have a shelveset, type its name into the Shelveset name box, or click the ellipsis (…) button to search for the shelveset.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p&gt;If you want to put some pending changes from your workspace into a shelveset and then build those changes, click Create.&lt;/p&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Click Queue.&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1839983454120281677?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1839983454120281677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1839983454120281677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1839983454120281677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1839983454120281677'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/09/impress-your-colleagues-with-your.html' title='Impress your colleagues with your knowledge about… private builds'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-IHjlzV5fLrc/TmPD8220o-I/AAAAAAAAAUo/-Etobcl-mpc/s72-c/PrivateBuild_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1488937047261812011</id><published>2011-09-07T20:09:00.000+02:00</published><updated>2011-09-07T20:09:00.117+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Team Foundation Server Training Kit + TFS vNext</title><content type='html'>&lt;p&gt;Microsoft released a new version of the Team Foundation Server Training Kit.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“The Introduction to Team Foundation Server 2010 Training Kit includes presentations, hands-on labs and demos designed to help you get acquainted with the features of Team Foundation Server (TFS) 2010. This Training Kit contains several demos and hands-on labs that require some additional setup. For instructions, please see the Setup document.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Download available here: &lt;a title="http://www.microsoft.com/download/en/details.aspx?id=27152" href="http://www.microsoft.com/download/en/details.aspx?id=27152"&gt;http://www.microsoft.com/download/en/details.aspx?id=27152&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;And while you are looking at the current TFS features, also have a look at the following posts by Brian Harry about what’s coming in TFS vNext:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/08/02/version-control-model-enhancements-in-tfs-11.aspx"&gt;Workspace Enhancements&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/08/31/merge-enhancements-in-tfs-11.aspx"&gt;Merge Enhancements&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/09/01/wrapping-up-tfs-11-version-control-improvements.aspx"&gt;Version Control Enhancements&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1488937047261812011?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1488937047261812011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1488937047261812011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1488937047261812011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1488937047261812011'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/09/team-foundation-server-training-kit-tfs.html' title='Team Foundation Server Training Kit + TFS vNext'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-6500300887260812170</id><published>2011-09-06T18:00:00.000+02:00</published><updated>2011-09-09T23:20:10.558+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Library'/><title type='text'>Unity: Interception Call Handler called multiple times</title><content type='html'>For a project we are using Unity 2.0 interception with policy injection to create and manage our NHibernate session. Therefore we created a custom ICallHandler in combination with a HandlerAttribute.&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:c9ac9b8e-87eb-48ed-88c8-9de2cbc93ca1" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="c#" name="code"&gt;[AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;    public class NHibernateUnitOfWorkHandlerAttribute : HandlerAttribute&lt;br /&gt;    {&lt;br /&gt;        private bool _createTransaction;&lt;br /&gt;&lt;br /&gt;        public NHibernateUnitOfWorkHandlerAttribute(bool createTransaction=false)&lt;br /&gt;        {&lt;br /&gt;            _createTransaction = createTransaction;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public override ICallHandler CreateHandler(IUnityContainer container)&lt;br /&gt;        {&lt;br /&gt;            return new NHibernateUnitOfWorkHandler(Order,_createTransaction);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public class NHibernateUnitOfWorkHandler : ICallHandler&lt;br /&gt;    {&lt;br /&gt;        public NHibernateUnitOfWorkHandler(int order,bool createTransaction)&lt;br /&gt;        {&lt;br /&gt;            this.Order = order;&lt;br /&gt;            this.CreateTransaction = createTransaction;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)&lt;br /&gt;        {&lt;br /&gt;            IMethodReturn result=null;&lt;br /&gt;&lt;br /&gt;            try&lt;br /&gt;            {&lt;br /&gt;                using (var uow = DataFactory.CreateUnitOfWork(TransactionMode.Explicit))&lt;br /&gt;                {&lt;br /&gt;                    if (CreateTransaction)&lt;br /&gt;                    {&lt;br /&gt;                        using (var tx = uow.CreateTransaction())&lt;br /&gt;                        {&lt;br /&gt;                            result = getNext()(input, getNext);&lt;br /&gt;                            if (result.Exception == null)&lt;br /&gt;                                tx.Commit();&lt;br /&gt;                            else&lt;br /&gt;                                tx.Rollback();&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                    else&lt;br /&gt;                    {&lt;br /&gt;                        result = getNext()(input, getNext);&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            catch (Exception ex)&lt;br /&gt;            {&lt;br /&gt;                result = getNext()(input, getNext);&lt;br /&gt;                result.Exception = ex;&lt;br /&gt;            }&lt;br /&gt;            return result;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public int Order { get; set; }&lt;br /&gt;        public bool CreateTransaction { get; set; }&lt;br /&gt;    }&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Problem is, that this policy injection call handler executed twice when we expect that it only executes once. It took us some time to figure out what caused the problem. The reason was that the InterceptionExtension was registered twice:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;One time explicitly through registration by using the AddNewExtension&amp;lt;T&amp;gt; method on the Unity container.&lt;br /&gt;&amp;nbsp; &lt;/li&gt;&lt;li&gt;One time implicitly by registering the EnterpriseLibraryCoreExtension which also adds the Interception extension.&lt;/li&gt;&lt;/ul&gt;After removing the explicit registration everything worked fine. To further improve the solution we started to use the AddNewExtensionIfNotPresent&amp;lt;T&amp;gt; extension method which is available in the Enterprise Library Shared Assembly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-6500300887260812170?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/6500300887260812170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=6500300887260812170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6500300887260812170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/6500300887260812170'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/09/unity-interception-call-handler-called.html' title='Unity: Interception Call Handler called multiple times'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-573034277289998015</id><published>2011-09-05T17:48:00.000+02:00</published><updated>2011-09-05T17:48:00.258+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='WF'/><title type='text'>Windows Workflow Foundation Activity Pack for Windows Azure</title><content type='html'>&lt;p&gt;Last week Microsoft released the Workflow Foundation (WF) Activity Pack for Windows Azure. The package is also available via &lt;a href="http://nuget.org/List/Packages/WFAzureActivityPack"&gt;NuGet&lt;/a&gt;(Package name=WFAzureActivityPack) and through their &lt;a href="http://wf.codeplex.com/"&gt;CodePlex page&lt;/a&gt;.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“The WF Activity Pack for Windows Azure CTP 1 is the first community technology preview (CTP) release of Windows Azure activities implementation based on Windows Workflow Foundation in .NET Framework 4.0 (WF4) and Windows Azure SDK. The implementation contains a set of activities based on &lt;/em&gt;&lt;a href="http://www.microsoft.com/windowsazure/features/storage/"&gt;&lt;em&gt;Windows Azure Storage Service&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and &lt;/em&gt;&lt;a href="http://www.microsoft.com/windowsazure/features/caching/"&gt;&lt;em&gt;Windows Azure AppFabric Caching Service&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, which enables developers to easily access these Azure services within a workflow application.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The current release includes the following Workflow activities: &lt;/p&gt;  &lt;p&gt;&lt;b&gt;For Windows Azure Storage Service - Blob&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;PutBlob&lt;/b&gt; creates a new block blob, or replace an existing block blob. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;GetBlob&lt;/b&gt; downloads the binary content of a blob. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;DeleteBlob&lt;/b&gt; deletes a blob if it exists. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;CopyBlob&lt;/b&gt; copies a blob to a destination within the storage account. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;ListBlobs&lt;/b&gt; enumerates the list of blobs under the specified container or a hierarchical blob folder.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;For Windows Azure Storage Service - Table&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;InsertEntity&amp;lt;T&amp;gt;&lt;/b&gt; inserts a new entity into the specified table. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;QueryEntities&amp;lt;T&amp;gt;&lt;/b&gt; queries entities in a table according to the specified query options. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;UpdateEntity&amp;lt;T&amp;gt;&lt;/b&gt; updates an existing entity in a table. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;DeleteEntity&amp;lt;T&amp;gt;&lt;/b&gt; deletes an existing entity in a table using the specified entity object. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;DeleteEntity&lt;/b&gt; deletes an existing entity in a table using partition and row keys.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;For Windows Azure AppFabric Caching Service&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;AddCacheItem&lt;/b&gt; adds an object to the cache, or updates an existing object in the cache. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;GetCacheItem&lt;/b&gt; gets an object from the cache as well as its expiration time. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;RemoveCacheItem&lt;/b&gt; removes an object from the cache.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-573034277289998015?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/573034277289998015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=573034277289998015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/573034277289998015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/573034277289998015'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/09/windows-workflow-foundation-activity.html' title='Windows Workflow Foundation Activity Pack for Windows Azure'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-5570608398419463425</id><published>2011-09-02T15:03:00.000+02:00</published><updated>2011-09-02T15:03:00.408+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>TFS: Setting a default value for an iteration</title><content type='html'>&lt;p&gt;Last week I was trying to change the work item type definition so it will set a default value in the iteration path.&amp;#160; But when I tried importing it back with the TFS Power Tools, I always got the following error:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Error importing work item type definition:&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;TF26062:Rule '&amp;lt;DEFAULT from =&amp;quot;value&amp;quot; value=&amp;quot;283&amp;quot; /&amp;gt;' is not supported for the field 'System.IterationId'.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It seems like it is not possible to set a default value for the area or iteration path. In the end I solved this by creating a Work Item Template(part of the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f"&gt;TFS Power Tools&lt;/a&gt;) with a default value for Iteration Path. I really like this approach because I can change the value in the template when a new sprint starts.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/teams_wit_tools/WindowsLiveWriter/TFSPowerToolsReleaseWorkItemTemplatesBul_F00C/image_4.png"&gt;&lt;img border="0" alt="image" src="http://blogs.msdn.com/blogfiles/teams_wit_tools/WindowsLiveWriter/TFSPowerToolsReleaseWorkItemTemplatesBul_F00C/image_thumb_1.png" width="762" height="500" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;More about Work Item Templates and their usage:&lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/teams_wit_tools/archive/2007/10/12/tfs-power-tools-release-work-item-templates-advanced-tips.aspx"&gt;Work Item Templates: Advanced Tips&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/teams_wit_tools/archive/2007/10/05/tfs-power-tools-release-work-item-templates-bulk-edit.aspx"&gt;Work Item Templates: Bulk Edit&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-5570608398419463425?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/5570608398419463425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=5570608398419463425' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5570608398419463425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/5570608398419463425'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/09/tfs-setting-default-value-for-iteration.html' title='TFS: Setting a default value for an iteration'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-7601731770228768087</id><published>2011-09-01T14:10:00.000+02:00</published><updated>2011-09-01T14:10:00.232+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><title type='text'>JavaScript: Where to start?</title><content type='html'>&lt;p&gt;JavaScript, you love it or hate it. It’s ubiquitous, useful, powerful and at the same time clunky and confusing. But … there is no way around it.&amp;#160; Sooner or later you’ll have to (re)learn this language. So you can better start today. &lt;/p&gt;  &lt;h5&gt;Where to get started?&lt;/h5&gt;  &lt;p&gt;Forget all those bad JavaScript samples out there, instead have a look at&amp;#160; &lt;em&gt;&lt;a href="http://javascriptgarden.info/"&gt;JavaScript Garden&lt;/a&gt;&lt;/em&gt;, a site created by &lt;a href="http://stackoverflow.com/users/170224/ivo-wetzel"&gt;Ivo Wetzel&lt;/a&gt; and &lt;a href="http://stackoverflow.com/users/313758/yi-jiang"&gt;Zhang Yi Jiang&lt;/a&gt;. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;strong&gt;JavaScript Garden&lt;/strong&gt; is a growing collection of documentation about the most quirky parts of the JavaScript programming language. It gives advice to avoid common mistakes, subtle bugs, as well as performance issues and bad practices that non-expert JavaScript programmers may encounter on their endeavours into the depths of the language.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Add it to your bookmarks!&lt;/p&gt;  &lt;h4&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/h4&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-7601731770228768087?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/7601731770228768087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=7601731770228768087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7601731770228768087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/7601731770228768087'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/09/javascript-where-to-start.html' title='JavaScript: Where to start?'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-371045426465552668</id><published>2011-08-31T13:58:00.000+02:00</published><updated>2011-08-31T13:58:00.129+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><title type='text'>JavaScript: The good parts</title><content type='html'>&lt;p&gt;If there is one book about JavaScript I recommend reading, it’s &lt;a href="http://oreilly.com/catalog/9780596517748"&gt;JavaScript: The good parts&lt;/a&gt;. It was a real eye opener for me and brought back the love for this misused but beautiful language.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-IXzty09NEBI/TlotgVtmcEI/AAAAAAAAAUY/kJ7aaeWz3sk/s1600-h/cat%25255B1%25255D%25255B2%25255D.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="cat[1]" border="0" alt="cat[1]" src="http://lh6.ggpht.com/-Q29Gyogeggs/Tlotg-LwH0I/AAAAAAAAAUc/bFI7bqJWV5A/cat%25255B1%25255D_thumb.gif?imgmax=800" width="184" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I really like the book size, especially if you compare it with the full JavaScript reference book. It makes you wonder how much bad parts there are in JavaScript… &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Knipogende emoticon" src="http://lh6.ggpht.com/-NCxFOnwmCfs/TlothZWq6mI/AAAAAAAAAUg/VKk8uJB3MNc/wlEmoticon-winkingsmile%25255B2%25255D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://img.anongallery.org/img/2/0/javascript_the_good_parts.jpg" width="891" height="671" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-371045426465552668?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/371045426465552668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=371045426465552668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/371045426465552668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/371045426465552668'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/08/javascript-good-parts.html' title='JavaScript: The good parts'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-Q29Gyogeggs/Tlotg-LwH0I/AAAAAAAAAUc/bFI7bqJWV5A/s72-c/cat%25255B1%25255D_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1365038054590002549</id><published>2011-08-30T20:50:00.000+02:00</published><updated>2011-08-30T20:50:00.496+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><title type='text'>Error message in IIS 7.5: HTTP Error 401.2 – Unauthorized</title><content type='html'>&lt;p&gt;IIS is really great. But sometimes you get an error message without any clue how to fix it. When I was testing an ASP.NET MVC website on my Windows 7 64-bit machine, I got the following error:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;HTTP Error 401.2 – Unauthorized&lt;/p&gt;    &lt;p&gt;You are not authorized to view this page due to invalid authentication headers.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;After trying to change almost every possible setting in IIS I finally found the root cause of the issue. My default installation of IIS was running without the Windows Authentication module installed. As my website was expecting windows authentication, it was not unexpected to see this error. After enabling this feature in the list Windows Features, everything worked!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-hMPpiuUtilk/Tlk8b5WlGyI/AAAAAAAAAUQ/xebXUcrbOv0/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-Jh3OStnkDHM/Tlk8dLXPuYI/AAAAAAAAAUU/KHptZM5gbWY/image_thumb%25255B2%25255D.png?imgmax=800" width="631" height="638" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1365038054590002549?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1365038054590002549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1365038054590002549' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1365038054590002549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1365038054590002549'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/08/error-message-in-iis-75-http-error-4012.html' title='Error message in IIS 7.5: HTTP Error 401.2 – Unauthorized'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-Jh3OStnkDHM/Tlk8dLXPuYI/AAAAAAAAAUU/KHptZM5gbWY/s72-c/image_thumb%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-8698838180224576081</id><published>2011-08-29T20:03:00.000+02:00</published><updated>2011-08-29T20:03:00.196+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Web.config transform for all config files</title><content type='html'>&lt;p&gt;If you did some web development in .NET you probably know the web.config transform feature. This allows you to link config transforms to your web.config. For example if&amp;#160; you make a web.debug.config it can contain all the changes you want made specific for your debug environment. Unfortunately this feature is only supported for web.config files out-of-the-box. &lt;/p&gt;  &lt;p&gt;So what if you want to &lt;strong&gt;transform your app.configs, or any XML file? &lt;/strong&gt;&lt;a href="http://sedodream.com/2011/08/17/AppconfigTransformVisualStudioAddIn.aspx"&gt; &lt;strong&gt;Sayed Ibrahim Hashimi&lt;/strong&gt; and &lt;strong&gt;Chuck England&lt;/strong&gt; bring you the solution with this Visual&lt;/a&gt; Studio Extension called &lt;a href="http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5"&gt;&lt;strong&gt;SlowCheetah XML Transforms&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;An overview of the features:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Added tooling to desktop project to create XDT transforms &lt;/li&gt;    &lt;li&gt;Ability to transform      &lt;ul&gt;       &lt;li&gt;app.config for desktop projects based on build configuration &lt;/li&gt;        &lt;li&gt;any XML file to the output folder based on build configuration &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Added tooling to enable previewing XDT transforms &lt;/li&gt;    &lt;li&gt;For web projects you can easily transform other XML files during package/publish &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;img alt="" src="http://visualstudiogallery.msdn.microsoft.com/site/view/file/55954/1/Add-Transform01.png" width="343" height="237" /&gt;&lt;/p&gt;  &lt;p&gt;You can find more information at the following places:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/SlowCheetahWebconfigTransformationSyntaxNowGeneralizedForAnyXMLConfigurationFile.aspx?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+ScottHanselman+%28Scott+Hanselman+-+ComputerZen.com%29"&gt;Scott Hanselman’s post&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://sedodream.com/2011/08/17/AppconfigTransformVisualStudioAddIn.aspx"&gt;Sayed's post&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5"&gt;SlowCheetah project site&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-8698838180224576081?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/8698838180224576081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=8698838180224576081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8698838180224576081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/8698838180224576081'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/08/webconfig-transform-for-all-config.html' title='Web.config transform for all config files'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1882165764506799121.post-1256949832641957674</id><published>2011-08-26T14:45:00.000+02:00</published><updated>2011-08-26T14:45:00.770+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Windows Azure Pricing Update</title><content type='html'>&lt;p&gt;Beginning October 1, 2011, Microsoft will make two pricing related updates to the Windows Azure Platform. &lt;/p&gt;  &lt;p&gt;First, the price of extra small compute will be reduced by 20 percent. Additionally, the compute allocations for all of the offers will be simplified to small compute hours. Additionally, current Introductory Special offer customers and customers who sign up for this offer prior to October 1 will receive both 750 extra small compute hours and 750 small compute hours for the months of August and September. &lt;/p&gt;  &lt;p&gt;Details about this pricing update can be found at &lt;a title="http://blogs.msdn.com/b/windowsazure/archive/2011/08/15/announcing-simplified-data-transfer-billing-meters-and-swappable-compute-instancess.aspx" href="http://blogs.msdn.com/b/windowsazure/archive/2011/08/15/announcing-simplified-data-transfer-billing-meters-and-swappable-compute-instancess.aspx"&gt;http://blogs.msdn.com/b/windowsazure/archive/2011/08/15/announcing-simplified-data-transfer-billing-meters-and-swappable-compute-instancess.aspx&lt;/a&gt; and some extra comments at &lt;a title="http://www.zdnet.com/blog/microsoft/microsoft-to-cut-its-low-end-windows-azure-cloud-pricing/10343?tag=mantle_skin;content" href="http://www.zdnet.com/blog/microsoft/microsoft-to-cut-its-low-end-windows-azure-cloud-pricing/10343"&gt;http://www.zdnet.com/blog/microsoft/microsoft-to-cut-its-low-end-windows-azure-cloud-pricing/10343&lt;/a&gt;. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1882165764506799121-1256949832641957674?l=bartwullems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bartwullems.blogspot.com/feeds/1256949832641957674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1882165764506799121&amp;postID=1256949832641957674' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1256949832641957674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1882165764506799121/posts/default/1256949832641957674'/><link rel='alternate' type='text/html' href='http://bartwullems.blogspot.com/2011/08/windows-azure-pricing-update.html' title='Windows Azure Pricing Update'/><author><name>Bart Wullems</name><uri>http://www.blogger.com/profile/01355004851661662785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
