<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-4126985520350746834.post4386636179573179595..comments</id><updated>2010-10-20T16:01:05.695+01:00</updated><category term='Personal'/><category term='Coding'/><category term='WCM'/><category term='Continuous Integration'/><category term='jQuery'/><category term='master pages'/><category term='debugging'/><category term='workflow'/><category term='speaking'/><category term='page layouts'/><category term='security'/><category term='lists'/><category term='deployment'/><category term='SharePoint'/><category term='AJAX'/><category term='content deployment'/><category term='ghosting'/><category term='codeplex'/><category term='help'/><category term='TechEd'/><category term='customizing'/><category term='Virtual Server'/><category term='CAS policy'/><category term='site definitions'/><category term='user group'/><category term='CustomAction'/><category term='SP2010'/><category term='feature-stapling'/><category term='Content Deployment Wizard'/><category term='webparts'/><category term='feature receiver'/><category term='site columns'/><category term='configuration'/><category term='features'/><category term='central admin'/><category term='DelegateControl'/><category term='MOSS'/><category term='content migration API'/><category term='VSeWSS'/><category term='Virtual Machine Manager'/><category term='content query web part'/><category term='content types'/><category term='InfoPath'/><title type='text'>Comments on Chris O'Brien: My top 5 WCM tips presentation</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.sharepointnutsandbolts.com/feeds/4386636179573179595/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html'/><author><name>Chris O'Brien</name><uri>http://www.blogger.com/profile/10022906552670607366</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_DPonmXhJQ4g/SiFZBcX_Q1I/AAAAAAAAAa0/14b7VTN0FZM/s1600-R/28f5735.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-5243459627470311007</id><published>2009-04-24T12:58:00.000+01:00</published><updated>2009-04-24T12:58:00.000+01:00</updated><title type='text'>@Andy,

