<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://bloggingabout.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>BloggingAbout.NET</title><link>http://bloggingabout.net/blogs/</link><description>Thoughts of developers</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Word 2013 not uploading images for blog posts</title><link>http://bloggingabout.net/blogs/dries/archive/2013/06/17/word-2013-not-uploading-images-for-blog-posts.aspx</link><pubDate>Mon, 17 Jun 2013 10:02:53 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578518</guid><dc:creator>Dries Marckmann</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt;"&gt;Apparently, Word 2013 is no longer uploading images to my blog. I will have to find out why… until I have a solution you&amp;#39;ll have to do without… 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt;"&gt;Sorry….&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578518" width="1" height="1"&gt;</description></item><item><title>Employers don’t need a recruiter</title><link>http://bloggingabout.net/blogs/dennis/archive/2013/06/14/employers-don-t-need-a-recruiter.aspx</link><pubDate>Fri, 14 Jun 2013 21:31:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578508</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;img title="recruiter" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:right;padding-top:0px;padding-left:0px;margin:0px 0px 0px 5px;border-left:0px;display:inline;padding-right:0px;" alt="recruiter" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/8764.recruiter_5F00_2E0D82CA.png" align="right" border="0" height="206" width="242" /&gt;How come that companies hire recruiters to find new developer employees for them? Apparently it&amp;rsquo;s either hard to find them, or they do not want to make the effort to find them their selves. If it&amp;rsquo;s the latter, it could be because the company is really, really small and they don&amp;rsquo;t have the resources. But in all other cases, maybe developers should start wondering if they want to work for such a company.&lt;/p&gt;
&lt;p&gt;But let&amp;rsquo;s get back to the first reason; let&amp;rsquo;s assume it&amp;rsquo;s hard to find new developers.&lt;/p&gt;
&lt;p&gt;Simply for this reason, employers are willing to pay immense amounts of money to recruiters, sometimes tens of thousands of dollars. But when you ask them how often their developers go to conferences, most of the time the answer is that every year only a few can go to the Microsoft TechDays.&lt;/p&gt;
&lt;p&gt;Some companies have 5 developers at work and send all of them to the Microsoft TechDays. How can a company with 100 developers employed, tell me without being ashamed that they only send 5 developers to the Microsoft TechDays. When asked, I was told that sending many developers costs a lot of money. But is it so wrong of me, to question their intention? Because if they have 20 times more developers, aren&amp;rsquo;t they making at least 20 times the money? So it&amp;rsquo;s obvious that TechDays will costs 20 times as much as well. In other words, it&amp;rsquo;s all relative and in the end, the company isn&amp;rsquo;t making more costs than the company with 5 developer employees.&lt;/p&gt;
&lt;p&gt;Of course I understand you cannot simply send 100% of your development department to a conference, all at the same time. Your customers will probably not accept that.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Invest in your employees&lt;/b&gt;    &lt;br /&gt;But what I cannot understand is that you&amp;rsquo;re willing to pay an insane amount of money to a recruiter, but you&amp;rsquo;re not willing to invest in your employees! What about the idea to send 50% of your developers to the Microsoft TechEd Europe every other year? That way every single developer will visit TechEd every other year, but there&amp;rsquo;s always 50% of your developers working at your customers. What do you think the result will be?&lt;/p&gt;
&lt;p align="center"&gt;&lt;img title="Build-banner" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" alt="Build-banner" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/3463.Build_2D00_banner_5F00_1675D557.png" border="0" height="168" width="799" /&gt;&lt;/p&gt;
&lt;p&gt;I know not every developer is like me, but I&amp;rsquo;d expect every great developer lining up at your doorstep, applying for a job at your company. Especially since you&amp;rsquo;re probably the first in The Netherlands to support your employees like that. You don&amp;rsquo;t need recruiters anymore and you can invest the money saved in your own employees.&lt;/p&gt;
&lt;p&gt;Want to know why Microsoft and Google have the best developers in the world? Because they provide their developers the best benefits that go around. Free lunch, great hardware, conferences and Google even has slides that end up in the restaurant. Today I read that every seat at the Google office is at most 150 feet of a restaurant or another place where their employees can get something to eat. Simply because that&amp;rsquo;s where the best discussions are being held and the best ideas are being produced.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Create an atmosphere people feel happy in, it&amp;rsquo;ll make them more productive     &lt;br /&gt;&lt;/b&gt;When you invest in your employees, it&amp;rsquo;s not only for them gaining knowledge. It&amp;rsquo;s also creating an atmosphere where people love to work. This will not cost you much, especially when you consider what it&amp;rsquo;ll cost to replace someone with the knowledge a developer has. Besides technical knowledge, they also have all the knowledge of the current system and especially of the business domain you&amp;rsquo;re working in. I once read that a very thorough research was done and that creative employees like developers cost around $50.000 to replace, taking everything into account. You can seriously cut down on costs by investing in your employees!&lt;/p&gt;
&lt;p&gt;Again, try to provide a great place to work at. Provide them with great hardware, some gadgets like a Surface RT/Pro tablet, etc. Free lunch works really, really great. And provide them the chance to go to a conference at the very least every other year! &lt;a href="http://bloggingabout.net/blogs/dennis/contact.aspx"&gt;Contact me&lt;/a&gt; if you&amp;rsquo;re willing to make me an offer! And I&amp;rsquo;m not kidding!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Additional information&lt;br /&gt;&lt;/b&gt;For Dutch readers, &lt;a href="https://www.facebook.com/dvdstelt/posts/10151633693882556"&gt;here&amp;#39;s another post on Facebook&lt;/a&gt; about recruiters. If you really need to hire a recruitment agency, I have a recommendation there as well... :-)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578508" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category></item><item><title>SDN Event June 14th</title><link>http://bloggingabout.net/blogs/dennis/archive/2013/06/14/sdn-event-june-14th.aspx</link><pubDate>Fri, 14 Jun 2013 20:46:30 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578505</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;For SDN Event of June 14th I did two presentations&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/8400.transactions_5F00_72215CCE.png"&gt;&lt;img title="transactions" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:right;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="transactions" align="right" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/5751.transactions_5F00_thumb_5F00_3ADAD593.png" width="203" height="152" /&gt;&lt;/a&gt;Transactions&lt;/strong&gt;&amp;#160; &lt;br /&gt;Why are transactions the bottleneck of so many applications? Why isn&amp;#39;t the database always consistent, even though we use transactions? This session explains why everything in a database is a transaction and how a developer should deal with them. Why your software complains that MSDTC isn&amp;#39;t running and how the CAP Theorem can help. After this session you&amp;#39;ll be able to explain to your DBA why he doesn&amp;#39;t understand transactions.      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://www.slideshare.net/DennisvanderStelt/transactions-22988855"&gt;Slidedeck here&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;I spoke about messaging, of which you can find more information here&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;&lt;a href="http://bloggingabout.net/blogs/dennis/archive/2012/04/25/what-is-messaging.aspx"&gt;What is messaging&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://bloggingabout.net/blogs/dennis/archive/2012/09/19/high-availability.aspx"&gt;High Availability&lt;/a&gt; (a good article on benefits of messaging)        &lt;br /&gt;        &lt;br /&gt;&lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;&lt;strong&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/0640.solid2_5F00_63E5748F.png"&gt;&lt;img title="solid2" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:right;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="solid2" align="right" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/8512.solid2_5F00_thumb_5F00_05D0D714.png" width="203" height="152" /&gt;&lt;/a&gt;SOLID Principles part 2&lt;/strong&gt;       &lt;br /&gt;Of the SOLID principles, made famous by Robert C. Martin, we&amp;#39;ll discuss the Interface Segregation Principle and the Dependency Inversion Principle. This session will explain them thoroughly and give real life examples instead of the regular customer &amp;amp; order examples. You&amp;#39;ll walk away knowing what the benefits are and how to use them properly.       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://www.slideshare.net/DennisvanderStelt/solid-principles-part-2"&gt;Slidedeck here&lt;/a&gt;      &lt;br /&gt;&lt;a href="http://bloggingabout.net/media/p/578504.aspx"&gt;Demo code&lt;/a&gt;      &lt;br /&gt;      &lt;br /&gt;During the presentation the implementation of the Factory was incorrect, as the objects instantiated weren’t done so using the Unity Container. This is fixed in this demo. The EmailMessageSender even uses an additional IResourceRepository to retrieve (faked) translations from the database.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;If you have questions, don’t hesitate to &lt;a href="http://bloggingabout.net/blogs/dennis/contact.aspx"&gt;contact me&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578505" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Development/default.aspx">Development</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/SDN/default.aspx">SDN</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category></item><item><title>Octopus deploy at Sound Of Data</title><link>http://bloggingabout.net/blogs/dries/archive/2013/06/11/octopus-deploy-at-sound-of-data.aspx</link><pubDate>Tue, 11 Jun 2013 08:22:35 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578500</guid><dc:creator>Dries Marckmann</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;
	&lt;/p&gt;&lt;p&gt;Two month ago I blogged Application Lifecycle Management (&lt;a href="http://bloggingabout.net/blogs/dries/archive/2013/03/21/sound-of-data.aspx"&gt;http://bloggingabout.net/blogs/dries/archive/2013/03/21/sound-of-data.aspx&lt;/a&gt;). I would have given regular updates on progress if it weren&amp;#39;t for an important project for a customer which got in the way. Or did it?
&lt;/p&gt;&lt;p&gt;We decided to use the project as a showcase of what can be achieved when Application Lifecycle Management is firmly in place. Here&amp;#39;s what we did. 
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Development &amp;amp; branching
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;To begin with we looked at the iterative development process and the branching strategy. We decided that we should keep the Main branch stable whatever it takes, so we developed every user story in a separate branch and merged these in a sprint branch. The main branch would remain untouched until such time as the sprint branch was considered stable. 
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Build &amp;amp; packaging
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;We also set up a fully automated build; three of them to be exact. One for continuous integration – with a failing build notification so that the entire team would know that the build was failing and could assist in fixing it – and one that creates some packages to be released on the sprint branch and another one that creates packages for the main branch. The packages were created as described in my blog post (&lt;a href="http://bloggingabout.net/blogs/dries/archive/2013/04/08/publishedapplications-sweetness-for-tfs-build.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://bloggingabout.net/blogs/dries/archive/2013/04/09/octopus-deploy-with-publishedapplications.aspx"&gt;here&lt;/a&gt;).
&lt;/p&gt;&lt;p&gt;The goal was ultimately that these packages would be installable on all environments (Devtest, Test, Acceptance and Production), but the sprint branch packages – the possibly unstable ones – should only be installable on DevTest. To do this we created 2 NuGet repositories (fileshares) that the build would publish to: the sprint branch would be published to our team repository and the main branch would be published to the release repository.
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Deployment
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;We decided to use Octopus Deploy for our automated deployment tool. We used the following setup to get a smooth deployment cycle. We created 2 environments, 2 project groups and 2 projects: one for the team and one for the real stuff. The team project (group) can only release to the team devtest environment and will release the sprint packages. The release packages that come from the main branch, can be published to Test, Acceptance and Production, the AppSettings that have different values between these environments are being changed by octopus using variables. Octopus does a really great job at this.
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Result
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;So what can we do now? We can deploy that product every time a build is finished. We do not do this automatically, because our tester, not surprisingly, does not enjoy having the devtest environment change during her tests. She&amp;#39;s basically in control; when she&amp;#39;s ready for a new test, she presses the button on the Octopus portal, a new version is deployed and she can start the next test round. (In practice we&amp;#39;re still pressing the button, but that&amp;#39;s an adoption issue…) When she gives the green light for the sprint branch, we merge into the main branch. We run the build and if it succeeds we can start to deploy to test where our tester does her thing again. We deploy to acceptance if all is still well. The same really holds true for deployment to production. 
&lt;/p&gt;&lt;p&gt;I overheard a colleague say: &amp;quot;Deployment has gotten from being really stressful, to being really boring; I am starting to annoy my colleagues with stupid jokes when releasing software…&amp;quot; Well, at least it is over very quickly&lt;span style="font-family:Wingdings;"&gt;J&lt;/span&gt;.
&lt;/p&gt;&lt;p&gt;From here, we now want to go and automate the deployment of all our products. We don&amp;#39;t just want to write software, we want our software to be used. 
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;Happy coding! And deploying, I guess…&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578500" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dries/archive/tags/OctopusDeploy/default.aspx">OctopusDeploy</category><category domain="http://bloggingabout.net/blogs/dries/archive/tags/ALM/default.aspx">ALM</category></item><item><title>BizTalk in the spotlights on TechEd NA</title><link>http://bloggingabout.net/blogs/jpsmit/archive/2013/06/07/biztalk-in-the-spotlights-on-teched-na.aspx</link><pubDate>Fri, 07 Jun 2013 21:09:55 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578479</guid><dc:creator>Jean-Paul Smit</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This week was &lt;a href="http://northamerica.msteched.com"&gt;TechEd North America&lt;/a&gt; week again. A great show with overview and deep dive sessions about almost every aspect of Microsoft technology. I went to the TechEd a couple of times when it was in Amsterdam and I felt like a kid in a candy store. :-)
&lt;/p&gt;&lt;p&gt;The last couple of years there was little attention for the integration stack of Microsoft at TechEd, SharePoint was hot and also Azure got lots of attention. This time integration was in the spotlights again and with reason. Microsoft took the first serious step towards integration in the cloud with BizTalk services and this is big! It is getting clearer that integration will be the key feature in tomorrow&amp;#39;s world of technology. On premise systems and SaaS platforms will need to exchange information like nothing before and the integration layer is going to be this intermediary like it has been for years, connecting on premise systems.
&lt;/p&gt;&lt;p&gt;Of course BizTalk Server will be around for the next decade. Microsoft has committed itself to a two-year release cycle, so the next version will probably be BizTalk Server 2015. However you need to keep an eye on the new &amp;#39;BizTalk-in-the-cloud&amp;#39; initiative called &lt;a href="http://www.windowsazure.com/en-us/services/biztalk-services/"&gt;Windows Azure BizTalk Services&lt;/a&gt; or WABS. It was silently tried out as EAI/EDI labs in April 2012, but it showed where we&amp;#39;re heading. Now the WABS are in preview and will be general available soon. At this time it is nowhere near what BizTalk Server offers, but this will change rapidly. Microsoft is on a release cycle of every quarter(!) for services which means they can and will add more BizTalk-Server-like functionality at a rapid pace. One of the extensions will be support for ESB in the cloud.
&lt;/p&gt;&lt;p&gt;BizTalk Server is an enterprise level, business critical product which will be around for a long time, because companies will need an integration layer on premise. However while BizTalk Services is catching up the functionality of the on premise version of BizTalk at the moment, I expect this to be the other way around in two year. From 2015 on you&amp;#39;ll see innovation in BizTalk Services that won&amp;#39;t be available in the on premise server version until the next release. Will customer wait for 2 years to get access to new features? With that in mind it will be more and more interesting and important for companies to seriously look at WABS.
&lt;/p&gt;&lt;p&gt;If you want to keep up with BizTalk, you can start by watching these interesting BizTalk sessions from TechEd:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/WAD-B312"&gt;Microsoft Integration Vision and Roadmap (300)&lt;/a&gt;
		&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/WAD-B361"&gt;Introducing Microsoft BizTalk Server 2013 (300)&lt;/a&gt;
		&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/WAD-B313"&gt;Introduction to Windows Azure BizTalk Services (300)&lt;/a&gt;
		&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/WAD-B343"&gt;B2B Collaboration on Windows Azure (300)&lt;/a&gt;
		&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/WAD-B314"&gt;Microsoft BizTalk Server 2013 in Windows Azure IaaS (300)&lt;/a&gt;
		&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/WAD-B405"&gt;Developing Hybrid Solutions with Microsoft BizTalk Server 2013 and Windows Azure (400)&lt;/a&gt;
		&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/WAD-B315"&gt;Extending Windows Azure BizTalk Services (300)&lt;/a&gt;
		&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.didago.nl/"&gt;Didago IT Consultancy&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578479" width="1" height="1"&gt;</description></item><item><title>Announcing Simple.OData.Client NuGet package for Mono iOS/Android</title><link>http://bloggingabout.net/blogs/vagif/archive/2013/05/09/announcing-simple-odata-client-nuget-package-for-mono-ios-android.aspx</link><pubDate>Thu, 09 May 2013 10:28:23 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578465</guid><dc:creator>Vagif Abilov</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Release of NuGet 2.5 opens possibilities for targeting Mono iOS/Android platform. The Simple.OData.Client that I maintain is a portable class library, so it was natural step to extend the number of supported frameworks with Xamarin Mono offerings. But as it often happens, I hit a few problems before I could publish the &lt;a href="https://www.nuget.org/packages/Simple.OData.Client/"&gt;updated package (version 0.15)&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;One problem I had to deal with was forwarding of the types that are packaged differently in Windows and .NET. Luckily, this problem was addressed earlier by other people, so big thanks to Stuart Lodge (@slodge) and Daniel Plastied (@dsplaisted) for investigating this topic and describing workarounds. Those interested in more details should read &lt;a href="http://stackoverflow.com/questions/13028321/portable-class-library-strong-assembly-reference-problems-in-monotouch-monodroid"&gt;this article at StackOverflow&lt;/a&gt;. I am now using the same approach that Stuart implemented in MvvmCross, and here is how the file sets for Mono platforms look:&lt;/p&gt;  &lt;pre&gt;&amp;lt;!—Droid –&amp;gt;
&amp;lt;file src=&amp;quot;Simple.OData.Client.Core\bin\Release\Simple.OData.Client.Core.dll&amp;quot; 
      target=&amp;quot;lib\MonoAndroid16\Simple.OData.Client.Core.dll&amp;quot; /&amp;gt;
&amp;lt;file src=&amp;quot;lib\Droid\System.Net.dll&amp;quot; target=&amp;quot;lib\MonoAndroid16\System.Net.dll&amp;quot; /&amp;gt;

&amp;lt;!-- Touch –&amp;gt;
&amp;lt;file src=&amp;quot;Simple.OData.Client.Core\bin\Release\Simple.OData.Client.Core.dll&amp;quot; 
      target=&amp;quot;lib\MonoTouch40\Simple.OData.Client.Core.dll&amp;quot; /&amp;gt;
&amp;lt;file src=&amp;quot;lib\Touch\System.Net.dll&amp;quot; target=&amp;quot;lib\MonoTouch40\System.Net.dll&amp;quot; /&amp;gt;&lt;/pre&gt;

&lt;p&gt;Next challenge came from a couple of places in my code where I was using async/await pattern. Since Simple.OData.Client is targeting wide range of platforms including .NET 4.x and Silverlight, I installed Microsoft.Bcl.Async NuGet package that enabled use of async/await keywords when targeting legacy platforms. However, for the time being the files from this package can not be deployed on iOS and Android devices (legal reasons), and Xamarin async/await support is a work in progress. After struggling for a few days with various async issues (only compile-time issues, I haven’t had a single runtime problem with asynchronous operations), I reviewed the code and figured out that it’s so few places where I was using await, that I can rewrite this code replacing await with TPL API almost in no time. So now Simple.OData.Client does not bear any dependency on Microsoft.Bcl.Async.&lt;/p&gt;

&lt;p&gt;Finally, I had to write new tests to verify functionality on new platforms. I used an &lt;a href="https://bitbucket.org/mayastudios/monodroid-unittest/wiki/Home"&gt;excellent little helper library MonoDroidUnitTest&lt;/a&gt; for Android tests, and for iOS there was a Unit Test project template in Xamarin tools. Since I don’t have Mac, I signed in to &lt;a href="https://www.macincloud.com/"&gt;MacInCloud&lt;/a&gt; to test using iOS simulator. It kind of works, but the performance is sluggish so I don’t think this is a good alternative for a serious iOS development (but OK for occasional validation). It was easier with Android – I could simply start a Droid simulator, loaded an app with a few tests, and in a few seconds (well, actually minutes) I could see the following picture:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vagif.metablogapi/1738.Android2_5F00_2DB7F030.png"&gt;&lt;img title="Android2" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="Android2" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vagif.metablogapi/7674.Android2_5F00_thumb_5F00_70B3BE9D.png" width="844" height="560" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;So in case you are doing OData development and need a library that you can use on multiple platforms, have a look at Simple.OData.Client. Now with Mono support.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578465" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/OData/default.aspx">OData</category><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/portable+class+libraries/default.aspx">portable class libraries</category><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/Simple.OData.Client/default.aspx">Simple.OData.Client</category><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/Xamarin/default.aspx">Xamarin</category><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/Android/default.aspx">Android</category><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/iOS/default.aspx">iOS</category><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/Mono/default.aspx">Mono</category></item><item><title>BizTalk –Unit Testing Enabled in Release mode?</title><link>http://bloggingabout.net/blogs/jpsmit/archive/2013/05/06/biztalk-unit-testing-enabled-in-release-mode.aspx</link><pubDate>Mon, 06 May 2013 21:32:12 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578464</guid><dc:creator>Jean-Paul Smit</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Today I ran into something which took me too much time to figure out, so this blog post is to avoid others to waste their time. In the end the solution was pretty simple, although not very obvious.
&lt;/p&gt;&lt;p&gt;I&amp;#39;m working on a project which consists of 15 BizTalk applications. These applications are deployed using the BizTalk Deployment Framework. I tested the deployments on my development environment and everything worked as expected.
&lt;/p&gt;&lt;p&gt;When I deployed it to the test environment, I experienced an issue with just one of the applications. It mentioned a missing dependency: Microsoft.BizTalk.TestTools.
&lt;/p&gt;&lt;p&gt;This is the assembly that is added as a reference to your Visual Studio project when you enable unit testing in the project properties (&lt;a href="http://msdn.microsoft.com/en-us/library/dd257907(v=bts.10).aspx)"&gt;http://msdn.microsoft.com/en-us/library/dd257907(v=bts.10).aspx)&lt;/a&gt;. I always thought this was bound to building the solution in Debug mode and since the BizTalk Deployment Framework builds everything in Release mode, the reference should have been dropped.
&lt;/p&gt;&lt;p&gt;Why did this only show up at this particular project?
&lt;/p&gt;&lt;p&gt;I checked the assembly with ILSpy and found out the reference to Microsoft.BizTalk.TestTools actually was there, while it was built in Release mode. The first thing I did was checking the configuration manager, to make sure the Test project was left out in Release mode, but this was already the case.
&lt;/p&gt;&lt;p&gt;Finally I found out that if you pull up the project properties, the settings are dependent on the Debug or Release mode you&amp;#39;ve selected. So it appeared that I accidentally enabled unit testing while the configuration was in Release mode. When I disabled it for Release, leaving it enabled for Debug, everything deployed fine.
&lt;/p&gt;&lt;p&gt;It is good to know not all debug and test related settings are only bound to Debug builds, so be aware they might show up in your Release build.
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.didago.nl" target="_blank"&gt;Didago IT Consultancy&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578464" width="1" height="1"&gt;</description></item><item><title>Cross-platform design-time view models using portable class libraries</title><link>http://bloggingabout.net/blogs/vagif/archive/2013/04/28/cross-platform-design-time-view-models-using-portable-class-libraries.aspx</link><pubDate>Sun, 28 Apr 2013 20:41:37 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578443</guid><dc:creator>Vagif Abilov</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Stuart Lodge is working on a &lt;a href="http://slodge.blogspot.co.uk"&gt;fantastic series of videos and blog posts&lt;/a&gt; showing how to build cross-platform mobile applications with MvvmCross. One of his tips is about &lt;a href="http://slodge.blogspot.co.uk/2013/04/adding-kittens-to-blends-design-time.html"&gt;exposing design-time data&lt;/a&gt;. His method is straightforward and efficient, but in case you don’t want to copy sample files to a location inside Windows Program Files folder, you may consider other alternatives, such as storing design-time information as project content files or embeding it into an assembly.&lt;/p&gt;  &lt;p&gt;This task becomes more complicated in case you want to show some images at design-time, and BitmapImage class is not part of portable class libraries. I used to solve it by representing view model image properties using opaque &lt;strong&gt;object&lt;/strong&gt; class and setting its values in platform-specific part of the view models. The unfortunate consequence of this approach was declaring a view model per platform serving design-time purposes. The platform view models inherited from a common portable view model and only added a tiny bit of non-portable logic – like reading image resources. Here is how I used to show design-time data in my ODataPad application:&lt;/p&gt;  &lt;pre class="brush: csharp;"&gt;public class ServiceViewModel 
{ 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public string Url { get; set; } 
    public object Image { get; set; } 
} 

public class WinRTDesignHomeViewModel : DesignHomeViewModel 
{ 
    public WinRTDesignHomeViewModel() 
    { 
        foreach (var service in this.Services) 
        { 
            service.Image = new BitmapImage(
                new Uri(&amp;quot;ms-appx:///Samples/&amp;quot; + service.Name + &amp;quot;.png&amp;quot;)); 
        } 
    } 
} 

public class Net45DesignHomeViewModel : DesignHomeViewModel 
{ 
    public Net45DesignHomeViewModel() 
    { 
        foreach (var service in this.Services) 
        { 
            service.Image = new BitmapImage(
                new Uri(@&amp;quot;pack://application:,,,/ODataPad.UI.Net45;component/Samples/&amp;quot; + service.Name + &amp;quot;.png&amp;quot;)); 
        } 
    } 
}&lt;/pre&gt;
XAML files for Windows Store and WPF applications included Image element with binding to an Image property of &lt;strong&gt;ServiceViewModel&lt;/strong&gt;. 

&lt;pre class="brush: xml;"&gt;&amp;lt;Image Source=&amp;quot;{Binding Image}&amp;quot; Stretch=&amp;quot;UniformToFill&amp;quot; /&amp;gt;&lt;/pre&gt;

&lt;p&gt;Here are the screenshots of design-time views:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vagif.metablogapi/2845.ODataPadWinRT_5F00_10A157EE.png"&gt;&lt;img title="ODataPadWinRT" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="ODataPadWinRT" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vagif.metablogapi/8168.ODataPadWinRT_5F00_thumb_5F00_083D8297.png" width="822" height="441" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vagif.metablogapi/3364.ODataPadNet45_5F00_2780296A.png"&gt;&lt;img title="ODataPadNet45" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="ODataPadNet45" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vagif.metablogapi/8764.ODataPadNet45_5F00_thumb_5F00_26A7C380.png" width="823" height="448" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vagif.metablogapi/1323.ODataPadWP8_5F00_73D7BD0B.png"&gt;&lt;img title="ODataPadWP8" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="ODataPadWP8" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vagif.metablogapi/0827.ODataPadWP8_5F00_thumb_5F00_6B07B4BF.png" width="822" height="458" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This method works but as I already pointed out, it feels heavy because each design-time data set is backed with its own design-time view model – due to non-portability of image .NET types and image management methods.&lt;/p&gt;

&lt;p&gt;But there is another way – storing image properties using portable data types, and what can be more portable than a standard string? Enter base64 strings.&lt;/p&gt;

&lt;p&gt;Here’s a revised &lt;strong&gt;ServiceViewModel&lt;/strong&gt; class with image data stored as strings:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;public class ServiceViewModel 
{ 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public string Url { get; set; } 
    public string ImageBase64 { get; set; } 
}&lt;/pre&gt;

&lt;p&gt;We no longer need &lt;strong&gt;WinRTDesignHomeViewModel&lt;/strong&gt;&amp;#160; and &lt;strong&gt;Net45DesignHomeViewModel&lt;/strong&gt; classes. Instead we will store all design-time information in a portable class library as an embedded resource. Not that &lt;strong&gt;Assembly.GetManifestResourceStream&lt;/strong&gt; method is part of most of portable class libraries profiles, so we can share the following PCL code between all platforms:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;public DesignHomeViewModel()
{
    IEnumerable services = null;
    var namespaceName = typeof(DesignHomeViewModel).Namespace;

    var stream = typeof (DesignHomeViewModel).Assembly
        .GetManifestResourceStream(string.Join(&amp;quot;.&amp;quot;, namespaceName, &amp;quot;SampleServices.xml&amp;quot;));
    using (var reader = new StreamReader(stream))
    {
        this.Services = SamplesService.ParseSamplesXml(reader.ReadToEnd());
    }
}&lt;/pre&gt;

&lt;p&gt;Wait, but that can’t be sufficient – our XAML views contain &lt;strong&gt;Image&lt;/strong&gt; elements, we can’t just throw base64 strings at them. Well, almost: it’s all about converters.&lt;/p&gt;

&lt;p&gt;Here’s revised XAML code:&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;Image Source=&amp;quot;{Binding ImageBase64, Converter={StaticResource Base64ToImage}}&amp;quot; Stretch=&amp;quot;UniformToFill&amp;quot;/&amp;gt;&lt;/pre&gt;
And these are converers for Windows Store, WPF and Windows Phone applications: 

&lt;pre class="brush: csharp;"&gt;namespace ODataPad.UI.WinRT.Common
{
    public sealed class Base64ImageConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            return ConvertAsync(value, targetType, parameter, language).Result;
        }

        public object ConvertBack(object value, Type targetType, object parameter, string language)
        {
            return null;
        }

        public async Task ConvertAsync(object value, Type targetType, object parameter, string language)
        {
            var image = new BitmapImage();

            if (value != null)
            {
                var bytes = System.Convert.FromBase64String((string)value);

                var ras = new InMemoryRandomAccessStream();
                using (var writer = new DataWriter(ras.GetOutputStreamAt(0)))
                {
                    writer.WriteBytes(bytes);
                    await writer.StoreAsync();
                }

                image.SetSource(ras);
            }
            return image;
        }
    }
}

namespace ODataPad.UI.Net45.Common
{
    public class Base64ImageConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var image = new BitmapImage();
            if (value != null)
            {
                var bytes = System.Convert.FromBase64String((string)value);

                image.BeginInit();
                image.StreamSource = new MemoryStream(bytes);
                image.EndInit();
            }
            return image;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return null;
        }
    }
}

namespace ODataPad.UI.WP8.Common
{
    public class Base64ImageConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var image = new BitmapImage();
            if (value != null)
            {
                var bytes = System.Convert.FromBase64String((string)value);
                image.SetSource(new MemoryStream(bytes));
            }
            return image;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return null;
        }
    }
}&lt;/pre&gt;

