<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Jeremy Jee</title>
        <link>http://geekswithblogs.net/jeremyj/Default.aspx</link>
        <description> </description>
        <language>en-GB</language>
        <copyright>jeremyj</copyright>
        <managingEditor>jeremycjee@googlemail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Jeremy Jee</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/jeremyj/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Property overwrite behaviour</title>
            <category>MSBuild</category>
            <link>http://geekswithblogs.net/jeremyj/archive/2012/08/22/property-overwrite-behaviour.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jeremyj/archive/2012/08/22/property-overwrite-behaviour.aspx'&gt;http://geekswithblogs.net/jeremyj/archive/2012/08/22/property-overwrite-behaviour.aspx&lt;/a&gt;&lt;/p&gt;&lt;font face="Georgia"&gt;I thought it worth sharing about property overwrite behaviour because i found it confusing at first in the hope of preventing some learning pain for the uninitiated with MSBuild :-)&lt;br /&gt;&lt;br /&gt;The confusion for me came because of the redundancy of using a Condition statement in a _project_ level property to test that a property has not been previously set. What i mean is that the following two statements are always identical in behaviour, regardless if the property has been supplied on the command line -&lt;br /&gt;&lt;br /&gt;  &amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;    &amp;lt;PropA Condition=" '$(PropA)' == '' "&amp;gt;PropA set at project level&amp;lt;/PropA&amp;gt;&lt;br /&gt;  &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;&lt;br /&gt;has the same behaviour regardless of command line override as -&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font face="Georgia"&gt;  &amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;
    &amp;lt;PropA&amp;gt;PropA set at project level&amp;lt;/PropA&amp;gt;&lt;br /&gt;
  &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;br /&gt;&lt;font face="Georgia"&gt; i.e. the two above property declarations have the same result whether the property is overridden on the command line or not.&lt;br /&gt;&lt;br /&gt;To prove this experiment with the following .proj file -&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;    &amp;lt;PropA Condition=" '$(PropA)' == '' "&amp;gt;PropA set at project level&amp;lt;/PropA&amp;gt;&lt;br /&gt;  &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;Target Name="Target1"&amp;gt;&lt;br /&gt;    &amp;lt;Message Text="PropA: $(PropA)"/&amp;gt;&lt;br /&gt;  &amp;lt;/Target&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;Target Name="Target2"&amp;gt;&lt;br /&gt;    &amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;      &amp;lt;PropA&amp;gt;PropA set in Target2&amp;lt;/PropA&amp;gt;&lt;br /&gt;    &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;    &amp;lt;Message Text="PropA: $(PropA)"/&amp;gt;&lt;br /&gt;  &amp;lt;/Target&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;Target Name="Target3"&amp;gt;&lt;br /&gt;    &amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;      &amp;lt;PropA Condition=" '$(PropA)' == '' "&amp;gt;PropA set in Target3&amp;lt;/PropA&amp;gt;&lt;br /&gt;    &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;    &amp;lt;Message Text="PropA: $(PropA)"/&amp;gt;&lt;br /&gt;  &amp;lt;/Target&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;Target Name="Target4"&amp;gt;&lt;br /&gt;    &amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;      &amp;lt;PropA Condition=" '$(PropA)' != '' "&amp;gt;PropA set in Target4&amp;lt;/PropA&amp;gt;&lt;br /&gt;    &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;    &amp;lt;Message Text="PropA: $(PropA)"/&amp;gt;&lt;br /&gt;  &amp;lt;/Target&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/Project&amp;gt;&lt;br /&gt;&lt;br /&gt;Try invoking it using both of the following invocations and observe its output -&lt;br /&gt;&lt;br /&gt;1)&lt;br /&gt;&amp;gt;msbuild blog.proj /t:Target1;Target2;Target3;Target4&lt;br /&gt;&lt;br /&gt;2)&lt;br /&gt;&amp;gt;msbuild blog.proj /t:Target1;Target2;Target3;Target4 "/p:PropA=PropA set on command line"&lt;br /&gt;&lt;br /&gt;Then try those two invocations with the following three variations of specifying PropA at the project level -&lt;br /&gt;&lt;br /&gt;1)&lt;br /&gt;&lt;/font&gt;&lt;font face="Georgia"&gt;  &amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;
    &amp;lt;PropA Condition=" '$(PropA)' == '' "&amp;gt;PropA set at project level&amp;lt;/PropA&amp;gt;&lt;br /&gt;
  &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;font face="Georgia"&gt;&lt;br /&gt;