Yep, generally all my user controls go exc...</title><content type='html'>@Andy,&lt;br /&gt;&lt;br /&gt;Yep, generally all my user controls go exclusively in the web project, so the code-behind stuff gets compiled into that assembly. I much prefer this as then there are fewer files to deploy (and potentially somehow end up out of sync/with a versioning issue etc. etc.). There is no perf difference though as it gets compiled down to the same underlying MSIL. &lt;br /&gt;&lt;br /&gt;So probably down to individual preference, but is there ever a compelling reason to &lt;B&gt;not&lt;/B&gt; have all that code pre-compiled into the assembly?&lt;br /&gt;&lt;br /&gt;C.&lt;br /&gt;&lt;br /&gt;P.S. I use a class libary project type even for my web project, then edit the .csproj file so that Visual Studio gives me "Add new user control" - I think this is a fairly common approach.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/5243459627470311007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/5243459627470311007'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1240574280000#c5243459627470311007' title=''/><author><name>Chris O'Brien</name><uri>http://www.blogger.com/profile/10022906552670607366</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2092051249'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-1219229983996867281</id><published>2009-04-24T12:21:00.000+01:00</published><updated>2009-04-24T12:21:00.000+01:00</updated><title type='text'>Regarding point 2 - removing the .CS files implies...</title><content type='html'>Regarding point 2 - removing the .CS files implies that your user controls aren't code behind - is that right? Are you creating an assembly that the user controls inherit from? &lt;br /&gt;&lt;br /&gt;If so, why, what's wrong with codebehind user controls? I keep seeing instructions to compile the code behind to an assembly, but I don't get the reasoning behind it...&lt;br /&gt;&lt;br /&gt;(Might be a stupid question!)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/1219229983996867281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/1219229983996867281'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1240572060000#c1219229983996867281' title=''/><author><name>Andy Burns</name><uri>http://www.novolocus.com</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-459599667'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-1411598186767051059</id><published>2009-03-23T21:52:00.000Z</published><updated>2009-03-23T21:52:00.000Z</updated><title type='text'>Dave,&lt;br&gt;&lt;br&gt;You certainly shouldn't need the IIS ...</title><content type='html'>Dave,&lt;BR/&gt;&lt;BR/&gt;You certainly shouldn't need the IIS virtual directory to be an application - as I show in the image, it's just a regular virtual directory in our site. &lt;BR/&gt;&lt;BR/&gt;On the second point, yes you will need to copy the assembly to the SharePoint web app bin folder (i.e. the 'real' bin folder for a SharePoint site) - or the GAC if you're happy for the assembly to run from there. I still prefer a post-build event on the VS project to do this, but any of the various methods would be fine.&lt;BR/&gt;&lt;BR/&gt;HTH,&lt;BR/&gt;&lt;BR/&gt;Chris.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/1411598186767051059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/1411598186767051059'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1237845120000#c1411598186767051059' title=''/><author><name>Chris O'Brien</name><uri>http://www.blogger.com/profile/10022906552670607366</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2092051249'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-2162292090062526524</id><published>2009-03-20T13:13:00.000Z</published><updated>2009-03-20T13:13:00.000Z</updated><title type='text'>Hello Chris,&lt;br&gt;&lt;br&gt;I've been experimenting with t...</title><content type='html'>Hello Chris,&lt;BR/&gt;&lt;BR/&gt;I've been experimenting with tips 1 and 2 of your blog, but am not able to reproduce them, without some extra steps:&lt;BR/&gt;&lt;BR/&gt;- Convert the virtual directory to an application in IIS&lt;BR/&gt;- Manually copy the assembly from my web application's bin folder, to the bin folder in the root of the sharepoint application&lt;BR/&gt;&lt;BR/&gt;Do you have any thoughts on this? (We're using IIS7/MOSS2007/VS2008)&lt;BR/&gt;&lt;BR/&gt;Thanks, Dave</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/2162292090062526524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/2162292090062526524'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1237554780000#c2162292090062526524' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-693238167'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-7670051291696076997</id><published>2008-11-02T11:30:00.000Z</published><updated>2008-11-02T11:30:00.000Z</updated><title type='text'>Mossbuddy,&lt;br&gt;&lt;br&gt;I still think it's possible to d...</title><content type='html'>Mossbuddy,&lt;BR/&gt;&lt;BR/&gt;I still think it's possible to do what you're trying to do with much less work - it shouldn't be necessary to write a custom navigation provider as far as I can see.&lt;BR/&gt;&lt;BR/&gt;Remember that SharePoint will automatically 'security trim' navigation links based on the current user's permissions. So if certain site areas are not accessible to anonymous users they will not see the link, but authenticated users with the correct permissions will.&lt;BR/&gt;&lt;BR/&gt;Suggest designing your site's information architecture (structure of child sites and pages) in a way which supports your split of authenticated/anonymous users. You can then apply appropriate permissions and let SharePoint do the rest.&lt;BR/&gt;&lt;BR/&gt;HTH,&lt;BR/&gt;&lt;BR/&gt;Chris.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/7670051291696076997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/7670051291696076997'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1225625400000#c7670051291696076997' title=''/><author><name>Chris O'Brien</name><uri>http://www.blogger.com/profile/10022906552670607366</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2092051249'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-7275366965271136873</id><published>2008-11-02T11:02:00.000Z</published><updated>2008-11-02T11:02:00.000Z</updated><title type='text'>Rahul,&lt;br&gt;&lt;br&gt;The custom error page was implementi...</title><content type='html'>Rahul,&lt;BR/&gt;&lt;BR/&gt;The custom error page was implementing by doing the following:&lt;BR/&gt;&lt;BR/&gt;- creating a standard publishing page in SharePoint and adding the error message text into a field&lt;BR/&gt;- using code in a HTTP module to redirect to this page if an unhandled exception occurs&lt;BR/&gt;&lt;BR/&gt;I recently publishing some sample code to do this at &lt;A HREF="http://www.sharepointnutsandbolts.com/2008/10/sample-code-from-my-top-wcm-tips.html" REL="nofollow"&gt;Sample code from my WCM tips presentation&lt;/A&gt;.&lt;BR/&gt;&lt;BR/&gt;HTH,&lt;BR/&gt;&lt;BR/&gt;Chris.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/7275366965271136873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/7275366965271136873'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1225623720000#c7275366965271136873' title=''/><author><name>Chris O'Brien</name><uri>http://www.blogger.com/profile/10022906552670607366</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2092051249'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-6175262818122299768</id><published>2008-10-29T16:37:00.000Z</published><updated>2008-10-29T16:37:00.000Z</updated><title type='text'>Thank you Chri O'Brien, this is very helpful. Can ...</title><content type='html'>Thank you Chri O'Brien, this is very helpful. Can you please share how did you implement the custom error message page, was it a custom aspx page in the layouts folder that was shown. I mean was the message just passed to the branding site? not sure of how it should be implemented so asking this basic question. thank you.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/6175262818122299768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/6175262818122299768'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1225298220000#c6175262818122299768' title=''/><author><name>Rahul</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1876854477'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-1186507443735079355</id><published>2008-10-29T14:05:00.000Z</published><updated>2008-10-29T14:05:00.000Z</updated><title type='text'>Thank you Chris, I was thinking to use a custom Po...</title><content type='html'>Thank you Chris, I was thinking to use a custom PortalSiteMapProvider which would have the GetChildNodes() method that will query a Sharepoint List (this list will have entries for various URLs for top navigation for anonymous and authenticated users, so basically 2 links or entries inside the list for each Tab: one for anonymous users and other for authenticated users).&lt;BR/&gt;So this way the global navigation would have a different link for different set of users.&lt;BR/&gt;&lt;BR/&gt;Do you think this would be a good idea? Also the pages shown to the anonymous users are based on a layout with content editor webpart to change the static content whenever required.&lt;BR/&gt;&lt;BR/&gt;Appreciate your advice.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/1186507443735079355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/1186507443735079355'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1225289100000#c1186507443735079355' title=''/><author><name>MOSSBUDDY</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-886724530'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-8727316419115372332</id><published>2008-10-26T13:28:00.000Z</published><updated>2008-10-26T13:28:00.000Z</updated><title type='text'>Mossbuddy,&lt;br&gt;&lt;br&gt;If I understand correctly, you m...</title><content type='html'>Mossbuddy,&lt;BR/&gt;&lt;BR/&gt;If I understand correctly, you might have a couple of options:&lt;BR/&gt;&lt;BR/&gt;- write some code which checks if the user is authenticated or not and then redirects to the appropriate landing page (this could be in the form of a control which is added to the top-level page)&lt;BR/&gt;- use something like the ASP LoginView control to show different page content to authenticated/anonymous users&lt;BR/&gt;&lt;BR/&gt;Does that answer your question?&lt;BR/&gt;&lt;BR/&gt;Chris.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/8727316419115372332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/8727316419115372332'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1225027680000#c8727316419115372332' title=''/><author><name>Chris O'Brien</name><uri>http://www.blogger.com/profile/10022906552670607366</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2092051249'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-5935144519276373409</id><published>2008-10-26T13:24:00.000Z</published><updated>2008-10-26T13:24:00.000Z</updated><title type='text'>DanH,&lt;br&gt;&lt;br&gt;Not quite sure I see how a Web Deploy...</title><content type='html'>DanH,&lt;BR/&gt;&lt;BR/&gt;Not quite sure I see how a Web Deployment Project would help in our particular scenario, but that could be because I've not used them extensively. I didn't talk about this in the presentation, but our setup is as follows:&lt;BR/&gt;&lt;BR/&gt;- use web project template to give us a single assembly for the web project (needless to say, the entire solution has many VS projects)&lt;BR/&gt;- use MSBuild scripts to copy run-time files (assemblies, user controls, other asset files) to a build server&lt;BR/&gt;- MSBuild scripts also plug into &lt;A HREF="http://xmlpreprocess.sourceforge.net/" REL="nofollow"&gt;XmlPreprocess&lt;/A&gt; so we can do conditional processing of web.config files based on custom VS build types (e.g. for a 'Debug' build, use local appSettings variables, for a 'QA' build, use appropriate QA values etc.)&lt;BR/&gt;- after testing on the build server, do a simple XCOPY/gacutil operation to deploy to QA and then other downstream environments when ready&lt;BR/&gt;&lt;BR/&gt;We're fairly happy with this aspect of development. It's possible a web deployment project would help streamline this further but I probably don't know enough about them to see what..&lt;BR/&gt;&lt;BR/&gt;Cheers,&lt;BR/&gt;&lt;BR/&gt;Chris.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/5935144519276373409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/5935144519276373409'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1225027440000#c5935144519276373409' title=''/><author><name>Chris O'Brien</name><uri>http://www.blogger.com/profile/10022906552670607366</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2092051249'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-4866423639446393438</id><published>2008-10-26T13:08:00.000Z</published><updated>2008-10-26T13:08:00.000Z</updated><title type='text'>Hey Andy,&lt;br&gt;&lt;br&gt;Great tip. I think going up the s...</title><content type='html'>Hey Andy,&lt;BR/&gt;&lt;BR/&gt;Great tip. I think going up the stack level by one frame is probably fine for this - I think at one point I did have some trace code which did this, but I'd bet there is a performance penalty. However, we're not too bothered at this stage (hey, we've enabled tracing so we've got bigger problems to solve!) so I think that kind of mitigates it. In terms of having the 'neater' form where the trace level is only passed to the method once, I'm intentionally not doing this since I occasionally want the flexibility to trace something at a different level to the trace switch. This is very rare, but I do occasionally come across circumstances where this seems to make sense - possibly connected with doing something 'trace-like' which isn't actually tracing - e.g. dropping a separate XML file on the filesystem if &lt;I&gt;any&lt;/I&gt; tracing is enabled.&lt;BR/&gt;&lt;BR/&gt;In the end, I kind of still think you gain from ReSharper though as you can use it for all sorts of things. Nevertheless, yours is a good tip.&lt;BR/&gt;&lt;BR/&gt;Chris.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/4866423639446393438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/4866423639446393438'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1225026480000#c4866423639446393438' title=''/><author><name>Chris O'Brien</name><uri>http://www.blogger.com/profile/10022906552670607366</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2092051249'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-5285871725429078294</id><published>2008-10-25T09:06:00.000+01:00</published><updated>2008-10-25T09:06:00.000+01:00</updated><title type='text'>See what can be done with SharePoint Internet site...</title><content type='html'>See what can be done with SharePoint Internet sites. Top 100 examples http://www.wssdemo.com/Pages/topwebsites.aspx</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/5285871725429078294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/5285871725429078294'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1224921960000#c5285871725429078294' title=''/><author><name>Ian Morrish</name><uri>http://imorrish.myopenid.com/</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/openid16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-142424725'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-1043549454044397395</id><published>2008-10-24T08:58:00.000+01:00</published><updated>2008-10-24T08:58:00.000+01:00</updated><title type='text'>Thanks for some very useful tips. Everything that ...</title><content type='html'>Thanks for some very useful tips. Everything that makes wcm development in sharepoint easier is highly interesting. &lt;BR/&gt;Does anybody know why SPD sometimes untabifies your code into a total mess, just out of the blue? &lt;BR/&gt;/Gunnar</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/1043549454044397395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/1043549454044397395'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1224835080000#c1043549454044397395' title=''/><author><name>Gunnar</name><uri>http://www.gunnarfranklin.com</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-389559755'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-1927248940915337729</id><published>2008-10-24T04:31:00.000+01:00</published><updated>2008-10-24T04:31:00.000+01:00</updated><title type='text'>Those are really very important tips. In relation ...</title><content type='html'>Those are really very important tips. In relation to the master page and code I had a query, what if there is a requirement where in on a internet portal they would like to display navigation bar with all their sites (4 sites) and on click of each tab it takes the user to a landing page of that site. Now this behaviour is different for anonymouse user (not logged in user) and logged in user, how do we achieve this? how do we have 2 different landing pages i.e. one for anonymous user and other for authenticated user (FBA auth and internet portal).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/1927248940915337729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/1927248940915337729'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1224819060000#c1927248940915337729' title=''/><author><name>MOSSBUDDY</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-305451856'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-6519995741319760461</id><published>2008-10-24T00:31:00.000+01:00</published><updated>2008-10-24T00:31:00.000+01:00</updated><title type='text'>This is great info. I will try some of them and le...</title><content type='html'>This is great info. I will try some of them and leave you an feedback.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/6519995741319760461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/6519995741319760461'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1224804660000#c6519995741319760461' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-774907509'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-5683520057019588134</id><published>2008-10-23T18:49:00.000+01:00</published><updated>2008-10-23T18:49:00.000+01:00</updated><title type='text'>Hi Chris,&lt;br&gt;&lt;br&gt;First of all let me say well done...</title><content type='html'>Hi Chris,&lt;BR/&gt;&lt;BR/&gt;First of all let me say well done on the presentation. You communicated your material brilliantly with a nice balance of talking and demonstration.&lt;BR/&gt;&lt;BR/&gt;In regards to tip #2 - I am extremely surprised you are not using a web deployment project to package all your user controls into a single DLL, which can then be dropped into the bin directory or GAC.&lt;BR/&gt;&lt;BR/&gt;This then saves all the hassle of needing to drop ascx files into the CONTROLTEMPLATES directory. Plus more importantly it allows you to work with a standard web project containing user controls and test pages, which can be run up within seconds to pre-test. In order to test the user controls fully within SharePoint, a quick compile of the web deployment project, drop the DLL into the bin or GAC, IISRESET and then refresh the sharepoint page!&lt;BR/&gt;&lt;BR/&gt;Another added benefit is when it comes to developing custom WebParts which are build using your custom user controls. Instead of having to load the ascx templates you simply have a reference from the WebPart DLL project to the single user control DLL (outputted from the WDP). The user control is then instantiated with MyUserControl muc = new MyUserControl().&lt;BR/&gt;&lt;BR/&gt;Cheers,&lt;BR/&gt;&lt;BR/&gt;DanH&lt;BR/&gt;&lt;BR/&gt;ps - not to sure about your chosen approach in tip #1. Going to give it some thought and may post in a separate comment!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/5683520057019588134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/5683520057019588134'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1224784140000#c5683520057019588134' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-448696512'/></entry><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-4723824304716998931</id><published>2008-10-23T17:25:00.000+01:00</published><updated>2008-10-23T17:25:00.000+01:00</updated><title type='text'>One tip - in the tracing example, you were putting...</title><content type='html'>One tip - in the tracing example, you were putting the name of the method into the trace message itself. That works, but typing it is a pain for those of us without Resharper (too tight!)&lt;BR/&gt;&lt;BR/&gt;Alternatively, you could could just override/encapsulate the tracer, and dig the calling object/method out of the StackFrame using the Reflection API. Not as bad as it sounds:&lt;BR/&gt;&lt;BR/&gt;http://www.novolocus.com/2008/04/02/use-reflection-to-find-a-calling-method/&lt;BR/&gt;&lt;BR/&gt;I also used that to encapsulate the levels of the .writeif(), so I'd trace things with just:&lt;BR/&gt;&lt;BR/&gt;trace.warning("some warning);&lt;BR/&gt;&lt;BR/&gt;...and get the benefit of Visual Studio typeahead.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/4723824304716998931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/4386636179573179595/comments/default/4723824304716998931'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html?showComment=1224779100000#c4723824304716998931' title=''/><author><name>Andy Burns</name><uri>http://www.novolocus.com</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sharepointnutsandbolts.com/2008/10/my-top-5-wcm-tips-presentation.html' ref='tag:blogger.com,1999:blog-4126985520350746834.post-4386636179573179595' source='http://www.blogger.com/feeds/4126985520350746834/posts/default/4386636179573179595' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-653388404'/></entry></feed>