&lt;p&gt;Now all my design-time data are stored in a single portable class library and I display them using a single view model also declared in a PCL. All platform-specific data such as images are stored as strings and only converted to bitmaps when rendering views using value converters.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578443" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/OData/default.aspx">OData</category><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/portable+class+libraries/default.aspx">portable class libraries</category><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/XAML/default.aspx">XAML</category><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/design-time/default.aspx">design-time</category><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/view+models/default.aspx">view models</category><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/ODataPad/default.aspx">ODataPad</category><category domain="http://bloggingabout.net/blogs/vagif/archive/tags/MvvmCross/default.aspx">MvvmCross</category></item><item><title>[Update] Moving BloggingAbout.NET</title><link>http://bloggingabout.net/blogs/dennis/archive/2013/04/22/moving-bloggingabout-net.aspx</link><pubDate>Mon, 22 Apr 2013 12:15:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578434</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;It&amp;rsquo;s kind of sudden, but we are moving BloggingAbout.NET to a new datacenter. I&amp;rsquo;m behind my desk now, but getting ready go move it right now.&lt;/p&gt;
&lt;p&gt;Hope you get this message before it&amp;rsquo;s down! ;-)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;We were migrated to the new datacenter without any loss or problems. The only problem might be logging in to the website. If you experience problems with it, remove all cookies related to BloggingAbout.NET and you should be fine.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578434" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/BloggingAbout.NET/default.aspx">BloggingAbout.NET</category></item><item><title>The comparison between software development and construction fails</title><link>http://bloggingabout.net/blogs/dennis/archive/2013/04/20/the-comparison-between-software-development-and-construction-fails.aspx</link><pubDate>Sat, 20 Apr 2013 19:57:26 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578430</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;We’ve all seen the comparison between development work and constructing buildings. I think the comparison is fundamentally flawed. There are numerous posts out in the world that confirm this. Random Google articles are &lt;a href="http://wordaligned.org/articles/why-software-development-isnt-like-construction"&gt;here&lt;/a&gt;, &lt;a href="http://www.kuro5hin.org/story/2003/3/13/211831/159"&gt;here&lt;/a&gt; and &lt;a href="http://stackoverflow.com/questions/1241912/whats-wrong-with-the-analogy-between-software-and-building-construction"&gt;here&lt;/a&gt;. I like the last one on Stackoverflow, because the writer is quite cynical when answering the question why they differ.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/7534.connections_5F00_469D6B31.jpg"&gt;&lt;img title="connections" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:right;padding-top:0px;padding-left:0px;margin:0px 0px 0px 5px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="connections" align="right" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/4834.connections_5F00_thumb_5F00_7CA1EA3E.jpg" width="242" height="182" /&gt;&lt;/a&gt;They [customers] can&amp;#39;t take delivery of your finished underground carpark and ask you to add an airport (also underground). &lt;/li&gt;    &lt;li&gt;They aren&amp;#39;t allowed to change the law of gravity after you finish the design. Or expect the building to work on another planet. &lt;/li&gt;    &lt;li&gt;They don&amp;#39;t blame the architect when they can&amp;#39;t get an 18 wheeler delivery truck through reception, into the elevator and to the loading dock that they demanded be on the 24th floor. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The reason I write this post however, is because I found another analogy. In my family there are a lot of people actually working in construction. I benefit greatly from it, because it’s one of those areas I severely lack the skills in. However at some point in time, a family member was working in his own house and needed to replace some electrical wires. I did some of this in my own house and was asked to help out. I was quite happy with that, because now I could return the favor of him helping me out all the time.&lt;/p&gt;  &lt;p&gt;And when wiring up all those wires, it suddenly dawned to me. This is like developing software. Connecting these wires is just about coupling and making the right decisions on what goes where. And that’s what I do all day. Coupling lines of code, methods, classes, components, services, etc, etc. The reason I think I’m better at it than my family member is because I’m good in seeing the bigger picture, the helicopter view if you will, of everything that is connecting to one another. I know which parts to focus on and which parts I don’t need immediate details of.&lt;/p&gt;  &lt;p&gt;However in software development, there are many times more connections. Probably comparable to a network of electrical wires through an entire football stadium. The system I’m currently working on is becoming so large and complex, that after about 6 years of development –in comparison- it could spawn an entire city of electrical wires. Just imagine the complexity for a small group of developers this can bring.&lt;/p&gt;  &lt;p&gt;Another important difference with the regular electrical wires, is that software development is a very creative process. Although you (can) have a plan, an architecture, design and great developers, it’s not constructing a new building with the patterns and ways you used to build the previous building with. It’s more or less like how a painter, a real artist, would create a painting. Like &lt;a href="https://www.google.nl/search?q=rembrandt"&gt;Rembrand&lt;/a&gt; or &lt;a href="https://www.google.nl/search?q=vincent+van+gogh"&gt;Van Gogh&lt;/a&gt; would paint a painting. Unfortunately there are also a lot of developers that don’t come near the skills that a proper painter has, which can even be a recipe for disaster. One of the reasons why projects go over time and budget so often. But that’s something for another blogpost.&lt;/p&gt;    &lt;p&gt;&lt;img style="float:right;margin:0px 0px 0px 5px;display:inline;" align="right" src="http://bs2h.com/wp-content/uploads/2012/11/attarctive-game-in-google-office.jpg" width="263" height="197" alt="" /&gt;I recently spoke with another company and they were pretty proud about the fact that they had sent 5 developers to the &lt;a href="http://www.microsoft.com/netherlands/techdays/Home.aspx"&gt;Microsoft TechDays&lt;/a&gt;. Of about 100 developers they only sent 5! Claiming that sending everyone is too expensive. If a company of 5 can send 5, which is 100%, why can this company only send 5% of their employees? I wrote this blog post because I have the feeling a lot of employers do not appreciate the creativity of their ‘artist’ employees. They do not understand the complexity and challenges that come with the territory that is software development. I think a company like Google does understand. Every office that houses their software developers, contain great perks like free lunch, sleeping pods, slides into the cantina, thinking rooms with only the light of aquaria, etc, etc. That is why they have some of the best developers in the world!&lt;/p&gt;  &lt;p&gt;So besides explaining my analogy, this post is to make employers understand how valuable their software developers are. Good developers spend a large amount of private time (at home) to improve their skills. This reflects immediately back on their skills at work. Return the favor by showing you appreciate them. Return the favor and investing in them as well.&lt;/p&gt;  &lt;p&gt;Thank you.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578430" width="1" height="1"&gt;</description></item><item><title>BizTalk 2010: Deploying and Undeploying EDI Parties with the BizTalk Deployment Framework</title><link>http://bloggingabout.net/blogs/jpsmit/archive/2013/04/19/biztalk-2010-deploying-and-undeploying-edi-parties-with-the-biztalk-deployment-framework.aspx</link><pubDate>Fri, 19 Apr 2013 19:56:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578429</guid><dc:creator>Jean-Paul Smit</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I&amp;#39;m a big fan of the BizTalk deployment framework, because it makes deployment so easy, repeatable and reliable because it automates a lot of manual actions. &lt;/p&gt;
&lt;p&gt;In my current project I&amp;#39;m working with EDI, so I also have to work with parties and agreements. Of course I wanted to embed this in the deployment framework. &lt;/p&gt;
&lt;p&gt;Deploying is pretty easy, because the party and agreement information is part of the binding. &lt;/p&gt;
&lt;p&gt;But if an application with party and agreement information already has been deployed, how do you undeploy this? Especially because you cannot delete an application if the party information still is there. If you try to do this, you&amp;#39;ll run into this cryptic error: &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img src="http://www.didago.nl/media/default/blog/edi/edi_error.png" border="0" style="max-width:550px;" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;It is trying to say you cannot delete the application as long as the party information is present&amp;hellip;.. &lt;/p&gt;
&lt;p&gt;After some research I found out how to automate this and I decided to dedicate a blog post to it. Also because other people had the same question, see &lt;a href="http://biztalkdeployment.codeplex.com/discussions/256406"&gt;http://biztalkdeployment.codeplex.com/discussions/256406&lt;/a&gt; and &lt;a href="http://biztalkdeployment.codeplex.com/discussions/275140"&gt;http://biztalkdeployment.codeplex.com/discussions/275140&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Fortunately there is a tool in the SDK capable of deleting parties, which can be found at this location in the BizTalk install folder: &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;C:\Program Files (x86)\Microsoft BizTalk Server 2010\SDK\Samples\Admin\ExplorerOM\DeleteParty &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Like almost any admin tool it is utilizing the BizTalk Explorer object model (ExplorerOM) to do the trick. You won&amp;#39;t find the exe there. It is an uncompiled project and that gives you the opportunity to adjust the implementation to your needs. This is necessary because the tool needs to access the BizTalkMgmtDB and assumes it is installed on the server running the tool. On a production environment this often isn&amp;#39;t the case and since this tool is part of deploy/undeploy it will run on the BizTalk server. Another improvement I made is to let the tool undeploy multiple parties in one call, something the out-of-the box implementation also isn&amp;#39;t capable of. &lt;/p&gt;
&lt;p&gt;So after the mentioned changes, my code looks like this and I can build the solution to create the DeleteParty.exe tool. &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Windows.Forms; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.BizTalk.ExplorerOM; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt; Microsoft.Samples.BizTalk.ExplorerOM.DeleteParty &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:gray;"&gt;///&lt;span style="color:green;"&gt; &lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:gray;"&gt;///&lt;span style="color:green;"&gt; DeletePartyClass is the wapper class for the Main function.&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:gray;"&gt;///&lt;span style="color:green;"&gt; &lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DeletePartyClass&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:gray;"&gt;///&lt;span style="color:green;"&gt; &lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:gray;"&gt;///&lt;span style="color:green;"&gt; The main entry point for the application.&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:gray;"&gt;///&lt;span style="color:green;"&gt; The only argument should be the name of the party to delete.&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:gray;"&gt;///&lt;span style="color:green;"&gt; &lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;[&lt;span style="color:#2b91af;"&gt;STAThread&lt;/span&gt;] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] args) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:green;"&gt;// Handle the command-line arguments and switches&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (args.Length != 2) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;PrintUsage(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt;; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; ((&lt;span style="color:#a31515;"&gt;&amp;quot;/?&amp;quot;&lt;/span&gt; == args[0]) || (&lt;span style="color:#a31515;"&gt;&amp;quot;-?&amp;quot;&lt;/span&gt; == args[0])) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;PrintUsage(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt;; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:green;"&gt;// Create the root object and set the connection string&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;BtsCatalogExplorer&lt;/span&gt; catalog = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;BtsCatalogExplorer&lt;/span&gt;(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;catalog.ConnectionString = &lt;span style="color:blue;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#a31515;"&gt;&amp;quot;SERVER={0};DATABASE={1};Integrated Security=SSPI&amp;quot;&lt;/span&gt;, args[0], &lt;span style="color:#a31515;"&gt;&amp;quot;BizTalkMgmtDB&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;try&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:green;"&gt;// Split the party information, we might need to remove multiple&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] parties = args[1].Split(&lt;span style="color:#a31515;"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue;"&gt;string&lt;/span&gt; pty &lt;span style="color:blue;"&gt;in&lt;/span&gt; parties) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:green;"&gt;// Get the requested party from the collection&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Party&lt;/span&gt; party = catalog.Parties[pty]; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:blue;"&gt;null&lt;/span&gt; == party) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Party named &amp;quot;&lt;/span&gt; + pty + &lt;span style="color:#a31515;"&gt;&amp;quot; was not found.&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;continue&lt;/span&gt;; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Deleting party: &amp;quot;&lt;/span&gt; + party.Name); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:green;"&gt;// Remove the party&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;catalog.RemoveParty(party); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:green;"&gt;// commit the changes&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;catalog.SaveChanges(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Party deleted.&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;ConstraintException&lt;/span&gt; ce) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:green;"&gt;// Any changes need to be reverted&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:green;"&gt;// when there is an error&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;catalog.DiscardChanges(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:green;"&gt;// Since this is a common configuration exception&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:green;"&gt;// we don&amp;#39;t need a stack trace&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(ce.Message); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt; e) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:green;"&gt;// Any changes need to be reverted&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:green;"&gt;// when there is an error&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;catalog.DiscardChanges(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(e.ToString()); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; PrintUsage() &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Usage:&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;DeleteParty.exe &amp;lt;BizTalkDbServer&amp;gt; &amp;lt;PartyName&amp;gt;&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot; Where: &amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot; &amp;lt;BizTalkDbServer&amp;gt; = The name of the SQL Server where the BizTalk databases are installed.&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot; Example: localhost&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot; &amp;lt;Party Name&amp;gt; = The name of the Party(s) to delete. To delete more than one use , to separate (no space between parties!)&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot; Example: MyBusinessParty1,MyBusinessParty2&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Next step is adding the DeleteParty.exe to your solution, so it will be copied to the deployment folder. First add the tool to your solution folder where the other deployment framework files are located. Then add the lines below to&amp;nbsp;your BTDFPROJ file so it will be copied and executed as part of the undeployment. &lt;/p&gt;
&lt;p&gt;&lt;span style="color:blue;font-family:Consolas;font-size:9pt;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;
&lt;p&gt;&amp;lt;!--&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;AdditionalFiles&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#ff0000;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#ff0000;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#ff0000;"&gt;Include&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;DeleteParty.exe&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&amp;gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt; &lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;LocationPath&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#000000;"&gt;.\&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;LocationPath&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&amp;gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt; &lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp; &amp;lt;/&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;AdditionalFiles&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&amp;gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt; &lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;lt;/&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;ItemGroup&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&amp;gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt; &lt;span style="color:blue;font-family:Consolas;font-size:9pt;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;font-family:Consolas;font-size:9pt;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;font-family:Consolas;font-size:9pt;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#008000;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#008000;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#008000;"&gt;Make sure the DeleteParty SDK tool is also deployed, otherwise we cannot undeploy the app anymore because of the stuck party information &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;--&amp;gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt; &lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;lt;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;font face="Consolas" size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#a31515;"&gt;ItemGroup&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&amp;gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;color:#0000ff;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;!--&lt;span style="color:green;"&gt; Custom undeploy to first delete the party information before being able to remove the application &lt;span style="color:blue;"&gt;--&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="color:blue;font-family:Consolas;font-size:9pt;"&gt;&amp;lt;&lt;span style="color:#a31515;"&gt;Target&lt;span style="color:blue;"&gt; &lt;span style="color:red;"&gt;Name&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;CustomUnDeployTarget&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:blue;font-family:Consolas;font-size:9pt;"&gt;&amp;lt;&lt;span style="color:#a31515;"&gt;Exec&lt;span style="color:blue;"&gt; &lt;span style="color:red;"&gt;Command&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;..\DeleteParty.exe $(DeleteParty_BizTalkDbServer) $(DeleteParty_PartyName)&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;span style="color:red;"&gt;ContinueOnError&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;False&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:blue;font-family:Consolas;font-size:9pt;"&gt;&amp;lt;/&lt;span style="color:#a31515;"&gt;Target&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As you can see, I&amp;#39;ve added two variables (&amp;#39;DeleteParty_BizTalkDbServer&amp;#39; and &amp;#39;DeletePart_PartyName&amp;#39;) to the command line to be able to run this on various environments. For example the &amp;#39;BizTalkDbServer&amp;#39; won&amp;#39;t be the same on all environments. Add the section below somewhere between the other &amp;#39;ItemGroups&amp;#39; in the BTDFPROJ file, so the variables will be read from the settings file and be available in the script. &lt;/p&gt;
&lt;p&gt;&lt;span style="color:blue;font-family:Consolas;font-size:9pt;"&gt;&amp;lt;&lt;span style="color:#a31515;"&gt;ItemGroup&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:blue;font-family:Consolas;font-size:9pt;"&gt;&amp;lt;!--&lt;span style="color:green;"&gt; We are asking the Deployment Framework to create MSBuild properties from the values&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:green;"&gt;in our environment settings file that are named here.&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:green;"&gt;With this request, we can use these values later on in the script&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:green;font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:blue;font-family:Consolas;font-size:9pt;"&gt;&amp;lt;&lt;span style="color:#a31515;"&gt;PropsFromEnvSettings&lt;span style="color:blue;"&gt; &lt;span style="color:red;"&gt;Include&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;DeleteParty_BizTalkDbServer;DeleteParty_PartyName&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:blue;font-family:Consolas;font-size:9pt;"&gt;&amp;lt;/&lt;span style="color:#a31515;"&gt;ItemGroup&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The &amp;#39;DeleteParty_BizTalkDbServer&amp;#39; and &amp;#39;DeleteParty_PartyName&amp;#39; are regular settings you have to put in the SettingsFileGenerator.xml settings file. &lt;/p&gt;
&lt;p&gt;Now when you run the deployment script, the DeleteParty tool is run as part of the undeploy. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.didago.nl"&gt;Didago IT Consultancy&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578429" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/jpsmit/archive/tags/BizTalk/default.aspx">BizTalk</category></item><item><title>Octopus Deploy with PublishedApplications</title><link>http://bloggingabout.net/blogs/dries/archive/2013/04/09/octopus-deploy-with-publishedapplications.aspx</link><pubDate>Tue, 09 Apr 2013 09:38:08 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578419</guid><dc:creator>Dries Marckmann</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Normally, when you install Octopack using nuget, the contents of the OutDir (msbuild variable) will be put in the nuget package it creates for you. But when running in TFS build this will give you trouble as mentioned in &lt;a href="http://help.octopusdeploy.com/discussions/problems/505-all-binaries-from-tfs-build-in-nuget-package"&gt;http://help.octopusdeploy.com/discussions/problems/505-all-binaries-from-tfs-build-in-nuget-package&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;A solution was mentioned to use the PublishedApplications nuget package to build each project to its own directory and I blogged as much yesterday…. But this is just a half-baked solution; yes, each project is build to its own directory, but octopack still takes the output of the tfs binaries folder for the packages. I found a way around this and I will describe it here. 
&lt;/p&gt;&lt;p&gt;I had to edit the source for octopack. I changed the dll to determine how a web project is recognized. Normally it does this by looking for a &amp;#39;web.config&amp;#39; file, now you set the attribute TreadEveryProjectAsApplication to &amp;#39;true&amp;#39; of the CreateOctoPackPackage task which will make octopack always use the content of the OutDir as input for the package. (It will ignore the content files in the project directory.) 
&lt;/p&gt;&lt;p&gt;I also removed the line where it excluded the files in the _PublishedWebsites folder, because I explicitly need these files. 
&lt;/p&gt;&lt;p&gt;Added this PropertyGroup to the octopack.targets file: 
&lt;/p&gt;&lt;p style="background:white;"&gt;&lt;span style="font-family:Consolas;font-size:10pt;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:black;"&gt;
			&lt;/span&gt;&lt;/span&gt;
	&lt;/p&gt;&lt;p style="background:white;"&gt;&lt;span style="font-family:Consolas;font-size:10pt;"&gt;&lt;span style="color:blue;"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;OctoPackDirectoryToPack&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Condition&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;#39;$(ExeProjectOutputDir)&amp;#39; != &amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:black;"&gt;$(ExeProjectOutputDir)&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;OctoPackDirectoryToPack&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:black;"&gt;
			&lt;/span&gt;&lt;/span&gt;
	&lt;/p&gt;&lt;p style="background:white;"&gt;&lt;span style="font-family:Consolas;font-size:10pt;"&gt;&lt;span style="color:blue;"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;OctoPackDirectoryToPack&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Condition&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;#39;$(WebProjectOutputDir)&amp;#39; != &amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:black;"&gt;$(WebProjectOutputDir)&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;OctoPackDirectoryToPack&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:black;"&gt;
			&lt;/span&gt;&lt;/span&gt;
	&lt;/p&gt;&lt;p style="background:white;"&gt;&lt;span style="font-family:Consolas;font-size:10pt;"&gt;&lt;span style="color:blue;"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:black;"&gt;
			&lt;/span&gt;&lt;/span&gt;
	&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;It will set the variable OctoPackDirectoryToPack to either ExeProjectOutputDir or WebProjectOutputDir. I then use that variable as input for the OutDir attribute of the CreateOctoPackPackage. 