2)&lt;br /&gt;
&lt;/font&gt;&lt;font face="Georgia"&gt;  &amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;
    &amp;lt;PropA&amp;gt;PropA set at project level&amp;lt;/PropA&amp;gt;&lt;br /&gt;
  &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font face="Georgia"&gt;3)&lt;br /&gt;&lt;/font&gt;&lt;font face="Georgia"&gt;  &amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;
    &amp;lt;PropA Condition=" '$(PropA)' != '' "&amp;gt;PropA set at project level&amp;lt;/PropA&amp;gt;&lt;br /&gt;
  &amp;lt;/PropertyGroup&amp;gt;&lt;/font&gt;&lt;font face="Georgia"&gt;&lt;br /&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/jeremyj/aggbug/150510.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>jeremyj</dc:creator>
            <guid>http://geekswithblogs.net/jeremyj/archive/2012/08/22/property-overwrite-behaviour.aspx</guid>
            <pubDate>Wed, 22 Aug 2012 15:06:21 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jeremyj/comments/150510.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jeremyj/archive/2012/08/22/property-overwrite-behaviour.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jeremyj/comments/commentRss/150510.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Pinning any folder location to the task bar Explorer jump list</title>
            <category>Windows</category>
            <link>http://geekswithblogs.net/jeremyj/archive/2012/05/17/pinning-any-folder-location-to-the-task-bar-explorer-jump-list.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jeremyj/archive/2012/05/17/pinning-any-folder-location-to-the-task-bar-explorer-jump-list.aspx'&gt;http://geekswithblogs.net/jeremyj/archive/2012/05/17/pinning-any-folder-location-to-the-task-bar-explorer-jump-list.aspx&lt;/a&gt;&lt;/p&gt;This might not be news to you but for me this was a discovery i made only this week, yes how did i not know this before! &lt;br /&gt;&lt;br /&gt;So I discovered how to pin any folder to the Windows Explorer jump list on the Windows 7 task bar. Any entries in the 'Frequent' menu can be pinned using its context menu, but a folder that does not appear in the 'Frequent' menu can still be pinned just by dragging its path from the address bar in the Explorer window onto the task bar icon. The pinned folders can then be accessed by using the context menu of the task bar button.&lt;br /&gt;&lt;br /&gt;Actually for a few years now i've been in the habit of pinning frequently accessed folder locations into the Favorites list in the navigation pane, when using XP and also Windows 7. Perhaps my habits formed with Windows XP using folders pinned to the 
Favorites list in the navigation pane combined with task bar Toolbar 
folders is the reason why so much time spent using Windows 7 has gone by
 without without me using this handy feature, but now instead of adding a Toolbar folder i can just pin my RDP folder (and other folders like the SysinternalsSuite) to the Explorer jump list instead.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;img src="http://geekswithblogs.net/jeremyj/aggbug/149676.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>jeremyj</dc:creator>
            <guid>http://geekswithblogs.net/jeremyj/archive/2012/05/17/pinning-any-folder-location-to-the-task-bar-explorer-jump-list.aspx</guid>
            <pubDate>Thu, 17 May 2012 21:33:12 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jeremyj/comments/149676.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jeremyj/archive/2012/05/17/pinning-any-folder-location-to-the-task-bar-explorer-jump-list.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jeremyj/comments/commentRss/149676.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Debugging Castle WcfFacility installers</title>
            <category>Castle</category>
            <link>http://geekswithblogs.net/jeremyj/archive/2012/05/15/debugging-castle-wcffacility-installers.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jeremyj/archive/2012/05/15/debugging-castle-wcffacility-installers.aspx'&gt;http://geekswithblogs.net/jeremyj/archive/2012/05/15/debugging-castle-wcffacility-installers.aspx&lt;/a&gt;&lt;/p&gt;&lt;div&gt;Stepping through IWindsorInstaller implementations in web services created using the WcfFacility&lt;sup&gt;[1]&lt;/sup&gt;
 is not as immediately accessible compared to debugging 
the start up of a console application. Just pressing F5 with the web service set as a start up 
project causes the start up code to have already been run before 
the debugger attaches to the IIS worker process. Fortunately there is a 
simple way of causing the start up code to be re-run whilst remaining 
attached to the IIS worker process, so that you can step through your 
Castle installers and access the debugger views.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;span class="pullout"&gt;Once you've attached to the worker process under the debugger
 you can just rebuild the web service project to force IIS to 
re-initialize the newly built assembly when it is next exercised.&lt;/span&gt;
&lt;div&gt; 
Once you've attached to the worker process under the debugger&lt;sup&gt;[2]&lt;/sup&gt;
 you can just rebuild the web service project to force IIS to 
re-initialize the newly built assembly when it is next exercised.
The 
IDE won't normally let you do this&lt;sup&gt;[3]&lt;/sup&gt; so you have to build 
the web service project outside the IDE that is running the debugger. Of
 the various ways of doing this i'd like to suggest running the .csproj 
file directly in MSBuild.exe on the command line (because it means that 
just pressing the up arrow and enter in the command window will easily 
let you re-build). So with the debugger attached to the IIS worker 
process of your web service, just re-build the web service project on 
the command line e.g. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.Web.Service.csproj&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As
 soon as you call any of its operations IIS will re-initialize the 
service causing the breakpoints to be hit. I hope this saved you some 
frustration as it took me a while to figure this one out. Happy 
Debugging.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[1] If you are using the Castle WcfFacility your My.Web.Service.svc will probably look something like this -&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;%@ ServiceHost Language="C#" &lt;/div&gt;&lt;div&gt;                Debug="true" &lt;/div&gt;&lt;div&gt;                Service="My.Web.Service" &lt;/div&gt;&lt;div&gt;                Factory="Castle.Facilities.WcfIntegration.DefaultServiceHostFactory, Castle.Facilities.WcfIntegration" %&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[2]  I.e.
 either you've just hit F5 with the web service project as the start up 
project, or you've attached to the worker process by selecting it in the
 processes list (If the worker process isn't showing in the list it 
might be because it isn't yet running, the worker process hosting the 
application pool can be started just by calling one of the web service 
operations. Alternatively you might have to tick the box to include 
processes from all sessions.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[3] I've 
definitely seen a bug in VS2010 SP1 where under rare circumstances it 
will let you, i have been able to do this once but now have no idea how 
to reproduce this issue now...&lt;/div&gt; &lt;img src="http://geekswithblogs.net/jeremyj/aggbug/149628.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>jeremyj</dc:creator>
            <guid>http://geekswithblogs.net/jeremyj/archive/2012/05/15/debugging-castle-wcffacility-installers.aspx</guid>
            <pubDate>Tue, 15 May 2012 09:00:59 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jeremyj/comments/149628.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jeremyj/archive/2012/05/15/debugging-castle-wcffacility-installers.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jeremyj/comments/commentRss/149628.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>