&lt;/p&gt;&lt;p&gt;Download it here: &lt;a href="http://bloggingabout.net/media/p/578418/download.aspx"&gt;http://bloggingabout.net/media/p/578418/download.aspx&lt;/a&gt; or check out the code at &lt;a href="https://github.com/dmarckmann/OctoPack"&gt;https://github.com/dmarckmann/OctoPack&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;Happy Coding!
&lt;/p&gt;&lt;p&gt;PS. I later also created the property GetVersionFromAssemblyFileVersion (bool) if you want to get the version from the assemblyfileversion of the PrimaryOutputAssembly like we do. Download from github and build locally…  
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578419" width="1" height="1"&gt;</description></item><item><title>PublishedApplications sweetness for TFS Build</title><link>http://bloggingabout.net/blogs/dries/archive/2013/04/08/publishedapplications-sweetness-for-tfs-build.aspx</link><pubDate>Mon, 08 Apr 2013 14:46:36 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578416</guid><dc:creator>Dries Marckmann</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;I just learned that there exists a nuget package that allows you to build your non-web projects to a &amp;#39;_PublishedApplications&amp;#39; directory just as your web projects are build to a &amp;#39;_PublishedWebsites&amp;#39; directory. 
&lt;/p&gt;&lt;p&gt;Check it out: &lt;a href="http://www.nuget.org/packages/PublishedApplications/"&gt;http://www.nuget.org/packages/PublishedApplications/&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;From there on it&amp;#39;s an easy ride to get your build to produce Octopus deploy packages. You can read about it here: &lt;a href="http://help.octopusdeploy.com/discussions/problems/505-all-binaries-from-tfs-build-in-nuget-package"&gt;http://help.octopusdeploy.com/discussions/problems/505-all-binaries-from-tfs-build-in-nuget-package&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;If you want to know all about setting up TFS build for Octopus deploy, check this great walkthrough: &lt;a href="http://octopusdeploy.com/blog/automated-deployment-with-tfspreview-octopack-myget"&gt;http://octopusdeploy.com/blog/automated-deployment-with-tfspreview-octopack-myget&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;Happy Coding! &lt;strong&gt;
		&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578416" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dries/archive/tags/TFS/default.aspx">TFS</category><category domain="http://bloggingabout.net/blogs/dries/archive/tags/NuGet/default.aspx">NuGet</category><category domain="http://bloggingabout.net/blogs/dries/archive/tags/OctopusDeploy/default.aspx">OctopusDeploy</category><category domain="http://bloggingabout.net/blogs/dries/archive/tags/Continuous+Delivery/default.aspx">Continuous Delivery</category><category domain="http://bloggingabout.net/blogs/dries/archive/tags/ALM/default.aspx">ALM</category></item><item><title>Error: The Path 'path' is already mapped in workspace 'workspace'</title><link>http://bloggingabout.net/blogs/rick/archive/2013/04/02/error-the-path-path-is-already-mapped-in-workspace-workspace.aspx</link><pubDate>Tue, 02 Apr 2013 07:35:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578409</guid><dc:creator>Rick van den Bosch</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Just a quick little post today: I got the error &amp;quot;The Path &amp;#39;path&amp;#39; is already mapped in workspace &amp;#39;workspace&amp;#39;&amp;quot; when I connected to a new Team Foundation Server and tried to map my workspace today. I had connected to a Team Foundation Services project a while back to get some shared code, but I already removed the workspace and the server binding. Even though&amp;nbsp;Visual Studio didn&amp;#39;t see any other bindings, mapping my workspace to the same folder the previous TFS binding was mapped to served me this error.&lt;/p&gt;
&lt;p&gt;The quick solution: manually edit (or remove if you don&amp;#39;t have any other bindings) the file VersionControl.config, which can be found under %AppData%\Local\Microsoft\Team Foundation\4.0\Cache&lt;/p&gt;
&lt;p&gt;Hope this helps.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578409" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/rick/archive/tags/.Net/default.aspx">.Net</category><category domain="http://bloggingabout.net/blogs/rick/archive/tags/TFS/default.aspx">TFS</category><category domain="http://bloggingabout.net/blogs/rick/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://bloggingabout.net/blogs/rick/archive/tags/Error/default.aspx">Error</category><category domain="http://bloggingabout.net/blogs/rick/archive/tags/Development/default.aspx">Development</category></item><item><title>From ‘A-ha’ to ‘Ka-Ching’ with Sound Of Data</title><link>http://bloggingabout.net/blogs/dries/archive/2013/03/21/sound-of-data.aspx</link><pubDate>Thu, 21 Mar 2013 08:45:27 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578391</guid><dc:creator>Dries Marckmann</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;This post will be posted here and on the site of Sound of Data as well (&lt;a href="http://soundofdata.nl/en/nieuws" title="http://soundofdata.nl/en/nieuws"&gt;http://soundofdata.nl/en/nieuws&lt;/a&gt;) 
&lt;/p&gt;&lt;p&gt;As of february 25th I started as Senior Developer at Sound of Data. For those who do not know me I&amp;#39;ll shortly introduce myself. 
&lt;/p&gt;&lt;p&gt;I am 37 years old and I live in Goedereede-Havenhoofd. (That&amp;#39;s &lt;a href="https://maps.google.nl/maps?q=Havenhoofd+Goedereede&amp;amp;hl=en&amp;amp;ll=51.821349,4.045715&amp;amp;spn=0.405752,0.926971&amp;amp;sll=51.831216,4.008207&amp;amp;sspn=0.025354,0.057936&amp;amp;t=h&amp;amp;hnear=Havenhoofd,+Goedereede,+South+Holland&amp;amp;z=10" target="_blank"&gt;here&lt;/a&gt;). Writing code has always been a hobby and 14 years ago I managed to turn my hobby into work and I&amp;#39;ve been hobbying ever since. 
&lt;/p&gt;&lt;p&gt;After 7,5 years working for TellUs, leader in online (sales) lead generation, it was time for a change. I was lucky to be contacted by Sound of Data because of my affinity with CQRS and Event Sourcing. 
&lt;/p&gt;&lt;p&gt;Their entire platform has been built on this architectural design pattern and they could do with an extra senior developer. I soon learned that their implementation of CQRS &amp;amp; ES is okay, but not yet fully complete. I hope to be able to lend a hand in completing the implementation. Than we can enjoy all the benefits of this pattern. 
&lt;/p&gt;&lt;p&gt;This isn&amp;#39;t my first priority though. I saw that SOD has some issues where it comes to deployment, so I made it my mission to get some Application Lifecycle Management in place and take the first steps towards Continuous Delivery. The idea of this practice is to make the time between &amp;#39;A-ha&amp;#39; (the idea) and &amp;#39;Ka-ching&amp;#39; (the release to market) as small as possible by automating and standardizing releases. This will help us bringing our customers closer to their customers and bring us one step closer to world domination in that area. 
&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;Happy coding! 
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578391" width="1" height="1"&gt;</description></item><item><title>Quick install of tools using Chocolatey</title><link>http://bloggingabout.net/blogs/dries/archive/2013/03/21/quick-install-of-tools-using-chocolatey.aspx</link><pubDate>Thu, 21 Mar 2013 08:37:03 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578390</guid><dc:creator>Dries Marckmann</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;I got my new laptop today… decided to spend an hour or so to get an easy install working. Using Chocolatey (&lt;a href="http://chocolatey.org"&gt;&lt;span style="color:blue;text-decoration:underline;"&gt;http://chocolatey.org&lt;/span&gt;&lt;/a&gt;) that should be easy. 
&lt;/p&gt;&lt;p&gt;It is, but it is not straightforward. You can&amp;#39;t create a simple batchfile like this:
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;cinst notepadplusplus
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;cinst fiddler
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;The command window will exit after installing notepad++.  A quick search revealed what I should have realized up front. Chocolatey uses nuget and therefor we can use a local packages.config file to get and install all packages. So now my script looks like this: 
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;::Ensure we have elevated permissions
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;@reg add HKLM\Software\Microsoft\DevDiv\0b3d680166a14e50a8c8e2ed060d8d90 /v Elevated /t REG_DWORD /d 1 /f &amp;gt; nul 2&amp;gt;&amp;amp;1
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;@if /i &amp;quot;%errorlevel%&amp;quot;==&amp;quot;1&amp;quot; echo Error: elevation required. &amp;amp;exit /b 740
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;@reg delete HKLM\Software\Microsoft\DevDiv\0b3d680166a14e50a8c8e2ed060d8d90 /va /f &amp;gt; nul 2&amp;gt;&amp;amp;1
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;
 &lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;::Install Chocolatey
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;@powershell -NoProfile -ExecutionPolicy unrestricted -Command &amp;quot;iex ((new-object net.webclient).DownloadString(&amp;#39;http://chocolatey.org/install.ps1&amp;#39;))&amp;quot; &amp;amp;&amp;amp; SET PATH=%PATH%;%systemdrive%\chocolatey\bin
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;::Start installing packages
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;cinst packages.config
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;And here is the contents of my packages.config:
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;packages&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;VirtualCloneDrive&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;        &amp;lt;package id=&amp;quot;notepadplusplus&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;FoxitReader&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;imgburn&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;7zip&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;ilspy&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;tortoisegit&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;tortoisesvn&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;tortoisehg&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;expresso&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;virtualbox&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;KeePass&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;Paint.NET&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;rabbitmq&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;steam&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;vlc&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;fiddler&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;baretail&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;linqpad4&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;tweetdeck&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;teamviewer&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;Teamspeak3&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;skype&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;SkyDrive&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;    &amp;lt;package id=&amp;quot;ransack&amp;quot; /&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;/packages&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;So I&amp;#39;m quickly set up to do some happy coding!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578390" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dries/archive/tags/NuGet/default.aspx">NuGet</category><category domain="http://bloggingabout.net/blogs/dries/archive/tags/Chocolatey/default.aspx">Chocolatey</category></item><item><title>SDN Event March 18th</title><link>http://bloggingabout.net/blogs/dennis/archive/2013/03/19/sdn-event-march-18th.aspx</link><pubDate>Tue, 19 Mar 2013 18:10:05 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578384</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;For March 18th I did two presentations&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;&lt;img style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:right;padding-top:0px;padding-left:0px;margin:0px 0px 0px 5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" align="right" src="http://image.slidesharecdn.com/datareplication-130318130825-phpapp01/95/slide-1-638.jpg?1363630422" width="200" height="150" alt="" /&gt;Data replication or data duplication&lt;/strong&gt;       &lt;br /&gt;As systems are growing bigger and more complex, we are looking for different ways to work with data. An example of this is CQRS and Event Sourcing which take a different approach over standard CRUD based systems. But when the authorities on CQRS tell you that it&amp;#39;s not a top level architecture, what do they actually mean? How should the system than be divided? In this session you&amp;#39;ll learn the differences and why you should be replicating data, but not duplicating data.       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://www.slideshare.net/DennisvanderStelt/data-replication-17325101"&gt;Slidedeck here&lt;/a&gt;       &lt;br /&gt;I will try to upload the demo code at some point when it’s done.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;img style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:right;padding-top:0px;padding-left:0px;margin:0px 0px 0px 5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" align="right" src="http://image.slidesharecdn.com/solid-130318141327-phpapp02/95/slide-1-638.jpg?1363634070" width="200" height="150" alt="" /&gt;SOLID Principles part 1&lt;/strong&gt;       &lt;br /&gt;Of the SOLID principles, made famous by Robert C. Martin, we&amp;#39;ll discuss the Single Responsibility Principle and the Open/Closed Principle, two of the presenter&amp;#39;s favorite principles. But at the same time the least understood and used principles. That&amp;#39;s why this session will explain them thoroughly and give real life examples instead of the regular customer &amp;amp; order examples. You&amp;#39;ll walk away knowing what the benefits are and how to use them properly.       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://www.slideshare.net/DennisvanderStelt/solid-principles-part-1-17326472"&gt;Slidedeck here&lt;/a&gt;       &lt;br /&gt;I will upload the demo code later       &lt;br /&gt;      &lt;br /&gt;I spoke about the Template Method Pattern as well. More information on my blog at the following locations       &lt;ol&gt;       &lt;li&gt;&lt;a href="http://bloggingabout.net/blogs/dennis/archive/2012/02/10/template-method-pattern-explanation.aspx"&gt;Template Method Explanation&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://bloggingabout.net/blogs/dennis/archive/2012/02/10/template-method-pattern-example.aspx"&gt;Template Method Example&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://bloggingabout.net/blogs/dennis/archive/2012/02/10/template-method-pattern-advanced-example.aspx"&gt;Template Method Advanced Example&lt;/a&gt; &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;If you have questions, don’t hesitate to &lt;a href="http://bloggingabout.net/blogs/dennis/contact.aspx"&gt;contact me&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578384" width="1" height="1"&gt;</description></item><item><title>SharePoint 2013 and Windows 8 apps - better together Part 2: Platform choice, using the right API and data access</title><link>http://bloggingabout.net/blogs/bas/archive/2013/03/17/sharepoint-2013-and-windows-8-apps-better-together-part-2-platform-choice-using-the-right-api-and-data-access.aspx</link><pubDate>Sun, 17 Mar 2013 18:19:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578382</guid><dc:creator>Bas</dc:creator><slash:comments>0</slash:comments><description>This is the second post as part of a blog series about the integration of using SharePoint 2013 as a datasource for windows 8 apps.Find the index at SharePoint 2013 and Windows 8 apps - better together Part 1: Introduction, background and considerations NOTE: this blogpost provides information on how to consume rest-services via c-sharp. A lot of plumbing was done by wictor wilen on authentication , Luc Stakenburg and jmservera . In the following blogpost I&amp;#39;ll show how we used that information...(&lt;a href="http://bloggingabout.net/blogs/bas/archive/2013/03/17/sharepoint-2013-and-windows-8-apps-better-together-part-2-platform-choice-using-the-right-api-and-data-access.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578382" width="1" height="1"&gt;</description></item><item><title>SharePoint 2013 and Windows 8 apps - better together Part 1: Introduction, background and considerations</title><link>http://bloggingabout.net/blogs/bas/archive/2013/03/17/sharepoint-2013-and-windows-8-apps-better-together-part-1-introduction-background-and-considerations.aspx</link><pubDate>Sun, 17 Mar 2013 18:09:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578381</guid><dc:creator>Bas</dc:creator><slash:comments>1</slash:comments><description>This is the first post as part of a blog series about the integration of using SharePoint 2013 as a datasource for windows 8 apps. Part 1: Introduction, Background and Considerations (this post) Part 2: Platform choice, using the right API and data access Part 3: Search Part 4: Authentication Introduction On 8 march 2013, my colleague Ad Reijngoudt (Windows 8 App developer, follow him on twitter: @Areijngoudt) and I spoke on the dutch Techdays on the subject: &amp;quot;SharePoint 2013 and windows 8 app...(&lt;a href="http://bloggingabout.net/blogs/bas/archive/2013/03/17/sharepoint-2013-and-windows-8-apps-better-together-part-1-introduction-background-and-considerations.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578381" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/bas/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://bloggingabout.net/blogs/bas/archive/tags/SharePoint+2013/default.aspx">SharePoint 2013</category><category domain="http://bloggingabout.net/blogs/bas/archive/tags/windows+8/default.aspx">windows 8</category></item><item><title>Techdays 2013 - our sessions </title><link>http://bloggingabout.net/blogs/bas/archive/2013/03/16/techdays-2013-our-sessions.aspx</link><pubDate>Sat, 16 Mar 2013 15:37:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578380</guid><dc:creator>Bas</dc:creator><slash:comments>0</slash:comments><description>On 7 and 8 March, the yearly returning TechDays event was held in the Netherlands. This was already the 4th year in a row that I was visiting the event as a speaker, with a total of 6 sessions. I wasn&amp;#39;t the only speaker of Achmea ; some colleague&amp;#39;s of mine were speaking as well. (Fact: Alex thissen spoke for the eleventh year in a row. He lost track on the amount of sessions ;) We had a great diversity on subjects (Security, SharePoint , ALM, windows 8) and I&amp;#39;ll give a quick overview...(&lt;a href="http://bloggingabout.net/blogs/bas/archive/2013/03/16/techdays-2013-our-sessions.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578380" width="1" height="1"&gt;</description></item><item><title>Visual Studio 2012 crashes when opening an ASP.NET MVC project with a cshtml open</title><link>http://bloggingabout.net/blogs/rick/archive/2013/03/15/visual-studio-2012-crashes-when-opening-an-asp-net-mvc-project-with-a-cshtml-open.aspx</link><pubDate>Fri, 15 Mar 2013 10:54:59 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578379</guid><dc:creator>Rick van den Bosch</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rick.metablogapi/4380.vscrash_5F00_5D32128B.png"&gt;&lt;img title="vscrash" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;margin:0px 0px 0px 15px;display:inline;border-top-width:0px;" border="0" alt="vscrash" align="right" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rick.metablogapi/7217.vscrash_5F00_thumb_5F00_35F7C956.png" width="213" height="244" /&gt;&lt;/a&gt; A rather long title for this post, but that’s exactly what happened: when I opened an ASP.NET MVC 4 project with a cshtml view open, Visual Studio would crash with the error messages seen on the right. This would only occur if the &lt;em&gt;first&lt;/em&gt; project I opened had a cshtml file open. When I opened another (type of) project first and then opened a project with a cshtml file open, the problem did not occur. Debugging Visual Studio with a new instance of Visual Studio (&lt;a href="http://www.imdb.com/title/tt1375666" target="_blank"&gt;Inception&lt;/a&gt; anyone?) made things a bit clearer. (Part of) the exception information:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;     &lt;br /&gt;WebEssentials2012&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Message&lt;/strong&gt;     &lt;br /&gt;Could not load type &amp;#39;Microsoft.Less.Core.LessMixinDeclaration&amp;#39; from assembly &amp;#39;Microsoft.VisualStudio.Web.Extensions, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;#39;.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;After searching around a bit, I found this blog post by Mads Kristensen: &lt;a title="http://madskristensen.net/post/Web-Tools-20122-and-Web-Essentials.aspx" href="http://madskristensen.net/post/Web-Tools-20122-and-Web-Essentials.aspx" target="_blank"&gt;Web Tools 2012.2 and Web Essentials&lt;/a&gt;. This post talks about Web Tools 2012.2 and Web Essentials 2.5, and how an error can occur if you install Web Tools 2012.2 and don’t upgrade to Web Essentials 2.5. However, I do have Web Essentials 2.5.1 installed so this issue shouldn’t be the same as mine.&lt;/p&gt;  &lt;p&gt;Although my situation didn’t match the one on Mads’s blog, I decided to install Web Tools 2012.2 just to see what the result would be. As it turned out, installing the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=282650" target="_blank"&gt;Web Tools 2012.2&lt;/a&gt; did solve the problem. Here’s why I think this solved it:&lt;/p&gt;  &lt;p&gt;I had an older version of WebEssentials installed, which included specific functionality. This functionality was moved to Web Tools, and out of the new version of Web Essentials. When I updated to the new version of Web Essentials (without having Web Tools installed!), the functionality was no longer available in Web Essentials giving me the ‘Could not load type’ exception.    &lt;br /&gt;I’m not sure why the exception did not occur when I opened a different project first or if this is the exact reason of the exception occurring. I’ll contact Mads to share my findings, he might be able to reproduce this.&lt;/p&gt;  &lt;p&gt;Hope this helps&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578379" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/rick/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://bloggingabout.net/blogs/rick/archive/tags/Error/default.aspx">Error</category><category domain="http://bloggingabout.net/blogs/rick/archive/tags/Development/default.aspx">Development</category><category domain="http://bloggingabout.net/blogs/rick/archive/tags/VS2012/default.aspx">VS2012</category><category domain="http://bloggingabout.net/blogs/rick/archive/tags/MVC4/default.aspx">MVC4</category><category domain="http://bloggingabout.net/blogs/rick/archive/tags/debug/default.aspx">debug</category></item><item><title>Colored console tracelistener for Enterprise Library 5.0</title><link>http://bloggingabout.net/blogs/dennis/archive/2013/03/05/colored-console-tracelistener-for-enterprise-library-5-0.aspx</link><pubDate>Tue, 05 Mar 2013 19:07:27 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578363</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;At work we’ve been using Enterprise Library for quite some time. A new colleague came in a few months ago and he’s apparently in love with log4net. And I’ve been proving over and over again that Enterprise Library logging can do what log4net can do. It’s probably that patterns &amp;amp; practices don’t have a budget for MVP titles, or I’d already have a few! ;-) But kidding aside, again some EntLib logging was replaced with log4net because of color coding to the console window. I thought this was indeed quite handy so I decided to write my own custom TraceListener.&lt;/p&gt;  &lt;p&gt;For your personal pleasure I’ve immediately created a NuGet package and this is the tutorial on how to use this logger for yourself. The tutorial is very, very detailed. That’s because apparently that’s how a lot of people want it. In other words, those are the posts that get the most views and comments! But it’s really simple to get this going.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install-Package Common.Logging &lt;/li&gt;    &lt;li&gt;Install-Package Common.Logging.EntLib50 &lt;/li&gt;    &lt;li&gt;Install-Package EnterpriseLibrary.Logging -Version 5.0.505.1 &lt;/li&gt;    &lt;li&gt;Install-Package ColoredConsoleTraceListener &lt;/li&gt;    &lt;li&gt;Configure Common.Logging as described in the first steps. &lt;/li&gt;    &lt;li&gt;Configure Enterprise Library logging with my custom colored console trace listener &lt;/li&gt;    &lt;li&gt;Done &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;You can find the NuGet packages for the Colored Console Trace Listener here:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="https://nuget.org/packages/ColoredConsoleTraceListener/"&gt;Enterprise Library Colored Console TraceListener&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I’m using Visual Studio 2012 but this is equally simpel in Visual Studio 2008. It uses .NET Framework 4.0 and I haven’t tested it in any other environment. If there’s a need, let me know and I’ll see what I can do. &lt;/li&gt;    &lt;li&gt;The tutorial creates a new console application, but you can add this to anything you’d like. &lt;/li&gt;    &lt;li&gt;I love &lt;a href="http://netcommon.sourceforge.net/"&gt;Common.Logging&lt;/a&gt; and I’ve added color coding based on TraceEventType that the Common.Logging provides to Enterprise Library. If you’re not using it yet, you might start doing so. It’s really easy to program against and swapping out one logging framework for another is a breeze as well. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Add Common.Logging      &lt;br /&gt;&lt;/strong&gt;In this part we’ll create a new project and will add Common.Logging to the project. If you don’t want to use Common.Logging you can skip this step entirely.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;After you’ve started Visual Studio, create a new Console Application called ConsoleApplication1. &lt;/li&gt;    &lt;li&gt;If you haven’t got the Package Manager Console available yet, do so via View –&amp;gt; Other Windows –&amp;gt; Package Manager Console. &lt;/li&gt;    &lt;li&gt;Open the Package Manager Console and execute the following commands      &lt;ol&gt;       &lt;li&gt;Install-Package Common.Logging          &lt;br /&gt;These the regular Common.Logging classes &lt;/li&gt;        &lt;li&gt;Install-Package Common.Logging.EntLib50          &lt;br /&gt;This is the factory-adapter specifically for Enterprise Library 5.0 &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Now edit your app.config so it looks like the following &lt;/li&gt; &lt;/ol&gt;  &lt;pre class="brush: xml; auto-links: false;"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;configSections&amp;gt;
    &amp;lt;sectionGroup name=&amp;quot;common&amp;quot;&amp;gt;
      &amp;lt;section name=&amp;quot;logging&amp;quot; type=&amp;quot;Common.Logging.ConfigurationSectionHandler, Common.Logging&amp;quot; /&amp;gt;
    &amp;lt;/sectionGroup&amp;gt;
  &amp;lt;/configSections&amp;gt;
  &amp;lt;startup&amp;gt;
    &amp;lt;supportedRuntime version=&amp;quot;v4.0&amp;quot; sku=&amp;quot;.NETFramework,Version=v4.5&amp;quot; /&amp;gt;
  &amp;lt;/startup&amp;gt;
  &amp;lt;common&amp;gt;
    &amp;lt;logging&amp;gt;
      &amp;lt;factoryAdapter type=&amp;quot;Common.Logging.EntLib.EntLibLoggerFactoryAdapter, Common.Logging.EntLib50&amp;quot; /&amp;gt;
    &amp;lt;/logging&amp;gt;
  &amp;lt;/common&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;

&lt;p&gt;What we see here is the config section for Common.Logging defined and the section itself at the bottom. Here you can see the factory-adapter to EntLib 5.0. Every single logging framework needs its own factory-adapter. EntLib has several because of the different versions. You can also add log4net, Elmah, etc, etc. However you can only add one at the time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add Enterprise Library logging 
    &lt;br /&gt;&lt;/strong&gt;In this part we’ll actually added Enterprise Library logging. If you’ve already get Enterprise Library logging set up and running, you can skip this part.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Open the Package Manager Console and execute the following command 
    &lt;ol&gt;
      &lt;li&gt;Install-Package EnterpriseLibrary.Logging -Version 5.0.505.1
        &lt;br /&gt;This will add quite some references, amongst others to Enterprise Library common libraries, Unity and the CommonServiceLocator. &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;In Visual Studio select Tools –&amp;gt; Extension and Updates. A windows will pop up. &lt;/li&gt;

  &lt;li&gt;Select “Online” in the left pane. &lt;/li&gt;

  &lt;li&gt;Search for “EntLib Config” and install the “EnterpriseLibrary.Config” package. 
    &lt;ol&gt;
      &lt;li&gt;This helps configure Enterprise Library, because all the XML for these logging frameworks can be quite hard to learn. &lt;/li&gt;

      &lt;li&gt;After installation, you need to restart Visual Studio &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;Right-click the App.config file and select “Edit configuration file” &lt;/li&gt;

  &lt;li&gt;Select “Blocks” from the menu and select “Add logging settings” &lt;/li&gt;

  &lt;li&gt;Click the 4 blocks in the most left column 
    &lt;ol&gt;
      &lt;li&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/1778.1_5F00_7CBC2D5F.png"&gt;&lt;img title="1" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:right;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="1" align="right" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/2451.1_5F00_thumb_5F00_6CAFEF59.png" width="242" height="114" /&gt;&lt;/a&gt;“General” is a category. Everything you want to log with default Enterprise Library, without specifying a category, will automatically log under this category. After clicking it, you can see that it is linked to the “Event Log Listener”, which logs all information to the EventLog. Because we won’t be using this, we’ll remove the link. Click the little arrow in the left corner and the window will expand. You can see the “Event Log Listener”, click the cross behind it so it’ll be removed. You can see this in the image on the right. &lt;/li&gt;

      &lt;li&gt;“All Events” is a catch-it-all. &lt;/li&gt;

      &lt;li&gt;“Unprocessed Category” is where everything that does not have its own category will go through. We will use this to output the logging information to console and to a file. When appropriate, we’ll log to a specific category, but we’ll get back to that in a next blogpost. &lt;/li&gt;

      &lt;li&gt;“Logging Errors &amp;amp; Warnings” is for when Enterprise Library itself crashes. This is useful for debugging purposes, but you have to be absolutely sure that this will be able to log. It’s useless to put an EventLog listener under here, if you’re not 100% sure you are authorized to log to the eventlog. As you can see this is configured by default however. &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;We have now clicked all four items, but let’s have a look at default logging configuration. Click the double-arrow down to the right of “Logging Settings” and more information will open up. 
    &lt;ol&gt;
      &lt;li&gt;“Default logging category” has the category “General”. As said, this is where message will go to when no category is defined. &lt;/li&gt;

      &lt;li&gt;“Warn if no category match” should be turned off. We will heavily be making use of this feature. &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We’ll now add a trace listener to the “Unprocessed Category” so that our messages will be logged to file.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;In the second pane called “Logging Target Listeners” click the plus sign. &lt;/li&gt;

  &lt;li&gt;Select “Add Logging Target Listeners” &lt;/li&gt;

  &lt;li&gt;Select “Add Rolling Flat File Trace Listener” &lt;/li&gt;

  &lt;li&gt;A new trace listener will appear. Let’s fill in the details 
    &lt;ol&gt;
      &lt;li&gt;Name : Rolling Flat File Trace Listener &lt;/li&gt;

      &lt;li&gt;File Name : d:\logging\consoleapp1\trace.log 
        &lt;br /&gt;This can of course be anything you want, just make sure the tool can log here. &lt;/li&gt;

      &lt;li&gt;Formatter : Text Formatter &lt;/li&gt;

      &lt;li&gt;Roll Interval : Day 
        &lt;br /&gt;Every day, a new file will be created &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;Now that we’ve added a new trace listener, let’s attach this to our “Unprocessed Category” items. 
    &lt;ol&gt;
      &lt;li&gt;Click “Unprocessed Category” again &lt;/li&gt;

      &lt;li&gt;Click the plus sign &lt;/li&gt;

      &lt;li&gt;Select the “Rolling Flat File Trace Listener” we just configured. &lt;/li&gt;
    &lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now we’re done with that, let’s look in Visual Studio again what changed and what will happen if we start logging.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Save the current configuration. No errors should be at the bottom of the configuration tool. &lt;/li&gt;

  &lt;li&gt;Go back to Visual Studio to check out the App.config and what was made of it. Make sure the Common.Logging settings we added before are still in there. &lt;/li&gt;

  &lt;li&gt;Go to the only class in your project called “Program” &lt;/li&gt;

  &lt;li&gt;Make it look like the code below. Do not forget to add the using statements for all classes and interfaces used. &lt;/li&gt;
&lt;/ol&gt;

&lt;pre class="brush: csharp; auto-links: false;"&gt;using Common.Logging;
using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static readonly ILog Log = LogManager.GetCurrentClassLogger();

        static void Main(string[] args)
        {
            Log.Debug(&amp;quot;Debug&amp;quot;);
            Log.Info(&amp;quot;Info&amp;quot;);
            Log.Warn(&amp;quot;Warn&amp;quot;);
            Log.Error(&amp;quot;Error&amp;quot;);
            Log.Fatal(&amp;quot;Fatal&amp;quot;);
        }
    }
}&lt;/pre&gt;

&lt;p&gt;What we did was initialize the logger in the readonly ‘log’ member variable. We ask for the CurrentClassLogger. We’ll get back to this in another blogpost about Common.Logging and Enterprise Library. Next we log a message for every loglevel, according to Common.Logging.&lt;/p&gt;

&lt;p&gt;When you execute the code, at the given location (d:\logging\consoleapp1) there should be our log-file. The content is quite verbose, but after the keyword “message”, is where our message should be provided. With our colored console tracelistener we’ll make this more visible in the console window.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add Colored Console TraceListener 
    &lt;br /&gt;&lt;/strong&gt;As said I’ve already created NuGet package for the Colored Console TraceListener. Let’s add that to our solution, configure it and look at what the code we currently have does.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;In the “Package Manager Console” execute the following command 
    &lt;ol&gt;
      &lt;li&gt;Install-Package ColoredConsoleTraceListener &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;Compile the solution with CTRL+SHIFT+B so that the referenced tracelistener will be in the debug folder. &lt;/li&gt;

  &lt;li&gt;If you haven’t closed the Enterprise Library configuration than ALT+TAB to that again. 
    &lt;br /&gt;If you have closed it, right-click App.config again and select “Edit configuration file” again &lt;/li&gt;

  &lt;li&gt;Add the plus sign next to “Logging Target Listeners” again to add an additional trace listener. &lt;/li&gt;

  &lt;li&gt;Select “Add logging trace listeners” &lt;/li&gt;

  &lt;li&gt;Select “Add custom trace listener” &lt;/li&gt;

  &lt;li&gt;In the window that just popped up, press the “Add from file” button. &lt;/li&gt;

  &lt;li&gt;Browse to the folder where your ConsoleApplication1 is located and find the “packages” folder, where NuGet stores its packages. 
    &lt;br /&gt;Is should be located around here : packages\ColoredConsoleTraceListener.1.0.1\lib\net40\EnterpriseLibrary.ConsoleTraceListener.dll &lt;/li&gt;

  &lt;li&gt;Select the EnterpriseLibrary.ConsoleTraceListener.dll file &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/3718.2_5F00_1A310F1D.png"&gt;&lt;img title="2" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:right;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="2" align="right" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/8030.2_5F00_thumb_5F00_60ADFF25.png" width="242" height="122" /&gt;&lt;/a&gt;The original window that popped up should now contain a tree where you can select the “ConsoleTraceListener” as shown in the image on the right. &lt;/li&gt;

  &lt;li&gt;The only thing we need to configure is the formatter. We’ll create a new one because the current one is much too verbose. &lt;/li&gt;

  &lt;li&gt;In the right pane, click the plus sign next to “Log Message Formatters” &lt;/li&gt;

  &lt;li&gt;Select “Add Log Message Formatters” &lt;/li&gt;

  &lt;li&gt;Select “Add Text Formatter” &lt;/li&gt;

  &lt;li&gt;In the new formatter, set the properties as follows 
    &lt;ol&gt;
      &lt;li&gt;Name : SingleLineText &lt;/li&gt;

      &lt;li&gt;Template : {win32ThreadId} - {timestamp} : {message} 
        &lt;br /&gt;This contains a timestamp and the ThreadId so you’ll know which messages belong together in a multi-threaded application. &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;Back to our ConsoleTraceListener where you should specify the Formatter to “SingleLineText”, which we just specified. &lt;/li&gt;

  &lt;li&gt;Back to our “Unprocessed Category” block in the left pane. Add another trace listener via the plus sign and select the “ConsoleTraceListener” &lt;/li&gt;

  &lt;li&gt;Save the configuration &lt;/li&gt;

  &lt;li&gt;Go back to Visual Studio 2012 &lt;/li&gt;

  &lt;li&gt;Press CTRL+F5 &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now without changing a single line of code, the console window should look as follows. This is what we configured via our Colored Console TraceListener. At the far bottom the final EntLib Config tool.&lt;/p&gt;

&lt;p&gt;&lt;img title="3" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:none;padding-top:0px;padding-left:0px;margin-left:auto;display:block;padding-right:0px;border-top-width:0px;margin-right:auto;" border="0" alt="3" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/7266.3_5F00_0E2F1EE9.png" width="465" height="147" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/8130.4_5F00_14E2286C.png"&gt;&lt;img title="4" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:none;padding-top:0px;padding-left:0px;margin-left:auto;display:block;padding-right:0px;border-top-width:0px;margin-right:auto;" border="0" alt="4" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/6170.4_5F00_thumb_5F00_1DD1BAAB.png" width="366" height="281" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Update : Updated for Enterprise Library 5, since 6.0 came out&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578363" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Development/default.aspx">Development</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category></item><item><title>DEP0700 : Registration of the app failed. Rejecting a request to register from because the files are on a network share.</title><link>http://bloggingabout.net/blogs/dries/archive/2013/03/04/dep0700-registration-of-the-app-failed-rejecting-a-request-to-register-from-because-the-files-are-on-a-network-share.aspx</link><pubDate>Mon, 04 Mar 2013 12:12:37 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578361</guid><dc:creator>Dries Marckmann</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I wanted to run my app an my VM, but got the above error…&lt;/p&gt;  &lt;p&gt;A quick search on google lead me to this thread on DevCenter: &lt;a title="http://social.msdn.microsoft.com/Forums/en-US/winappswithhtml5/thread/3fc1f3cf-2d8b-4dee-a348-40d0bf2c3c66/" href="http://social.msdn.microsoft.com/Forums/en-US/winappswithhtml5/thread/3fc1f3cf-2d8b-4dee-a348-40d0bf2c3c66/"&gt;http://social.msdn.microsoft.com/Forums/en-US/winappswithhtml5/thread/3fc1f3cf-2d8b-4dee-a348-40d0bf2c3c66/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The answer there is spot on! &lt;/p&gt;  &lt;p&gt;I chose option 1, setting my debug option to Remote and setting by Debug option to localhost. Works like a charm! Thanks &lt;a href="http://social.msdn.microsoft.com/profile/gearard%20boland/?ws=usercard-mini" target="_blank"&gt;Gearard Boland&lt;/a&gt; for providing us with the answer!&lt;/p&gt;  &lt;p&gt;Happy coding! &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578361" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dries/archive/tags/WinRT/default.aspx">WinRT</category><category domain="http://bloggingabout.net/blogs/dries/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://bloggingabout.net/blogs/dries/archive/tags/VirtualBox/default.aspx">VirtualBox</category></item><item><title>Installing Win8 in VHD for use with Virtualbox using install.WIM</title><link>http://bloggingabout.net/blogs/dries/archive/2013/03/04/installing-win8-in-vhd-for-use-with-virtualbox-using-install-wim.aspx</link><pubDate>Mon, 04 Mar 2013 10:52:41 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578360</guid><dc:creator>Dries Marckmann</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I found this wonderful solution for installing Windows 8 on a VHD for dual-boot using the imagex tool. You can read about it here: &lt;a title="http://blogs.technet.com/b/haroldwong/archive/2012/08/18/how-to-create-windows-8-vhd-for-boot-to-vhd-using-simple-easy-to-follow-steps.aspx" href="http://blogs.technet.com/b/haroldwong/archive/2012/08/18/how-to-create-windows-8-vhd-for-boot-to-vhd-using-simple-easy-to-follow-steps.aspx"&gt;http://blogs.technet.com/b/haroldwong/archive/2012/08/18/how-to-create-windows-8-vhd-for-boot-to-vhd-using-simple-easy-to-follow-steps.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Problem I experienced now was that I needed a VitualBox Windows 8 machine and there it did not work. I got the message ‘BOOT FAILURE’ after trying to start up that installation. &lt;/p&gt;  &lt;p&gt;I ended up using WIM2VHD with the /HyperV switch to prep the VHD for Hyper-V. Then I created a new VirtualBox machine with the vhd. I removed the SATA controller entirely and added new IDE harddisk using the vhd. &lt;/p&gt;  &lt;p&gt;And now I am running Windows 8 in VirtualBox!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Happy coding!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578360" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dries/archive/tags/WinRT/default.aspx">WinRT</category><category domain="http://bloggingabout.net/blogs/dries/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://bloggingabout.net/blogs/dries/archive/tags/install.WIM/default.aspx">install.WIM</category><category domain="http://bloggingabout.net/blogs/dries/archive/tags/Boot+Failure/default.aspx">Boot Failure</category><category domain="http://bloggingabout.net/blogs/dries/archive/tags/WIM2VHD/default.aspx">WIM2VHD</category><category domain="http://bloggingabout.net/blogs/dries/archive/tags/VirtualBox/default.aspx">VirtualBox</category></item><item><title>In the Pocket – Users</title><link>http://bloggingabout.net/blogs/dries/archive/2013/02/23/in-the-pocket-users.aspx</link><pubDate>Sat, 23 Feb 2013 22:02:21 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578347</guid><dc:creator>Dries Marckmann</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;I  got a mail today, from a user … yes, really… A real user! He likes my app. And I like him for using it! I aim to please. 
&lt;/p&gt;&lt;p&gt;He had 2 feature requests. I love that sort of thing. Yesterday I didn&amp;#39;t really know what to do when sitting behind my pc. I wanted to continue working on In the Pocket, but I lacked a sense of purpose. And now I have no less than 2 features to build. 
&lt;/p&gt;&lt;p&gt;After nearly 100 downloads, I decided to create a uservoice site for In the Pocket. Dennis (&lt;a href="http://bloggingabout.net/blogs/dennis"&gt;http://bloggingabout.net/blogs/dennis&lt;/a&gt;) suggested it. This was just what I needed, a way to know what to do next!
&lt;/p&gt;&lt;p&gt;So if you have a suggestion for In the Pocket: please register it at &lt;a href="http://inthepocket.uservoice.com"&gt;http://inthepocket.uservoice.com&lt;/a&gt; or go there to vote for the next features to build. 
&lt;/p&gt;&lt;p&gt;If you found a bug or have some other issue with it, send an email to &lt;a href="mailto:tickets@inthepocket.uservoice.com"&gt;tickets@inthepocket.uservoice.com&lt;/a&gt;. 
&lt;/p&gt;&lt;p&gt;Now that I know what to do, let&amp;#39;s get back to some happy coding!
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt;"&gt; &lt;/span&gt; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578347" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dries/archive/tags/In+The+Pocket/default.aspx">In The Pocket</category></item></channel></rss>