<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkUASH0-fCp7ImA9WhRVE00.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010</id><updated>2012-01-11T11:44:09.354-05:00</updated><category term="Visual Studio" /><category term="xsl" /><category term="footnote" /><category term="XLVWP" /><category term="Forcibly closed" /><category term="XML" /><category term="BitCoin" /><category term="SharePoint 2010" /><category term="wsp" /><category term="SPUser" /><category term="MOSS upgrade SP1" /><category term="Person Field" /><category term="C#" /><category term="XsltListViewWebPart" /><category term="XPath" /><category term="SharePoint 2007 ActiveX Control" /><category term="function" /><category term="compare" /><category term="DVR HTPC TV" /><category term="attributes" /><category term="exception" /><category term="email" /><category term="SharePoint 2007 Workflow feature" /><category term=".net" /><category term="VS" /><category term="WWF" /><category term=".net 2.0" /><category term="multiple file extentions" /><category term="SharePoint 2010 migrate domain" /><category term="default namespace" /><category term="GetFiles" /><category term="SelectSingleNode" /><category term="deploy" /><category term="ListView" /><title>Technical Ramblings</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://shaunedonohue.blogspot.com/" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/TechnicalRamblings" /><feedburner:info uri="technicalramblings" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0AHQHc7eSp7ImA9WhRVEkQ.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-4809834925414542916</id><published>2012-01-11T11:33:00.000-05:00</published><updated>2012-01-11T11:35:31.901-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-11T11:35:31.901-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Person Field" /><category scheme="http://www.blogger.com/atom/ns#" term="email" /><category scheme="http://www.blogger.com/atom/ns#" term="SPUser" /><title>How to get a SharePoint person field's email adress</title><content type="html">This week I had the need to access the email address of a user that was in a person field of a SharePoint list. &lt;br /&gt;
&lt;br /&gt;
Well I incorrectly assumed that this was some flavor of &amp;nbsp;a SPUser object, turns out the person field in a SPList is a special type &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfielduser.aspx" target="_blank"&gt;SPFieldUser&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Well lets cut to the chase this is the code to access the email address of a SPListItem person column;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;private bool EmailUser(SPListItem spListItem, string recordColumn, string subject, string message)
        {
            SPFieldUser spFieldUser = (SPFieldUser)spListItem.Fields[recordColumn];
            SPFieldUserValue spFieldUserValue = (SPFieldUserValue)spFieldUser.GetFieldValue(
                                                    spListItem[recordColumn].ToString());
            if (string.IsNullOrEmpty(spFieldUserValue.User.Email) == false)
                return SPUtility.SendEmail(spListItem.Web, false, false, spFieldUserValue.User.Email, subject, message);
            else
                LogWrite("Error", string.Format("Send Email Error Message")
                                                ,spFieldUserValue.User.Name));
            return false;
        }
&lt;/pre&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-4809834925414542916?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/826wRprEIP2OwzDvgGXUxA_k9z4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/826wRprEIP2OwzDvgGXUxA_k9z4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/826wRprEIP2OwzDvgGXUxA_k9z4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/826wRprEIP2OwzDvgGXUxA_k9z4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/dp2yeoCRxfE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/4809834925414542916/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=4809834925414542916" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/4809834925414542916?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/4809834925414542916?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/dp2yeoCRxfE/how-to-get-sharepoint-person-field.html" title="How to get a SharePoint person field's email adress" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2012/01/how-to-get-sharepoint-person-field.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AHQHk-eip7ImA9WhdaGEw.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-4044905706209247324</id><published>2011-10-28T11:35:00.000-05:00</published><updated>2011-10-28T11:35:31.752-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-28T11:35:31.752-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="deploy" /><category scheme="http://www.blogger.com/atom/ns#" term="XLVWP" /><category scheme="http://www.blogger.com/atom/ns#" term="XsltListViewWebPart" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="ListView" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="wsp" /><title>How to change the view used by XsltListViewWebPart</title><content type="html">So I was in a situation that I needed to change what view was being displayed on a page&amp;nbsp;dynamically.&lt;br /&gt;
I am using the the XsltListViewWebPart to display all the values of a list to the user and depending on the user and different properties of the list items I needed to filter the view as well as assign a different XSL file.&lt;br /&gt;
&lt;br /&gt;
The biggest problem I had was that the list view GUID &amp;nbsp;is created only at deploy time and I could find no&amp;nbsp;other way&amp;nbsp;to assign a different view.&lt;br /&gt;
&lt;br /&gt;
I came across several posts that had examples of changing the view or adding a new XLVWP to the page at deploy time&lt;br /&gt;
&lt;a href="http://sharepoint.stackexchange.com/questions/4843/reusing-the-xsltlistviewwebpart"&gt;http://sharepoint.stackexchange.com/questions/4843/reusing-the-xsltlistviewwebpart&lt;/a&gt;
and
&lt;a href="http://social.technet.microsoft.com/Forums/zh/sharepoint2010programming/thread/983d2098-d742-4708-8bdc-437aa07b3b9d"&gt;http://social.technet.microsoft.com/Forums/zh/sharepoint2010programming/thread/983d2098-d742-4708-8bdc-437aa07b3b9d&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
So I wanted to take this a little further and be able to dictate what view was used on the fly. &amp;nbsp;Using a QueryString of the ListID and the ListViewName I then assign the&amp;nbsp;appropriate&amp;nbsp;view in the OnInit event as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;public partial class RecordHistory : DialogLayoutsPageBase
{
     protected void Page_Load(object sender, EventArgs e)
     {
     }
     protected override void OnInit(EventArgs e)
     {
         base.OnInit(e);
         string[] strLists = Request.QueryString.GetValues("ListID");
         string[] strListViewName = Request.QueryString.GetValues("ListViewName");

         if (strLists == null || strLists.Length &amp;lt; 1)
         {
             throw new SPException(SPResource.GetString(Strings.MissingRequiredQueryString, "ListID"));
         }
         SPList spList = SPControl.GetContextWeb(Context).Lists.GetList(new Guid(strLists[0]), true);
         SPView view = spList.Views[strListViewName[0]];
         this.xlvwpRecordHistory.ViewGuid = view.ID.ToString();
         this.xlvwpRecordHistory.ViewId = int.Parse(view.BaseViewID);
         this.xlvwpRecordHistory.XmlDefinition = view.GetViewXml();
     }
}
&lt;/pre&gt;
&lt;br /&gt;
As always there are many ways to do this that might be better but this worked and I found no other examples of this on the web.&lt;br /&gt;
Please let me know if you have a better idea&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-4044905706209247324?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VI-VvV2qo0OgFaOvoknEL42_ShE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VI-VvV2qo0OgFaOvoknEL42_ShE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VI-VvV2qo0OgFaOvoknEL42_ShE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VI-VvV2qo0OgFaOvoknEL42_ShE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/FUiKbASNBT0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/4044905706209247324/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=4044905706209247324" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/4044905706209247324?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/4044905706209247324?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/FUiKbASNBT0/how-to-change-view-used-by.html" title="How to change the view used by XsltListViewWebPart" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2011/10/how-to-change-view-used-by.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8DQ3szeSp7ImA9WhZUE0o.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-6694630261602085519</id><published>2011-06-06T10:41:00.000-05:00</published><updated>2011-06-06T10:41:12.581-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-06T10:41:12.581-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010 migrate domain" /><title>Basic steps for Moving a SharePoint site collection between domains</title><content type="html">&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;span style="font-family: Garamond, serif;"&gt;Before you start&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Garamond, serif;"&gt;Make sure SharePoint versions are the same on source and destination servers, service packs and patches.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;span style="font-family: Garamond, serif;"&gt;Permissions&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Garamond, serif;"&gt;There are some basic permissions that need to be configured (if they have not already).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Garamond, serif;"&gt;See&amp;nbsp;&lt;a href="http://technet.microsoft.com/en-us/library/ff607596.aspx"&gt;Add-SPShellAdmin&lt;/a&gt;. If you are using Windows authentication to connect to SQL Server, the user account must also be a member the SQL Server&amp;nbsp;&lt;b&gt;dbcreator&lt;/b&gt;&amp;nbsp;fixed server role on the SQL Server instance where the database will be created. If you are using SQL authentication to connect to SQL Server, the SQL authentication account that you specify when you create the content database must have&amp;nbsp;&lt;b&gt;dbcreator&lt;/b&gt;&amp;nbsp;permission on the SQL Server instance where the database will be created.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: magenta; background-image: initial; background-origin: initial; font-family: Garamond, serif;"&gt;Add-SPShellAdmin -UserName&amp;nbsp;&lt;i&gt;Domain\User Name&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;span style="font-family: Garamond, serif;"&gt;Migrate Data&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;span style="font-family: Garamond, serif;"&gt;Backup Site Collection on Farm A.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Garamond, serif;"&gt;On the server farm that contains the original site collection open a&amp;nbsp;&lt;b&gt;SharePoint 2010 Management Shell.&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Garamond, serif;"&gt;In the power shell window type the following command:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: magenta; background-image: initial; background-origin: initial; font-family: Garamond, serif;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Backup-SPSite –Identity&amp;nbsp;&lt;i&gt;http://FarmASiteCollection&amp;nbsp;&lt;/i&gt;-Path&amp;nbsp;&lt;i&gt;TempPathAndFileName.bak&lt;/i&gt;&amp;nbsp;-Force&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Garamond, serif;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Garamond, serif;"&gt;Force will overwrite a previously backup file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;span style="font-family: Garamond, serif;"&gt;Create Content Database on Farm B.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Garamond, serif;"&gt;Assuming the appropriate Web Application already exists then you just need to create a new content database.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Garamond, serif;"&gt;On the server for farm B open a&amp;nbsp;&lt;b&gt;SharePoint 2010 Management Shell.&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Garamond, serif;"&gt;In the power shell window type the following command:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: magenta; background-image: initial; background-origin: initial; font-family: Garamond, serif;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;New-SPContentDatabase -Name&amp;nbsp;&lt;i&gt;ContentDbName&lt;/i&gt;&amp;nbsp;-WebApplication&amp;nbsp;&lt;i&gt;WebApplicationName&lt;br /&gt;
&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&lt;/i&gt;DatabaseServer&lt;i&gt;&amp;nbsp;DBServerName&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;span style="font-family: Garamond, serif;"&gt;Restoring Site Collection on Farm B.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Garamond, serif;"&gt;In the power shell window type the following command:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: magenta; background-image: initial; background-origin: initial; font-family: Garamond, serif;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Restore-SPSite –Identity&amp;nbsp;&lt;i&gt;FarmBSiteCollection&lt;/i&gt;&amp;nbsp;-Path&amp;nbsp;&lt;i&gt;TempPathAndFileName.bak&lt;/i&gt;&lt;br /&gt;
-DatabaseServer&amp;nbsp;&lt;i&gt;DBServerName&amp;nbsp;&lt;/i&gt;-DatabaseName&amp;nbsp;&lt;i&gt;ContentDbName&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;span style="font-family: Garamond, serif;"&gt;Restore Access/Permissions&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Garamond, serif;"&gt;You need to add a user via command line because the restored site will deny all of your login attempts (unless your server is on the same domain as the original source server).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Garamond, serif;"&gt;Using the central administration console, you will note that the site collection still references the original administrators which are now invalid on this new domain.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Garamond, serif;"&gt;NOTE: you can view using following steps &amp;gt;&amp;gt; Central Administration &amp;gt;&amp;gt; Application Management &amp;gt;&amp;gt; Site Collection Administrators (on Farm B SharePoint central administration domain).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0.25in; margin-right: 0px; margin-top: 0px; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Garamond, serif;"&gt;Now you need to change ownership of the site collection using following command.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0.25in;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: magenta; background-image: initial; background-origin: initial; font-family: Garamond, serif;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Set-SPSite –Identity&lt;i&gt;&amp;nbsp;FarmBSiteCollection&amp;nbsp;&lt;/i&gt;-OwnerAlias&amp;nbsp;&lt;i&gt;“domain/User”&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Garamond, serif;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0.25in; margin-right: 0px; margin-top: 0px; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Garamond, serif;"&gt;Now if you refresh central admin console you will see the new administrator as an owner, you can change the secondary administrator at this point as well using same utility.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0.25in;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: magenta; background-image: initial; background-origin: initial; font-family: Garamond, serif;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Set-SPSite –Identity&lt;i&gt;&amp;nbsp;FarmBSiteCollection&amp;nbsp;&lt;/i&gt;-&amp;nbsp;SecondaryOwnerAlias&amp;nbsp;&lt;i&gt;“domain/User”&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Garamond, serif;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0.25in; margin-right: 0px; margin-top: 0px; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Garamond, serif;"&gt;Now reset the IIS and you can login the main site collection as an administrator.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0.25in; margin-right: 0px; margin-top: 0px; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Garamond, serif;"&gt;Then you can optionally run this to clean up the old lingering logins explicitly&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0.25in;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: magenta; background-image: initial; background-origin: initial; font-family: Garamond, serif;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Move-SPUser –Identity &lt;i&gt;olddomain\UserName&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&amp;nbsp;-&amp;nbsp;NewAlias&amp;nbsp;&lt;i&gt;newdomain\UserName&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-6694630261602085519?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3nQHL9wNK51prjmXZ4IgyvMN_zA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3nQHL9wNK51prjmXZ4IgyvMN_zA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3nQHL9wNK51prjmXZ4IgyvMN_zA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3nQHL9wNK51prjmXZ4IgyvMN_zA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/uCQtL6_yCvk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/6694630261602085519/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=6694630261602085519" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/6694630261602085519?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/6694630261602085519?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/uCQtL6_yCvk/basic-steps-for-moving-sharepoint-site.html" title="Basic steps for Moving a SharePoint site collection between domains" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2011/06/basic-steps-for-moving-sharepoint-site.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYHQHY8cSp7ImA9WhZWF08.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-8237556275645788851</id><published>2011-05-18T08:55:00.003-05:00</published><updated>2011-05-18T08:58:51.879-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-18T08:58:51.879-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="BitCoin" /><title>BitCoins???? Fascinating concept.</title><content type="html">Came across this &lt;a href="http://thisweekin.com/thisweekin-startups/bitcoin-discussion-with-gavin-andresen-and-amir-taaki-on-this-week-in-startups-140/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+twistvid+%28This+Week+in+Startups+-+Video%29"&gt;article&lt;/a&gt; not sure I understand all the concept but what an idea.&lt;div&gt;Is this really going to take off or just die a slow death like many cool concept?&lt;br /&gt;&lt;a href="http://thisweekin.com/thisweekin-startups/bitcoin-discussion-with-gavin-andresen-and-amir-taaki-on-this-week-in-startups-140/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+twistvid+%28This+Week+in+Startups+-+Video%29"&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-8237556275645788851?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HrLj6pOsXTeMvfXOBq1IbQ3EHfw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HrLj6pOsXTeMvfXOBq1IbQ3EHfw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HrLj6pOsXTeMvfXOBq1IbQ3EHfw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HrLj6pOsXTeMvfXOBq1IbQ3EHfw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/toG5MuWFbMQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/8237556275645788851/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=8237556275645788851" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/8237556275645788851?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/8237556275645788851?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/toG5MuWFbMQ/bitcoins-fascinating-concept.html" title="BitCoins???? Fascinating concept." /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2011/05/bitcoins-fascinating-concept.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AASXw4eSp7ImA9WhZTE00.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-937069461674708827</id><published>2011-03-16T15:02:00.001-05:00</published><updated>2011-03-16T15:02:28.231-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-16T15:02:28.231-05:00</app:edited><title>Reader Quotas for WCF Services in SharePoint 2010</title><content type="html">&lt;p&gt;Creating a WCF service in SharePoint 2010 is relatively easy. &amp;nbsp;The first thing to do is follow the basic steps in Microsoft&amp;#39;s post&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ff521581.aspx" title="&amp;quot;Creating a Custom WCF Service in SharePoint Foundation&amp;quot;"&gt;&amp;quot;Creating a Custom WCF Service in SharePoint Foundation&amp;quot;&lt;/a&gt;. &amp;nbsp;This will give you a nice starting point for your Service as long as you don&amp;#39;t need to need to change any of the Binding information. &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br&gt;Try sending a 70k file to your nice new WCF service. &amp;nbsp;Oops &amp;nbsp;error! &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#FF0000" face="&amp;#39;Courier New&amp;#39;" size="2"&gt;The remote server returned an unexpected response: (400) Bad Request.*&lt;/font&gt;&lt;font size="2"&gt;&lt;br&gt;Or&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;font face="&amp;#39;courier new&amp;#39;"&gt;&lt;font color="#ff0000"&gt;The maximum string content length quota (8192) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;Ok no problem. &amp;nbsp;If you have done any WCF Service code in the past you probably know that you need to alter some of the binding information to increase the message size and or change the attributes for the readerQuotas no big deal right?&lt;span class="pln" style="background-image:initial;border-color:initial;border-style:initial;margin-left:0px;margin-right:0px;vertical-align:baseline"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;span class="pln" style="background-image:initial;border-color:initial;border-style:initial;margin-left:0px;margin-right:0px;vertical-align:baseline"&gt;&lt;b&gt;Wrong!!!&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;span class="pln" style="background-image:initial;border-color:initial;border-style:initial;margin-left:0px;margin-right:0px;vertical-align:baseline"&gt;SharePoint 2010 has this great new hosting ability&amp;nbsp;&lt;font face="consolas"&gt;&lt;font size="2"&gt;&lt;font color="#0000FF"&gt;MultipleBaseAddressBasicHttpBindingServiceHostFactory&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;and it does all the work required to set up the end points and bindings. You don&amp;#39;t need to do create a web.config file or write any WCF service code. &lt;br&gt;&lt;br&gt;So right about now you should be asking yourself &amp;quot;Self, how do I change the binding information then?&amp;quot;. &lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Well after hunting around for the better part of a day I found a couple of post that talked about using the&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebservice.contentservice.aspx" id="aak0" title="SPWebService.ContentService"&gt;SPWebService.ContentService&lt;/a&gt;&amp;nbsp;to programmatic change the binding information.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;For example:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div id="l9id" style="text-align:left"&gt;&lt;img src="http://docs.google.com/File?id=dff5cnx_3dfpj94z5_b" style="height:148px;width:481px"&gt;&lt;/div&gt;&lt;br&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;But no where do any of the post talk about where do I run this code. &amp;nbsp;Wouldn&amp;#39;t make sense to run it on the client, &lt;i&gt;although you do need to make some changes on the client side as well&lt;/i&gt;. &amp;nbsp;And running it as a Event Receiver when the feature for the WCF Service is installed did not work for me ether.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br&gt;So what next???&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Well I finally came across a comment on one of the MSDN pages by&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/community/user/1497522.aspx" id="c:g3" title="Dan Mayernik"&gt;Dan Mayernik&lt;/a&gt;. &amp;nbsp;&lt;/p&gt;&lt;br&gt;&lt;p&gt;First, to update the configuration for a custom WCF service -add a &lt;b&gt;WebApplication&lt;/b&gt; level feature with nothing more then a feature receiver. The receiver should override &amp;quot;FeatureInstalled&amp;quot; as follows:&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div id="tdlo" style="text-align:left"&gt;&lt;img src="http://docs.google.com/File?id=dff5cnx_2f38wv2hm_b" style="height:206px;width:623px"&gt;&lt;/div&gt;&lt;br&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;div&gt;&lt;p&gt;Obviously, the values listed above are the extreme cases and should be set according to what your service will need. Also, the key for the indexer used for the WcfServiceSettings collection is the name of your service file. If you place the file in a subdirectory -do&amp;nbsp;&lt;b&gt;not&lt;/b&gt;&amp;nbsp;include the subdirectory name as part of the key.&amp;nbsp;&lt;br&gt;&lt;br&gt;Thus, if your service is deployed to the ISAPI directory under:&lt;/p&gt;&lt;font face="Courier New"&gt;/MyCompany/MyCustomService.svc&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;p&gt;the key for the WcfServiceSettings collection would be:&amp;nbsp;&lt;/p&gt;&lt;font face="Courier New"&gt;mycustomservice.svc&lt;br&gt;&lt;/font&gt;&lt;p&gt;&amp;nbsp;&lt;b&gt;&lt;br&gt;&lt;br&gt;CAUTION: The key, as stated above, is case sensitive. The key should be all lowercase.&lt;/b&gt;&lt;/p&gt;&lt;br&gt;&lt;br&gt;Thanks goes to Dan he saved me from loosing any more of my hair (this week)&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-937069461674708827?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Hyjj8KdXl0sgLOuCRvwMKDMTBsw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Hyjj8KdXl0sgLOuCRvwMKDMTBsw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Hyjj8KdXl0sgLOuCRvwMKDMTBsw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Hyjj8KdXl0sgLOuCRvwMKDMTBsw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/Yc-EuT1AOzo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/937069461674708827/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=937069461674708827" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/937069461674708827?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/937069461674708827?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/Yc-EuT1AOzo/reader-quotas-for-wcf-services-in_4706.html" title="Reader Quotas for WCF Services in SharePoint 2010" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2011/03/reader-quotas-for-wcf-services-in_4706.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAEQns7fSp7ImA9WxFbGUs.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-2734465440890133692</id><published>2010-07-12T15:44:00.003-05:00</published><updated>2010-07-12T16:05:03.505-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-12T16:05:03.505-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VS" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title>Reusing file in Visual Studio without copying</title><content type="html">This is so silly but I just figured out how to do it and I had to post it (in case someone else is as brain dead as I was).&lt;br /&gt;When you want to add an existing file to your current project in Visual Studio that's located outside the current project's directory, that file is copied into the project folder, then it's added to the project.  &lt;br /&gt;&lt;br /&gt;Well what if you don't want a duplicate file? &lt;br /&gt;&lt;br /&gt;Maybe you want to share the same source file in multiple projects so that if you modify the code in one project (to fix a bug, for example) the updated code is immediately available to the other projects.  &lt;br /&gt;&lt;br /&gt;I know, I know, most of us would create some sort of shared library for this code and just reference this DLL or even the whole VS project, but to add a shared file all you need to do is instead of clicking the 'Open' button when adding an existing file, click the arrow to the left of this button.  Then select 'Link File' from drop down, this way you create a link to the original file without coping it locally.  &lt;br /&gt;Simple!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-2734465440890133692?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9qVB0cBbNl-estLh2etuMMsXAKY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9qVB0cBbNl-estLh2etuMMsXAKY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9qVB0cBbNl-estLh2etuMMsXAKY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9qVB0cBbNl-estLh2etuMMsXAKY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/fjtLn0rTheU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/2734465440890133692/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=2734465440890133692" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/2734465440890133692?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/2734465440890133692?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/fjtLn0rTheU/reusing-file-in-visual-studio-without.html" title="Reusing file in Visual Studio without copying" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2010/07/reusing-file-in-visual-studio-without.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMARHY5cCp7ImA9WxFRGUQ.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-7192536851996585946</id><published>2010-01-15T11:15:00.006-05:00</published><updated>2010-05-04T13:40:45.828-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-04T13:40:45.828-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2007 Workflow feature" /><title>SharePoint 2007 Custom workflow failed to start.</title><content type="html">&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am doing some custom SharePoint 2007 Workflow development utilizing  &lt;a href="http://www.codeplex.com/wspbuilder"&gt;WSPBuilder&lt;/a&gt; and I had this one workflow that just would not run no matter what I did.  I disabled all the activities in it except a Workflow History logging activity but still the workflow would not start.  I am a little embarrassed to say this was driving me insane for the better part of a day.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No matter what I did when I ran the workflow I would get &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;nobr&gt;1/15/2010 11:06 AM&lt;/nobr&gt; Error  &lt;table cellspacing="0" cellpadding="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td style="PADDING-RIGHT: 3px"&gt;&lt;/td&gt; &lt;td class="ms-vb" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 1px"&gt;System  Account&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; Trans failed to start.   &lt;nobr&gt;1/15/2010 11:06 AM&lt;/nobr&gt; Workflow Canceled  &lt;table cellspacing="0" cellpadding="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td style="PADDING-RIGHT: 3px"&gt;&lt;/td&gt; &lt;td class="ms-vb" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 1px"&gt;System  Account&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; Workflow Trans was canceled by System Account.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I searched through the SharePoint logs over and over again and all I was seeing was unable to load workflow assembly, but I knew it would load since I had other workflows in this library and they all ran no problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is the error message out of the log file, I hope you spot the problem:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Load Workflow Assembly: System.IO.FileLoadException: Could not load file or assembly 'com.XXXX.Sharepoint.Workflows\, Version\=1.0.0.0\, Culture\=neutral\, PublicKeyToken\=$PublicKeyToken$' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)  File name: 'com.XXXX.Sharepoint.Workflows\, Version\=1.0.0.0\, Culture\=neutral\, PublicKeyToken\=$PublicKeyToken$'     at System.Reflection.AssemblyName.nInit(Assembly&amp;amp; assembly, Boolean forIntrospection, Boolean raiseResolveEvent)     at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark&amp;amp; stackMark, Boolean forIntrospection)     at System.Reflection.Assembly.Load(String assemblyString)     at ...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that part I was not seeing was &lt;span class="Apple-style-span"  style=" ;font-size:small;"&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;PublicKeyToken\=$PublicKeyToken&lt;span class="Apple-style-span"  style="font-size:16px;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;It turns out that when I created the feature using the WSPBuilder create SyncSharePointWorkflow option it must have had an error I did not notice and this error caused it not to add the PublicKeyToken to the elements.xml file.  Or maybe it never did and I just forgot to update this line.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;CodeBesideAssembly&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;="com.XXXX.Sharepoint.Workflows, Version=1.0.0.0, Culture=neutral, PublicKeyToken=&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FF9900;"&gt;$PublicKeyToken$&lt;/span&gt;&lt;/b&gt;"&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway once I added the correct Public Key, retracted and redeployed the workflow, it ran fine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hope this helps someone else save a day!!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-7192536851996585946?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1SsEeUsCrPv8TLAsh18wpHMCNCk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1SsEeUsCrPv8TLAsh18wpHMCNCk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1SsEeUsCrPv8TLAsh18wpHMCNCk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1SsEeUsCrPv8TLAsh18wpHMCNCk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/Qqg9W6tY5KM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/7192536851996585946/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=7192536851996585946" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/7192536851996585946?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/7192536851996585946?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/Qqg9W6tY5KM/sharepoint-2007-custom-workflow-failed.html" title="SharePoint 2007 Custom workflow failed to start." /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2010/01/sharepoint-2007-custom-workflow-failed.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIER348eSp7ImA9WxVVGEo.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-2288605031696186238</id><published>2009-03-12T10:55:00.003-05:00</published><updated>2009-03-12T10:58:26.071-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-12T10:58:26.071-05:00</app:edited><title>Windows Media Center</title><content type="html">I dont know how may of you out there are using Windows Media Center for your TV viewing needs, but I have to say &lt;a href="http://www.secondrun.tv/"&gt;http://www.secondrun.tv/&lt;/a&gt; is the best add-on that I have come across yet!&lt;br /&gt;I have completely dropped my Dish Network and almost exclusively use this to watch my favorite shows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-2288605031696186238?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5NqVn3nRx8P5Exqy3AIdTyspRuk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5NqVn3nRx8P5Exqy3AIdTyspRuk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5NqVn3nRx8P5Exqy3AIdTyspRuk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5NqVn3nRx8P5Exqy3AIdTyspRuk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/rq6S_QsYl34" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/2288605031696186238/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=2288605031696186238" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/2288605031696186238?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/2288605031696186238?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/rq6S_QsYl34/windows-media-center.html" title="Windows Media Center" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2009/03/windows-media-center.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EMQXkzfip7ImA9WxVXGUo.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-4352136001385704859</id><published>2009-02-13T16:31:00.004-05:00</published><updated>2009-02-18T11:48:00.786-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-18T11:48:00.786-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WWF" /><category scheme="http://www.blogger.com/atom/ns#" term=".net 2.0" /><category scheme="http://www.blogger.com/atom/ns#" term="Forcibly closed" /><title>The underlying connection was closed: A connection that was expected to be kept alive was closed by the server</title><content type="html">Well the bad news is that this worked for some time but then started to not work again.  Looks like i am back to the drawing board.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ok it took me 2 days to track this down but I think I have solved it.&lt;br /&gt;&lt;br /&gt;I have 2 different .net 2.0 libraries in the same application that both access the same third-party Java web service. Oh by the way this worked no problem in .net 1.0&lt;br /&gt;&lt;br /&gt;Well this was throwing an System.Net.WebException "The underlying connection was closed:" randomly.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;InnerException: System.IO.IOException&lt;br /&gt;      Message="Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host."&lt;br /&gt;      Source="System"&lt;br /&gt;      StackTrace:&lt;br /&gt;           at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)&lt;br /&gt;           at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)&lt;br /&gt;           at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)&lt;br /&gt;      InnerException: System.Net.Sockets.SocketException&lt;br /&gt;           Message="An existing connection was forcibly closed by the remote host"&lt;br /&gt;           Source="System"&lt;br /&gt;           ErrorCode=10054&lt;br /&gt;           NativeErrorCode=10054&lt;br /&gt;           StackTrace:&lt;br /&gt;                at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)&lt;br /&gt;                at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I spent forever searching the net looking for a solution to this, with little to no success.&lt;br /&gt;Well I finally came across this &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;915599"&gt;link&lt;/a&gt;. To resolve this problem you need to disable the keep-alive feature.&lt;br /&gt;&lt;br /&gt;In the     .NET Framework, you need to set the &lt;b&gt;HttpWebRequest.KeepAlive&lt;/b&gt; property to FALSE.&lt;br /&gt;To do this I created a web service reference then modified the generated Reference.cs class and added&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;protected override System.Net.WebRequest  GetWebRequest(Uri uri)&lt;br /&gt;{&lt;br /&gt;           HttpWebRequest webRequest = (HttpWebRequest)base.GetWebRequest(uri);&lt;br /&gt;           webRequest.KeepAlive = false;&lt;br /&gt;           return webRequest;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;now I know this will probably add a little over-head to my application but so what it solved my devastating error :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-4352136001385704859?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ea9TXyaheSdZCzIVhS_vUAjRQ-0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ea9TXyaheSdZCzIVhS_vUAjRQ-0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ea9TXyaheSdZCzIVhS_vUAjRQ-0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ea9TXyaheSdZCzIVhS_vUAjRQ-0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/p7CsrjElX0k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/4352136001385704859/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=4352136001385704859" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/4352136001385704859?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/4352136001385704859?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/p7CsrjElX0k/underlying-connection-was-closed.html" title="The underlying connection was closed: A connection that was expected to be kept alive was closed by the server" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2009/02/underlying-connection-was-closed.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8ESHg8fyp7ImA9WxRbGUk.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-8456465932244438474</id><published>2008-12-10T17:03:00.002-05:00</published><updated>2008-12-10T17:06:49.677-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-10T17:06:49.677-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DVR HTPC TV" /><title>My new HTPC</title><content type="html">Ok I just created a new HTPC (Home Theater PC) and let me just say how the hell did I live with out this before. I actually was able to drop my Dish Network service since most of what I was watching is offered online.  &lt;br /&gt;When I get a chance I hope to list everything I went thru in creating it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-8456465932244438474?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3Qem3-RgozQl9nB9CqDom8UnHKQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3Qem3-RgozQl9nB9CqDom8UnHKQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3Qem3-RgozQl9nB9CqDom8UnHKQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3Qem3-RgozQl9nB9CqDom8UnHKQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/8222aM1H1mE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/8456465932244438474/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=8456465932244438474" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/8456465932244438474?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/8456465932244438474?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/8222aM1H1mE/my-new-htpc.html" title="My new HTPC" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2008/12/my-new-htpc.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08FQHo7fip7ImA9WxRTGUU.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-2303107198162993728</id><published>2008-09-09T14:45:00.003-05:00</published><updated>2008-09-09T14:50:11.406-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-09T14:50:11.406-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".net" /><category scheme="http://www.blogger.com/atom/ns#" term="exception" /><title>.net Exception list</title><content type="html">&lt;a href="http://www.codinghorror.com/blog/archives/000115.html"&gt;Jeff Atwood&lt;/a&gt; wrote a great little block of code to list all the exceptions in .net.  I just needed the most common ones so I posted them here.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;System.AppDomainUnloadedException&lt;br /&gt;System.ApplicationException&lt;br /&gt;System.ArgumentException&lt;br /&gt;System.ArgumentNullException&lt;br /&gt;System.ArgumentOutOfRangeException&lt;br /&gt;System.ArithmeticException&lt;br /&gt;System.ArrayTypeMismatchException&lt;br /&gt;System.BadImageFormatException&lt;br /&gt;System.CannotUnloadAppDomainException&lt;br /&gt;System.ComponentModel.Design.CheckoutException&lt;br /&gt;System.ComponentModel.Design.Serialization.CodeDomSerializerException&lt;br /&gt;System.ComponentModel.InvalidEnumArgumentException&lt;br /&gt;System.ComponentModel.LicenseException&lt;br /&gt;System.ComponentModel.WarningException&lt;br /&gt;System.ComponentModel.Win32Exception&lt;br /&gt;System.Configuration.ConfigurationException&lt;br /&gt;System.ContextMarshalException&lt;br /&gt;System.Data.ConstraintException&lt;br /&gt;System.Data.DataException&lt;br /&gt;System.Data.DBConcurrencyException&lt;br /&gt;System.Data.DeletedRowInaccessibleException&lt;br /&gt;System.Data.DuplicateNameException&lt;br /&gt;System.Data.EvaluateException&lt;br /&gt;System.Data.ExprException&lt;br /&gt;System.Data.InRowChangingEventException&lt;br /&gt;System.Data.InvalidConstraintException&lt;br /&gt;System.Data.InvalidExpressionException&lt;br /&gt;System.Data.MissingPrimaryKeyException&lt;br /&gt;System.Data.NoNullAllowedException&lt;br /&gt;System.Data.Odbc.OdbcException&lt;br /&gt;System.Data.OleDb.OleDbException&lt;br /&gt;System.Data.ReadOnlyException&lt;br /&gt;System.Data.RowNotInTableException&lt;br /&gt;System.Data.SqlClient._ValueException&lt;br /&gt;System.Data.SqlClient.SqlException&lt;br /&gt;System.Data.SqlTypes.SqlNullValueException&lt;br /&gt;System.Data.SqlTypes.SqlTruncateException&lt;br /&gt;System.Data.SqlTypes.SqlTypeException&lt;br /&gt;System.Data.StrongTypingException&lt;br /&gt;System.Data.SyntaxErrorException&lt;br /&gt;System.Data.TypedDataSetGeneratorException&lt;br /&gt;System.Data.VersionNotFoundException&lt;br /&gt;System.DivideByZeroException&lt;br /&gt;System.DllNotFoundException&lt;br /&gt;System.Drawing.Printing.InvalidPrinterException&lt;br /&gt;System.DuplicateWaitObjectException&lt;br /&gt;System.EntryPointNotFoundException&lt;br /&gt;System.Exception&lt;br /&gt;System.ExecutionEngineException&lt;br /&gt;System.FieldAccessException&lt;br /&gt;System.FormatException&lt;br /&gt;System.IndexOutOfRangeException&lt;br /&gt;System.InvalidCastException&lt;br /&gt;System.InvalidOperationException&lt;br /&gt;System.InvalidProgramException&lt;br /&gt;System.IO.DirectoryNotFoundException&lt;br /&gt;System.IO.EndOfStreamException&lt;br /&gt;System.IO.FileLoadException&lt;br /&gt;System.IO.FileNotFoundException&lt;br /&gt;System.IO.InternalBufferOverflowException&lt;br /&gt;System.IO.IOException&lt;br /&gt;System.IO.IsolatedStorage.IsolatedStorageException&lt;br /&gt;System.IO.PathTooLongException&lt;br /&gt;System.Management.ManagementException&lt;br /&gt;System.MemberAccessException&lt;br /&gt;System.Messaging.MessageQueueException&lt;br /&gt;System.MethodAccessException&lt;br /&gt;System.MissingFieldException&lt;br /&gt;System.MissingMemberException&lt;br /&gt;System.MissingMethodException&lt;br /&gt;System.MulticastNotSupportedException&lt;br /&gt;System.Net.CookieException&lt;br /&gt;System.Net.ProtocolViolationException&lt;br /&gt;System.Net.Sockets.SocketException&lt;br /&gt;System.Net.WebException&lt;br /&gt;System.NotFiniteNumberException&lt;br /&gt;System.NotImplementedException&lt;br /&gt;System.NotSupportedException&lt;br /&gt;System.NullReferenceException&lt;br /&gt;System.ObjectDisposedException&lt;br /&gt;System.OutOfMemoryException&lt;br /&gt;System.OverflowException&lt;br /&gt;System.PlatformNotSupportedException&lt;br /&gt;System.RankException&lt;br /&gt;System.Reflection.AmbiguousMatchException&lt;br /&gt;System.Reflection.CustomAttributeFormatException&lt;br /&gt;System.Reflection.InvalidFilterCriteriaException&lt;br /&gt;System.Reflection.ReflectionTypeLoadException&lt;br /&gt;System.Reflection.TargetException&lt;br /&gt;System.Reflection.TargetInvocationException&lt;br /&gt;System.Reflection.TargetParameterCountException&lt;br /&gt;System.Resources.MissingManifestResourceException&lt;br /&gt;System.Runtime.InteropServices.COMException&lt;br /&gt;System.Runtime.InteropServices.ExternalException&lt;br /&gt;System.Runtime.InteropServices.InvalidComObjectException&lt;br /&gt;System.Runtime.InteropServices.InvalidOleVariantTypeException&lt;br /&gt;System.Runtime.InteropServices.MarshalDirectiveException&lt;br /&gt;System.Runtime.InteropServices.SafeArrayRankMismatchException&lt;br /&gt;System.Runtime.InteropServices.SafeArrayTypeMismatchException&lt;br /&gt;System.Runtime.InteropServices.SEHException&lt;br /&gt;System.Runtime.Remoting.MetadataServices.SUDSGeneratorException&lt;br /&gt;System.Runtime.Remoting.MetadataServices.SUDSParserException&lt;br /&gt;System.Runtime.Remoting.RemotingException&lt;br /&gt;System.Runtime.Remoting.RemotingTimeoutException&lt;br /&gt;System.Runtime.Remoting.ServerException&lt;br /&gt;System.Runtime.Serialization.SerializationException&lt;br /&gt;System.Security.Cryptography.CryptographicException&lt;br /&gt;System.Security.Cryptography.CryptographicUnexpectedOperationException&lt;br /&gt;System.Security.Policy.PolicyException&lt;br /&gt;System.Security.SecurityException&lt;br /&gt;System.Security.VerificationException&lt;br /&gt;System.Security.XmlSyntaxException&lt;br /&gt;System.ServiceProcess.TimeoutException&lt;br /&gt;System.StackOverflowException&lt;br /&gt;System.SystemException&lt;br /&gt;System.Threading.SynchronizationLockException&lt;br /&gt;System.Threading.ThreadAbortException&lt;br /&gt;System.Threading.ThreadInterruptedException&lt;br /&gt;System.Threading.ThreadStateException&lt;br /&gt;System.Threading.ThreadStopException&lt;br /&gt;System.TypeInitializationException&lt;br /&gt;System.TypeLoadException&lt;br /&gt;System.TypeUnloadedException&lt;br /&gt;System.UnauthorizedAccessException&lt;br /&gt;System.UriFormatException&lt;br /&gt;System.Web.HttpApplication+CancelModuleException&lt;br /&gt;System.Web.HttpCompileException&lt;br /&gt;System.Web.HttpException&lt;br /&gt;System.Web.HttpParseException&lt;br /&gt;System.Web.HttpRequestValidationException&lt;br /&gt;System.Web.HttpUnhandledException&lt;br /&gt;System.Web.Services.Discovery.InvalidContentTypeException&lt;br /&gt;System.Web.Services.Discovery.InvalidDocumentContentsException&lt;br /&gt;System.Web.Services.Protocols.SoapException&lt;br /&gt;System.Web.Services.Protocols.SoapHeaderException&lt;br /&gt;System.Windows.Forms.AxHost+InvalidActiveXStateException&lt;br /&gt;System.Xml.Schema.XmlSchemaException&lt;br /&gt;System.Xml.XmlException&lt;br /&gt;System.Xml.XPath.XPathException&lt;br /&gt;System.Xml.Xsl.XsltCompileException&lt;br /&gt;System.Xml.Xsl.XsltException&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-2303107198162993728?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5YpEZ7birwIvolQ5-UZ7MwoIQXM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5YpEZ7birwIvolQ5-UZ7MwoIQXM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5YpEZ7birwIvolQ5-UZ7MwoIQXM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5YpEZ7birwIvolQ5-UZ7MwoIQXM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/HvfKFP3ToMU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/2303107198162993728/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=2303107198162993728" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/2303107198162993728?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/2303107198162993728?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/HvfKFP3ToMU/net-exception-list.html" title=".net Exception list" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2008/09/net-exception-list.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YERXk-eCp7ImA9WxdWFk4.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-99529116877486382</id><published>2008-07-09T12:54:00.004-05:00</published><updated>2008-07-09T14:18:24.750-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-09T14:18:24.750-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="function" /><category scheme="http://www.blogger.com/atom/ns#" term="footnote" /><category scheme="http://www.blogger.com/atom/ns#" term="xsl" /><title>Xsl function to testing if text only contains footnote marks</title><content type="html">&lt;span style="font-size:100%;"&gt;The situation come up were I had a table of data and in on of the columns it had just footnote marks.  Well I had to merge these footnote marks over to the previous column, but in order to do this I needed to know if the only value in the cell were marks.  So I realize there are many ways to do this but I thought this was a cool way.   It reads in an external xml file with all the footnote refs I want to search for the ref value is a regex.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-size:78%;" &gt;&amp;lt;footnotes&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);;font-size:78%"&gt;  &amp;lt;footnote ref="\*"/&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-size:78%;" &gt;  &amp;lt;footnote ref="\+"/&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);font-size:78%;" &gt;  &amp;lt;footnote ref="†"/&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);font-size:78%;" &gt;  &amp;lt;footnote ref="\([a-z]\)"/&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);font-size:78%;" &gt;  &amp;lt;footnote ref="\([1-9]\)"/&gt;&lt;br /&gt;&amp;lt;/footnotes&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;I then concat the refs together with a | and do a replace on the string value.  If nothing is left then it is a footnote ref.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;&amp;lt;!-- Reads all possible footnote ref marks from a footnotes.xml file and if pText only contains footnote marks returns true otherwise false --&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;&amp;lt;xsl:function name="txt:IsFootnoteRef" as="xs:boolean"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;  &amp;lt;xsl:param name="pText" as="xs:string"/&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;  &amp;lt;xsl:variable name="vFootnotes" select=" document('./footnotes.xml')/footnotes/footnote"/&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;  &amp;lt;xsl:choose&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;     &amp;lt;xsl:when test="not($vFootnotes)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;       &amp;lt;xsl:value-of select="false()"/&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;     &amp;lt;/xsl:when&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;     &amp;lt;xsl:when test="not($pText)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;        &amp;lt;xsl:value-of select="false()"/&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;     &amp;lt;/xsl:when&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;     &amp;lt;xsl:when test="normalize-space($pText) = '' "&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;        &amp;lt;xsl:value-of select="false()"/&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;     &amp;lt;/xsl:when&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;     &amp;lt;xsl:otherwise&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;        &amp;lt;xsl:variable name="vFootnoteRef"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;           &amp;lt;xsl:value-of select="$vFootnotes/@ref" separator="|"/&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;        &amp;lt;/xsl:variable&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;  &amp;lt;xsl:choose&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;           &amp;lt;xsl:when test=" normalize-space(replace($pText, $vFootnoteRef , '' , 'i')) = '' "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;              &amp;lt;xsl:value-of select="true()"/&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;           &amp;lt;/xsl:when&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;           &amp;lt;xsl:otherwise&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;              &amp;lt;xsl:value-of select="false()"/&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;           &amp;lt;/xsl:otherwise&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;        &amp;lt;/xsl:choose&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;     &amp;lt;/xsl:otherwise&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;  &amp;lt;/xsl:choose&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;&amp;lt;/xsl:function&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-99529116877486382?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AdK-S-m-nQ3emGKyYjSc2yV2c-A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AdK-S-m-nQ3emGKyYjSc2yV2c-A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AdK-S-m-nQ3emGKyYjSc2yV2c-A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AdK-S-m-nQ3emGKyYjSc2yV2c-A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/h0KZM2Dhmtk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/99529116877486382/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=99529116877486382" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/99529116877486382?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/99529116877486382?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/h0KZM2Dhmtk/xsl-function-to-testing-if-text-only.html" title="Xsl function to testing if text only contains footnote marks" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2008/07/xsl-function-to-testing-if-text-only.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EMRnk_eip7ImA9WxZXFkg.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-530186016643170842</id><published>2008-03-04T13:38:00.004-05:00</published><updated>2008-03-04T14:41:27.742-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-04T14:41:27.742-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="compare" /><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><category scheme="http://www.blogger.com/atom/ns#" term="xsl" /><category scheme="http://www.blogger.com/atom/ns#" term="attributes" /><title>Comparing XML attributes with parents attributes</title><content type="html">I had a need to test if all/most of the attributes of a child node were equal to its parent and strip out the child node if true.&lt;br /&gt;&lt;p&gt;My XML structure was basically:&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;PARAGRAPH&lt;/span&gt;&lt;span style="font-size:78%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;style&lt;/span&gt;&lt;span style="font-size:78%;"&gt;='heading1' &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;emphasis&lt;/span&gt;&lt;span style="font-size:78%;"&gt;='true' &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;font&lt;/span&gt;&lt;span style="font-size:78%;"&gt;='arial' &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;number&lt;/span&gt;&lt;span style="font-size:78%;"&gt;='30' indent=’10’&lt;/span&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style="text-indent: 0.5in;"&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;SPECIALTEXT &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;style&lt;/span&gt;&lt;span style="font-size:78%;"&gt;='heading1' &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;emphasis&lt;/span&gt;&lt;span style="font-size:78%;"&gt;='true' &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;font&lt;/span&gt;&lt;span style="font-size:78%;"&gt;='arial' &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;number&lt;/span&gt;&lt;span style="font-size:78%;"&gt;='31'&lt;/span&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:78%;"&gt;Helloworld&lt;br /&gt;&lt;/span&gt;&lt;p style="text-indent: 0.5in;"&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/SPECIALTEXT&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/PARAGRAPH&amp;gt;&lt;/span&gt;&lt;p&gt; &lt;/p&gt;Output needed to be:&lt;br /&gt;&lt;p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;PARAGRAPH&lt;/span&gt;&lt;span style="font-size:78%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;style&lt;/span&gt;&lt;span style="font-size:78%;"&gt;='heading1' &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;emphasis&lt;/span&gt;&lt;span style="font-size:78%;"&gt;='true' &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;font&lt;/span&gt;&lt;span style="font-size:78%;"&gt;='arial' &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;number&lt;/span&gt;&lt;span style="font-size:78%;"&gt;='30'&lt;/span&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:78%;"&gt;Helloworld&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/PARAGRAPH&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;Now this only works on the first level after the PARAGRAPH but that’s all I needed, and it could be changed to do this recursively I guess.  Basically I am matching on any paragraph that contains a child element SPECIALTEXT with the same style attribute and calling the template CompareKeyAttributes.&lt;br /&gt;PARAGRAPH has more attributes than SPECIALTEXT in most cases so I compare only the ones that exist in SPECIALTEXT.&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;CompareKeyAttributes will return a string of all the&lt;br /&gt;attributes that don’t match so then I just check if  I care that the attribute&lt;br /&gt;is different and output accordingly.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 100, 200);"&gt; &lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:template&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt; match&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"PARAGRAPH[SPECIALTEXT[@Style=./@Style] ] "&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style=";font-size:78%;color:black;"  &gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:copy&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:apply-templates&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt; select&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"@*"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;/&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:for-each&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt; select&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;" child::*"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:variable&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt; name&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"RESULT"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:call-template&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt; name&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"CompareKeyAttributes"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:with-param&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt; name&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"PARA" &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;select&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;".."&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;/&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:with-param&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt; name&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"SPEC" &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;select&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"."&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/xsl:call-template&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/xsl:variable&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:choose&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:when&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;test&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="font-size:78%;"&gt;"$RESULT='number' &lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:apply-templates&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt; select&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"child::node()"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/xsl:when&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:otherwise&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:copy&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:apply-templates&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt; select&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"@*|node()"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/xsl:copy&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/xsl:otherwise&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/xsl:choose&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/xsl:for-each&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/xsl:copy&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt; &lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:template&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt; name&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"CompareKeyAttributes"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:param &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;name&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"PARA"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:param &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;name&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"SPEC"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;/&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:for-each&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt; select&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"$SPEC/@*"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:variable&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt; name&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"SPEC_ATT" &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;select&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"name()"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;/&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:variable&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt; name&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"PARA_ATT" &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;select&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"$PARA/@*[name()= $SPEC_ATT]"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:choose&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:when &lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt;test&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"$PARA_ATT != ."&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;xsl:value-of&lt;/span&gt;&lt;span style="color: rgb(245, 132, 76);font-size:78%;" &gt; select&lt;/span&gt;&lt;span style="color: rgb(255, 128, 64);font-size:78%;" &gt;=&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:78%;" &gt;"name()"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 150);font-size:78%;" &gt;/&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/xsl:when&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/xsl:choose&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/xsl:for-each&amp;gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style=""&gt;&lt;span style="color: rgb(0, 100, 200);font-size:78%;" &gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;Let me know if you find this useful or have anyway to make it better.  Enjoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-530186016643170842?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_1CfHpb1ZxtGEy57G8LnkgV9trM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_1CfHpb1ZxtGEy57G8LnkgV9trM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_1CfHpb1ZxtGEy57G8LnkgV9trM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_1CfHpb1ZxtGEy57G8LnkgV9trM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/2sq3IovIYJw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/530186016643170842/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=530186016643170842" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/530186016643170842?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/530186016643170842?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/2sq3IovIYJw/comparing-xml-attributes-with-parents.html" title="Comparing XML attributes with parents attributes" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2008/03/comparing-xml-attributes-with-parents.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYMRXc8cSp7ImA9WxZQFEk.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-3347057624627153310</id><published>2008-02-19T12:42:00.003-05:00</published><updated>2008-02-19T12:46:24.979-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-19T12:46:24.979-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MOSS upgrade SP1" /><title>Upgrading MOSS2007 to SP1</title><content type="html">Jason had some good references for upgrading MOSS07 to SP1.  I have tried the upgrade on my development server with out any issues, but that is a single server env.  I will try the upgrade next week on QA servers but anyway here is the link &lt;a href="http://blogs.informationhub.com/jnadrowski/archive/2008/01/11/24045.aspx"&gt;http://blogs.informationhub.com/jnadrowski/archive/2008/01/11/24045.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-3347057624627153310?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CFAkt6OUwHuHrPjVKVLvRMQOBEM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CFAkt6OUwHuHrPjVKVLvRMQOBEM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CFAkt6OUwHuHrPjVKVLvRMQOBEM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CFAkt6OUwHuHrPjVKVLvRMQOBEM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/DHlRad1jJuI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/3347057624627153310/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=3347057624627153310" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/3347057624627153310?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/3347057624627153310?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/DHlRad1jJuI/upgrading-moss2007-to-sp1.html" title="Upgrading MOSS2007 to SP1" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2008/02/upgrading-moss2007-to-sp1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIBQXc9cCp7ImA9WB9aEkQ.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-4783726439204761643</id><published>2008-01-02T10:26:00.000-05:00</published><updated>2008-01-02T12:55:50.968-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-02T12:55:50.968-05:00</app:edited><title>Changing Virtual Hard Drive from IDE to SCSI</title><content type="html">&lt;p&gt;Well I created  virtual server with a single Virtual IDE hard drive (VHD)  that ran out of space so I decided I was going to find a way to enlarge it and also switch to SCSI, because I read it was better performing.  Well I found alot of post about expanding the hard drive and I will post the details of that in another post.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Here I want to post the steps to switching to a SCSI drive.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open the Virtual Server Web Administration site and select configure your specific Virtual Machine  &lt;/li&gt;&lt;li&gt;In the Virtual Machine  Configuration windows, select Add SCSI Adapter ID 7  &lt;/li&gt;&lt;li&gt;Make sure you leave your boot disk as IDE disk  &lt;/li&gt;&lt;li&gt;Start your virtual machine  &lt;/li&gt;&lt;li&gt;You should see the following when the adapter is registered "Adaptec AIC-7870 PCI SCSI Adapter".  The virtual machine will now be able to boot with SCSI but this SCSI driver is very slow. &lt;/li&gt;&lt;li&gt;Right-click on the Adaptec driver and select Update Driver  &lt;/li&gt;&lt;li&gt;Choose the Install from a list or specific location and Have Disk options  &lt;/li&gt;&lt;li&gt;Browse to the C:\Program Files\Virtual Machine Additions folder and click OK  &lt;/li&gt;&lt;li&gt;The Microsoft Virtual Machine PCI SCSI Controller driver should now be installed  &lt;/li&gt;&lt;li&gt;Shutdown your virtual machine&lt;/li&gt;&lt;li&gt;In the Virtual Server Virtual Machine configuration select hard disks in the configuration section  &lt;/li&gt;&lt;li&gt;Change your boot hard disk to the SCSI ID 0  &lt;/li&gt;&lt;li&gt;Click OK  &lt;/li&gt;&lt;li&gt;Start the virtual machine&lt;/li&gt;&lt;/ol&gt;good luck and remember backups..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-4783726439204761643?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EEc0syc7GNZIw1ggyxrEW6wiVDw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EEc0syc7GNZIw1ggyxrEW6wiVDw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EEc0syc7GNZIw1ggyxrEW6wiVDw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EEc0syc7GNZIw1ggyxrEW6wiVDw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/kRGHVhu5itQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/4783726439204761643/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=4783726439204761643" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/4783726439204761643?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/4783726439204761643?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/kRGHVhu5itQ/changing-virtual-hard-drive-from-ide-to.html" title="Changing Virtual Hard Drive from IDE to SCSI" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2008/01/changing-virtual-hard-drive-from-ide-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUMRn0yfCp7ImA9WB9QF0g.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-2357380039407544535</id><published>2007-10-30T09:13:00.000-05:00</published><updated>2007-10-30T09:58:07.394-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-30T09:58:07.394-05:00</app:edited><title>The Local Security Authority cannot be contacted</title><content type="html">Where to start... I have setup a MOSS 2007 site running on Windows Server 2003 R2 with sp2 and all current updates. The site is setup to allow anonymous access as well as integrated Windows login.  Everything seems fine, no errors on the server all is running smoothly as long as you enter the correct password.  If you miss type your password, instead of prompting you 3 time like IIS should, it immediately displays "The Local Security Authority cannot be contacted". The only thing you can do from here is close your browser and start over again.  I have been trying to track down this problem for weeks now with little to no luck, I even wiped out the server and reinstalled all components to no avail.&lt;br /&gt;&lt;br /&gt;the web server does register the error:&lt;br /&gt;&lt;br /&gt;Event Type:    Failure Audit&lt;br /&gt;Event Source:    Security&lt;br /&gt;Event Category:    Logon/Logoff&lt;br /&gt;Event ID:    537&lt;br /&gt;Date:        10/30/2007&lt;br /&gt;Time:        10:53:03 AM&lt;br /&gt;User:        NT AUTHORITY\SYSTEM&lt;br /&gt;Computer:    XXXX-XXX&lt;br /&gt;Description:&lt;br /&gt;Logon Failure:&lt;br /&gt;     Reason:        An error occurred during logon&lt;br /&gt;     User Name:    XXXX@XXXX.XXX&lt;br /&gt;     Domain:       &lt;br /&gt;     Logon Type:    3&lt;br /&gt;     Logon Process:    NtLmSsp&lt;br /&gt;     Authentication Package:    NTLM&lt;br /&gt;     Workstation Name:    TELESTO&lt;br /&gt;     Status code:    0xC0000225&lt;br /&gt;     Substatus code:    0x0&lt;br /&gt;     Caller User Name:    -&lt;br /&gt;     Caller Domain:    -&lt;br /&gt;     Caller Logon ID:    -&lt;br /&gt;     Caller Process ID:    -&lt;br /&gt;     Transited Services:    -&lt;br /&gt;     Source Network Address:    192.###.##.###&lt;br /&gt;     Source Port:    2705&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.&lt;br /&gt;&lt;br /&gt;While I am looking into this more if anyone has any ideas PLEASE let me know.&lt;br /&gt;&lt;br /&gt;One more tidbit it does not have the same problem on all computers,  some workstations seem to work as expected.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-2357380039407544535?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yMX1Wgztm-G5ALRIYu86cxye2zE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yMX1Wgztm-G5ALRIYu86cxye2zE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yMX1Wgztm-G5ALRIYu86cxye2zE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yMX1Wgztm-G5ALRIYu86cxye2zE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/MJr1TKbkhWI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/2357380039407544535/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=2357380039407544535" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/2357380039407544535?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/2357380039407544535?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/MJr1TKbkhWI/local-security-authority-cannot-be.html" title="The Local Security Authority cannot be contacted" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2007/10/local-security-authority-cannot-be.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QESHw8eCp7ImA9WB9SFE4.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-954411204466428878</id><published>2007-10-03T13:02:00.000-05:00</published><updated>2007-10-03T13:15:09.270-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-03T13:15:09.270-05:00</app:edited><title>Recursively adding files to Visual Source Safe</title><content type="html">Ok first off, I have to say I hate Visual Source Safe (VSS)!&lt;br /&gt;Actually hate isn't right I &lt;span style="font-weight: bold;"&gt;despise&lt;/span&gt; it, I &lt;span style="font-weight: bold;"&gt;loath&lt;/span&gt; it, it is the &lt;span style="font-weight: bold;"&gt;worst&lt;/span&gt; source control software I have ever used! Well I feel better getting that of my chest.&lt;br /&gt;&lt;br /&gt;Anyway back to the reason for this post.  If you need to recursively add files and folders to VSS you simple drag the folder from Windows Explorer and drop in in the correct location in your VSS project.&lt;br /&gt;You might think there is a menu option to do this but there isn't.  You may also think well if I hit insert I will be asked to recursively add, and you would be wrong.  Then you may think Let me look in the doc, maybe it is a command line option, good luck.&lt;br /&gt;&lt;br /&gt;Anyway I hope I am not the only id10t to forget how to do this and had to go hunting for it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-954411204466428878?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RoDZgt8k-90IcvZF-qvAhr2lbbs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RoDZgt8k-90IcvZF-qvAhr2lbbs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RoDZgt8k-90IcvZF-qvAhr2lbbs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RoDZgt8k-90IcvZF-qvAhr2lbbs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/owVGJqcX-VY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/954411204466428878/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=954411204466428878" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/954411204466428878?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/954411204466428878?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/owVGJqcX-VY/recursively-adding-files-to-visual.html" title="Recursively adding files to Visual Source Safe" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>9</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2007/10/recursively-adding-files-to-visual.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04CQXY6eip7ImA9WB5aEUU.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-6354347477719360883</id><published>2007-09-07T09:36:00.000-05:00</published><updated>2007-09-07T13:32:40.812-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-07T13:32:40.812-05:00</app:edited><title>Redirecting DOS stdout stderr</title><content type="html">&lt;p&gt;Every time I need to redirect DOS output I have to go look it up.  There is only so much space in my brain and unless I want to forget how to speak something had to go. Well I got tired of searching thru different sites to get what I wanted, so the last time I came across this info (this happens to be from &lt;a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true" &gt;Microsoft&lt;/a&gt;) I posted it here.&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Using command redirection operators&lt;/h2&gt;&lt;p&gt;The following table lists operators that you can use to redirect command input and output streams.&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt; &lt;thead&gt; &lt;tr valign="top"&gt; &lt;td&gt; Redirection operator&lt;/td&gt; &lt;td style="border-right: solid 1px #CCCCCC"&gt; Description&lt;/td&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr valign="top" class="record"&gt; &lt;td&gt; &lt;p&gt; &lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-right: solid 1px #CCCCCC"&gt; &lt;p&gt;Writes the command output to a file or a device, such as a printer, instead of the Command Prompt window.&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td&gt;&lt;p&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-right: solid 1px #CCCCCC"&gt; &lt;p&gt;Reads the command input from a file, instead of reading input from the keyboard.&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td&gt; &lt;p class="lastInCell"&gt; &lt;b&gt;&amp;gt;&amp;gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-right: solid 1px #CCCCCC"&gt; &lt;p class="lastInCell"&gt; Appends the command output to the end of a file without deleting the information that is already in the file.&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td&gt; &lt;p&gt;&lt;b&gt;&amp;gt;&amp;amp;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-right: solid 1px #CCCCCC"&gt; &lt;p&gt;Writes the output from one handle to the input of another handle.&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top" class="record"&gt; &lt;td&gt; &lt;p&gt; &lt;b&gt;&amp;lt;&amp;amp;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-right: solid 1px #CCCCCC"&gt; &lt;p&gt; Reads the input from one handle and writes it to the output of another handle.&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top" class="evenRecord"&gt; &lt;td&gt; &lt;p class="lastInCell"&gt; &lt;b&gt;|&lt;/b&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-right: solid 1px #CCCCCC"&gt; &lt;p class="lastInCell"&gt; Reads the output from one command and writes it to the input of another command. Also known as a pipe. &lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;&lt;p&gt;By default, you send the command input (that is, the STDIN handle) from your keyboard to Cmd.exe, and then Cmd.exe sends the command output (that is, the STDOUT handle) to the Command Prompt window.&lt;/p&gt; &lt;p&gt; The following table lists the available handles.&lt;/p&gt; &lt;table cellspacing="0" class="dataTable" id="EMC" cellpadding="0"&gt; &lt;thead&gt; &lt;tr valign="top" class="stdHeader"&gt; &lt;td id="colEOC"&gt; Handle&lt;/td&gt; &lt;td id="colERC"&gt; Numeric equivalent of handle&lt;/td&gt; &lt;td id="colEUC" style="border-right: solid 1px #CCCCCC"&gt; Description&lt;/td&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr valign="top" class="record"&gt; &lt;td&gt; &lt;p class="lastInCell"&gt; STDIN&lt;/p&gt; &lt;/td&gt; &lt;td&gt; &lt;p class="lastInCell"&gt; 0&lt;/p&gt; &lt;/td&gt; &lt;td style="border-right: solid 1px #CCCCCC"&gt; &lt;p class="lastInCell"&gt; Keyboard input&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top" class="evenRecord"&gt; &lt;td&gt; &lt;p class="lastInCell"&gt; STDOUT&lt;/p&gt; &lt;/td&gt; &lt;td&gt; &lt;p class="lastInCell"&gt; 1&lt;/p&gt; &lt;/td&gt; &lt;td style="border-right: solid 1px #CCCCCC"&gt; &lt;p class="lastInCell"&gt; Output to the Command Prompt window&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top" class="record"&gt; &lt;td&gt; &lt;p class="lastInCell"&gt; STDERR&lt;/p&gt; &lt;/td&gt; &lt;td&gt; &lt;p&gt; 2&lt;/p&gt; &lt;/td&gt; &lt;td style="border-right: solid 1px #CCCCCC"&gt; &lt;p&gt; Error output to the Command Prompt window&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td&gt; &lt;p class="lastInCell"&gt; UNDEFINED&lt;/p&gt; &lt;/td&gt; &lt;td&gt; &lt;p class="lastInCell"&gt; 3-9&lt;/p&gt; &lt;/td&gt; &lt;td style="border-right: solid 1px #CCCCCC"&gt; &lt;p class="lastInCell"&gt; These handles are defined individually by the application and are specific to each tool.&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;&lt;p&gt;The numbers zero through nine (that is, 0-9) represent the first 10 handles. You can use Cmd.exe to run a program and redirect any of the first 10 handles for the program. To specify which handle you want to use, type the number of the handle before the redirection operator. If you do not define a handle, the default &amp;lt; redirection input operator is zero (0) and the default &amp;gt; redirection output operator is one (1). After you type the &amp;lt; or &amp;gt; operator, you must specify where you want to read or write the data. You can specify a file name or another existing handle.&lt;/p&gt; &lt;p&gt; To specify redirection to existing handles, use the ampersand (&amp;amp;) character followed by the handle number that you want to redirect (that is, &lt;b&gt;&amp;amp;&lt;/b&gt;&lt;i&gt;handle#&lt;/i&gt;). For example, the following command redirects handle 2 (that is, STDERR) into handle 1 (that is, STDOUT):&lt;/p&gt; &lt;p&gt; &lt;b&gt;1&amp;lt;&amp;amp;2&lt;/b&gt;&lt;/p&gt; &lt;h2&gt; Duplicating handles &lt;/h2&gt; &lt;p&gt; The &amp;amp; redirection operator duplicates output or input from one specified handle to another specified handle. For example, to send &lt;b&gt;dir&lt;/b&gt; output to File.txt and send the error output to File.txt, type:&lt;/p&gt; &lt;p&gt; &lt;b&gt;dir&amp;gt;c:\file.txt 2&amp;gt;&amp;amp;1&lt;/b&gt;&lt;/p&gt; &lt;p&gt; When you duplicate a handle, you duplicate all characteristics of the original occurrence of the handle. For example, if a handle has write-only access, all duplicates of that handle have write-only access. You cannot duplicate a handle with read-only access into a handle with write-only access.&lt;/p&gt; &lt;h2&gt; Redirecting command input (&amp;lt;)&lt;/h2&gt; &lt;p&gt; To redirect command input from the keyboard to a file or device, use the &amp;lt; operator. For example, to get the command input for the &lt;b&gt;sort&lt;/b&gt; command from File.txt: &lt;/p&gt; &lt;p&gt; &lt;b&gt;sort&amp;lt;file.txt &lt;/b&gt; &lt;/p&gt; &lt;p&gt; The contents of File.txt appear in the Command Prompt window as an alphabetized list.&lt;/p&gt; &lt;p&gt; The &amp;lt; operator opens the specified file name with read-only access. As a result, you cannot write to the file when you use this operator. For example, if you start a program with &amp;lt;&amp;amp;2, all attempts to read handle 0 fail because handle 2 is initially opened with write-only access.&lt;/p&gt;&lt;h2&gt; Redirecting command output (&amp;gt;)&lt;/h2&gt; &lt;p&gt; Almost all commands send output to your Command Prompt window. Even commands that send output to a drive or printer display messages and prompts in the Command Prompt window. &lt;/p&gt; &lt;p&gt; To redirect command output from the Command Prompt window to a file or device, use the &amp;gt; operator. You can use this operator with most commands. For example, to redirect &lt;b&gt;dir&lt;/b&gt; output to Dirlist.txt: &lt;/p&gt; &lt;p&gt; &lt;b&gt;dir&amp;gt;dirlist.txt &lt;/b&gt; &lt;/p&gt; &lt;p&gt; If Dirlist.txt does not exist, Cmd.exe creates it. If Dirlist.txt exists, Cmd.exe replaces the information in the file with the output from the &lt;b&gt;dir&lt;/b&gt; command. &lt;/p&gt; &lt;p&gt; To run the &lt;b&gt;netsh routing dump&lt;/b&gt; command and then send the command output to Route.cfg, type:&lt;/p&gt; &lt;p&gt; &lt;b&gt;netsh routing dump&lt;/b&gt;&amp;gt;&lt;b&gt;c:\route.cfg&lt;/b&gt;&lt;/p&gt; &lt;p&gt; The &amp;gt; operator opens the specified file with write-only access. As a result, you cannot read the file when you use this operator. For example, if you start a program with redirection &amp;gt;&amp;amp;0, all attempts to write handle 1 fail because handle 0 is initially opened with read-only access.&lt;/p&gt; &lt;h3&gt; &lt;/h3&gt; &lt;p&gt; &lt;b&gt;Note&lt;/b&gt;&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0" border="0"&gt; &lt;tr&gt; &lt;td class="listBullet" valign="top"&gt; &amp;#8226;&lt;/td&gt; &lt;td class="listItem"&gt; &lt;p&gt; One is the default handle for the &amp;gt; redirection output operator. &lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;h2&gt; Using the &amp;lt;&amp;amp; operator to redirect input and duplicate&lt;/h2&gt; &lt;p&gt; To use the redirection input operator &amp;lt;&amp;amp;, the file you specify must already exist. If the input file exists, Cmd.exe opens it as read-only and sends the characters contained in the file as input to the command as if they were input from the keyboard. If you specify a handle, Cmd.exe duplicates the handle you specify onto the existing handle in the system.&lt;/p&gt; &lt;p&gt; For example, to open File.txt as input read to handle 0 (that is, STDIN), type:&lt;/p&gt; &lt;p&gt; &lt;b&gt;&amp;lt;&lt;/b&gt;&lt;b&gt;file.txt&lt;/b&gt;&lt;/p&gt; &lt;p&gt; To open File.txt, sort the contents and then send the output to the Command Prompt window (that is, STDOUT), type:&lt;/p&gt; &lt;p&gt; &lt;b&gt;sort&amp;lt;&lt;/b&gt;&lt;b&gt;file.txt&lt;/b&gt; &lt;/p&gt; &lt;p&gt; To find File.txt, and then redirect handle 1 (that is, STDOUT) and handle 2 (that is, STDERR) to the Search.txt, type:&lt;/p&gt; &lt;p&gt; &lt;b&gt;findfile file.txt&amp;gt;search.txt 2&amp;lt;&amp;amp;1&lt;/b&gt;&lt;/p&gt; &lt;p&gt; To duplicate a user-defined handle 3 as input read to handle 0 (that is, STDIN), type:&lt;/p&gt; &lt;p&gt; &lt;b&gt;&amp;lt;&amp;amp;3&lt;/b&gt;&lt;/p&gt; &lt;h2&gt; Using the &amp;gt;&amp;amp; operator to redirect output and duplicate&lt;/h2&gt; &lt;p&gt; If you redirect output to a file and you specify an existing file name, Cmd.exe opens the file as write-only and overwrites the file's contents. If you specify a handle, Cmd.exe duplicates the file onto the existing handle.&lt;/p&gt; &lt;p&gt; To duplicate a user-defined handle 3 into handle 1, type:&lt;/p&gt; &lt;p&gt; &lt;b&gt;&amp;gt;&amp;amp;3&lt;/b&gt;&lt;/p&gt; &lt;p&gt; To redirect all of the output, including handle 2 (that is, STDERR), from the &lt;b&gt;ipconfig&lt;/b&gt; command to handle 1 (that is, STDOUT), and then redirect the ouput to Output.log, type:&lt;/p&gt; &lt;p&gt; &lt;b&gt;ipconfig.exe&amp;gt;&amp;gt;output.log 2&amp;gt;&amp;amp;1&lt;/b&gt;&lt;/p&gt; &lt;h2&gt; Using the &amp;gt;&amp;gt; redirection operator to append output&lt;/h2&gt; &lt;p&gt; To add the output from a command to the end of a file without losing any of the information already in the file, use two consecutive greater than signs (that is, &amp;gt;&amp;gt;). For example, the following command appends the directory list produced by the &lt;b&gt;dir&lt;/b&gt; command to the Dirlist.txt file: &lt;/p&gt; &lt;p&gt; &lt;b&gt;dir&amp;gt;&amp;gt;dirlist.txt &lt;/b&gt; &lt;/p&gt; &lt;p&gt; To append the output of the &lt;b&gt;netstat&lt;/b&gt; command to the end of Tcpinfo.txt, type:&lt;/p&gt; &lt;p&gt; &lt;b&gt;netstat&amp;gt;&amp;gt;tcpinfo.txt&lt;/b&gt;&lt;/p&gt; &lt;h2&gt; Using the pipe operator (|) &lt;/h2&gt; &lt;p&gt; The pipe operator (|) takes the output (by default, STDOUT) of one command and directs it into the input (by default, STDIN) of another command. For example, the following command sorts a directory:&lt;/p&gt; &lt;p&gt; &lt;b&gt;dir | sort&lt;/b&gt;&lt;/p&gt; &lt;p&gt; In this example, both commands start simultaneously, but then the &lt;b&gt;sort&lt;/b&gt; command pauses until it receives the &lt;b&gt;dir&lt;/b&gt; command's output. The &lt;b&gt;sort&lt;/b&gt; command uses the &lt;b&gt;dir&lt;/b&gt; command's output as its input, and then sends its output to handle 1 (that is, STDOUT).&lt;/p&gt; &lt;h2&gt; Combining commands with redirection operators&lt;/h2&gt; &lt;p&gt; You can create custom commands by combining filter commands with other commands and file names. For example, you can use the following command to store the names of files that contain the string "LOG": &lt;/p&gt; &lt;p&gt; &lt;b&gt;dir /b | find "LOG" &amp;gt; loglist.txt &lt;/b&gt; &lt;/p&gt; &lt;p&gt; The &lt;b&gt;dir&lt;/b&gt; command's output is sent through the &lt;b&gt;find&lt;/b&gt; filter command. File names that contain the string "LOG" are stored as a list of file names (for example, NetshConfig.log, Logdat.svd, and Mylog.bat) in the Loglist.txt file. &lt;/p&gt; &lt;p&gt; To use more than one filter in the same command, separate the filters with a pipe (|). For example, the following command searches every directory on drive C:, finds the file names that include the string "Log", and then displays them in one Command Prompt window at a time:&lt;/p&gt; &lt;p&gt; &lt;b&gt;dir c:\ /s /b | find "LOG" | more &lt;/b&gt; &lt;/p&gt; &lt;p&gt; By using a pipe (|), you direct Cmd.exe to send the &lt;b&gt;dir&lt;/b&gt; command output through the &lt;b&gt;find&lt;/b&gt; filter command. The &lt;b&gt;find &lt;/b&gt;command selects only file names that contain the string "LOG." The &lt;b&gt;more &lt;/b&gt;command displays the file names that are selected by the &lt;b&gt;find &lt;/b&gt;command, one Command Prompt window at a time. For more information about filter commands, see &lt;a href="/resources/documentation/windows/xp/all/proddocs/en-us/filters.mspx"&gt;Using filters&lt;/a&gt;&lt;/p&gt; &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-6354347477719360883?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6vAPfVVB8lOC73ydhve3J8cV4Qg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6vAPfVVB8lOC73ydhve3J8cV4Qg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6vAPfVVB8lOC73ydhve3J8cV4Qg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6vAPfVVB8lOC73ydhve3J8cV4Qg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/vNITJ5uCWco" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/6354347477719360883/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=6354347477719360883" title="27 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/6354347477719360883?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/6354347477719360883?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/vNITJ5uCWco/every-time-i-need-to-redirect-dos.html" title="Redirecting DOS stdout stderr" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>27</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2007/09/every-time-i-need-to-redirect-dos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcGQHk5eSp7ImA9WB5UGE0.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-8688129567081679800</id><published>2007-08-22T12:41:00.000-05:00</published><updated>2007-08-22T13:07:01.721-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-22T13:07:01.721-05:00</app:edited><title>Upgrading GuidanceAutomationExtensions and GuidanceAutomationToolkit</title><content type="html">Well silly me I went and checked if there was and update to the GuidanceAutomationExtensions and GuidanceAutomationToolkit and low and behold there was. &lt;br /&gt;So I downloaded the new installs and went about the task of installing the new versions.  Well they still don't have an upgrade path in the installation program so I had to go and uninstall the old products.   I had the "Web Service Software Factory - December 2006 (refresh)" installed as well so I started there.   As I expected this uninstall did not go well. &lt;br /&gt;After trying multiple time to uninstall (with reboots and everything else I could think of) I accidentally installed the "Web Client Software Factory - January 2007".  Well to my surprise the Web Service Factory now uninstalled.  Well I assumed that was the hard part, and boy was I wrong.  Next after uninstalling the accidental install of "Web Client Factory" I tried uninstalling "Enterprise Library April 2007".  This went as good as the Web Service Factory.  So I thought maybe something in my environment got corrupted and i repaired the GuidanceAutomationExtensions, Toolkit and Enterprise Library.  Still no joy. &lt;br /&gt;After doing a lot of googling I came across &lt;a href="http://savij.com/2007/05/24/uninstalling-guidance-automation-extentions/"&gt;Savij&lt;/a&gt;  blog.  His/Her problem wasn't the same as mine but the solution worked.&lt;br /&gt;I tracked down the file RecipeFramework.xml in Documents and Settings\All Users\Application Data\Microsoft\Recipe Framework folder.  I removed&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;GuidancePackage Name="StrongNamingGuidancePackage" Version="1.0" Caption="Strong Naming Guidance Package" Description="Guidance Package that simplifies strong-naming of multiple projects" Host="VisualStudio" Guid="2d4b99e7-3126-4452-8882-edfd826ea78a" ConfigurationFile="C:\Program Files\Microsoft Enterprise Library 3.0 - April 2007\Strong Naming Guidance Package\StrongNamingGuidancePackage.xml" Timestamp="633113779240000000"&lt;br /&gt;&lt;br /&gt;GuidancePackage Name="GuidanceBlockFactory" Version="1.0" Caption="Application Block Software Factory" Description="Application Block Software Factory" Host="VisualStudio" Guid="8643B63B-A2A4-4ccc-933E-379645A3002E" ConfigurationFile="C:\Program Files\Microsoft Enterprise Library 3.0 - April 2007\Application Block Software Factory\BlockFactory.xml" Timestamp="633113779040000000"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;from the GuidancePackages elements and tried to uninstall GuidanceAutomationExtensions again. &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Hooray&lt;/span&gt;, it worked. &lt;br /&gt;The only thing left now was to try the Enterprise Library and to my surprise that uninstalled successfully also.&lt;br /&gt;&lt;br /&gt;Now I am of to try and reinstall it all again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-8688129567081679800?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qAOkWsj8n0Y1hdd9NzOMpyeCJOY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qAOkWsj8n0Y1hdd9NzOMpyeCJOY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qAOkWsj8n0Y1hdd9NzOMpyeCJOY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qAOkWsj8n0Y1hdd9NzOMpyeCJOY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/ci8xPivUzOI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/8688129567081679800/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=8688129567081679800" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/8688129567081679800?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/8688129567081679800?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/ci8xPivUzOI/upgrading-guidanceautomationextensions.html" title="Upgrading GuidanceAutomationExtensions and GuidanceAutomationToolkit" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2007/08/upgrading-guidanceautomationextensions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMERnk7fSp7ImA9WB5RFU8.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-1060096756163416283</id><published>2007-06-22T09:40:00.000-05:00</published><updated>2007-06-22T09:43:27.705-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-06-22T09:43:27.705-05:00</app:edited><title>Introducing XslCompiledTransform</title><content type="html">I was look into learning more about xslt and .net and found this site  very helpful&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/xmlteam/articles/Introducing_XslCompiledTransform.aspx"&gt;http://blogs.msdn.com/xmlteam/articles/Introducing_XslCompiledTransform.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-1060096756163416283?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IVw6J4u-qruzunkb5ybcRYug4OQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IVw6J4u-qruzunkb5ybcRYug4OQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IVw6J4u-qruzunkb5ybcRYug4OQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IVw6J4u-qruzunkb5ybcRYug4OQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/Vw1Ziy-5ZhM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/1060096756163416283/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=1060096756163416283" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/1060096756163416283?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/1060096756163416283?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/Vw1Ziy-5ZhM/introducing-xslcompiledtransform.html" title="Introducing XslCompiledTransform" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2007/06/introducing-xslcompiledtransform.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUMQng8fSp7ImA9WBFUFk0.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-4830141243602495016</id><published>2007-04-26T12:06:00.000-05:00</published><updated>2007-04-26T12:24:43.675-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-04-26T12:24:43.675-05:00</app:edited><title>Retrieving application settings from another assembly</title><content type="html">I was writing a windows service that referenced a DLL I had previously written when I came across a problem reading the ApplicationSettings of the parent EXE.  Well after starting down the path of writing my own class to accomplish this I came across this post from &lt;a href="http://learnerps-dotnet.blogspot.com/2006/12/dotnet-use-appconfig.html"&gt;"Niall Fallon"&lt;/a&gt;.&lt;br /&gt;Well he/she had done exactly what I was working on so I had to copy their post here so I would have it later.  &lt;br /&gt;Thank you Niall&lt;br /&gt;&lt;br /&gt;dotNET - Use app.config ApplicationSettings and UserSettings &lt;br /&gt;&lt;br /&gt;When using Settings in an Assembly or .exe you can use the Settings Designer to generate a config file using Settings. The Settings Designer provides a wrapper class which allows you to provide defaults and access the config data using Properties.&lt;br /&gt;But what if you're not working inside that Assembly or .exe? this presents a problem.&lt;br /&gt;If your loading the Assembly externally and want to access that Assembly's .config file you'll probably wish to use something in the System.Configuration namespace... unfortunately it's not of much use if you've created the .config file from the Settings Designer in Visual Studio!!&lt;br /&gt;This is because the Designer creates Sections and ApplicationSettings and UserSettings, the System.Configuration namespace does not provide a method to access these (it has a method to access AppSettings which are a different thing.&lt;br /&gt;Below I've written a workaround which locates the app.config and accesses the ApplicationSettings and UserSettings using XML instead of System.Configuration.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;_server = GetAssemblySettingOrDefault(Path.Combine("C:\temp\MyAssembly.dll"), "serverLocation", "http://localhost/mydefaultserver/mydefaultserver.asmx");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Return a key/value list of ApplicationSettings and UserSettings for a given .exe's of .dll's .config file.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;public static KeyValueConfigurationCollection GetAssemblySettings(string assemblyPath)&lt;br /&gt;{&lt;br /&gt;Configuration config = ConfigurationManager.OpenExeConfiguration(assemblyPath);&lt;br /&gt;&lt;br /&gt;XmlDocument dom = new XmlDocument();&lt;br /&gt;dom.Load(config.FilePath);&lt;br /&gt;&lt;br /&gt;//UserSettings and ApplicationSettings&lt;br /&gt;KeyValueConfigurationCollection returnList = new KeyValueConfigurationCollection();&lt;br /&gt;&lt;br /&gt;string[] settingsTypes = { "applicationSettings", "userSettings" };&lt;br /&gt;foreach (string settingType in settingsTypes)&lt;br /&gt;{&lt;br /&gt;XmlNode node = dom.SelectSingleNode("//configuration//" + settingType);&lt;br /&gt;if (node != null)&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;if (node.HasChildNodes)&lt;br /&gt;{&lt;br /&gt;foreach (XmlNode childNode in node.ChildNodes)&lt;br /&gt;{&lt;br /&gt;if (childNode.HasChildNodes)&lt;br /&gt;{&lt;br /&gt;foreach (XmlNode settingNode in childNode.ChildNodes)&lt;br /&gt;{&lt;br /&gt;if (settingNode != null)//the Settings node&lt;br /&gt;{&lt;br /&gt;if (settingNode.Attributes.Count &gt; 0) //there should be at least one attribute&lt;br /&gt;returnList.Add(settingNode.Attributes[0].Value, settingNode.InnerText);//the setting name and the setting/value&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;catch { throw; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return returnList;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;// Get the value of the Assembly ApplicationSetting or UserSetting from the key.&lt;br /&gt;// If the key does not have a value then return the default supplied by the caller.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;public static string GetAssemblySettingOrDefault(string assemblyPath, string assemblySettingKey, string assemblySettingDefaultValue)&lt;br /&gt;{&lt;br /&gt;string result = assemblySettingDefaultValue;&lt;br /&gt;KeyValueConfigurationCollection settings = GetAssemblySettings(assemblyPath);&lt;br /&gt;if(settings != null)&lt;br /&gt;{&lt;br /&gt;KeyValueConfigurationElement key = settings[assemblySettingKey];&lt;br /&gt;if(key != null)&lt;br /&gt;result = key.Value;&lt;br /&gt;}&lt;br /&gt;return result;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-4830141243602495016?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6RFoYNQPY61XB2_wr-JxOjlelqI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6RFoYNQPY61XB2_wr-JxOjlelqI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6RFoYNQPY61XB2_wr-JxOjlelqI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6RFoYNQPY61XB2_wr-JxOjlelqI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/UnsON1y9mRo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/4830141243602495016/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=4830141243602495016" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/4830141243602495016?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/4830141243602495016?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/UnsON1y9mRo/retrieving-application-settings-from.html" title="Retrieving application settings from another assembly" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2007/04/retrieving-application-settings-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MDQ3g6eyp7ImA9WBFWEkQ.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-4542303753946269262</id><published>2007-03-30T15:25:00.000-05:00</published><updated>2007-03-30T16:51:12.613-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-03-30T16:51:12.613-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GetFiles" /><category scheme="http://www.blogger.com/atom/ns#" term="multiple file extentions" /><title>Getting Multiple file extensions with Directory.GetFiles()</title><content type="html">I was looking for a way to list the files in a folder with different extensions and I came across a solution that Andreas Kraus(http://www.sunlab.de) wrote.  So I took that and modified it a little&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public static string[] GetFiles(&lt;br /&gt;                                string path,&lt;br /&gt;                                string searchPattern)&lt;br /&gt;{&lt;br /&gt;    string[] m_arExt = searchPattern.Split(';');&lt;br /&gt;&lt;br /&gt;    List&amp;lt;string&amp;gt; strFiles = new List&amp;lt;string&amp;gt;();&lt;br /&gt;    foreach(string filter in m_arExt)&lt;br /&gt;    {&lt;br /&gt;        strFiles.AddRange(&lt;br /&gt;               System.IO.Directory.GetFiles(path, filter));&lt;br /&gt;    }&lt;br /&gt;    return strFiles.ToArray();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Thanks Andreas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-4542303753946269262?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8skKOgR2VgRluMXCzFfYaoY4i4U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8skKOgR2VgRluMXCzFfYaoY4i4U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8skKOgR2VgRluMXCzFfYaoY4i4U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8skKOgR2VgRluMXCzFfYaoY4i4U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/GQwbOXUeAKg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/4542303753946269262/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=4542303753946269262" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/4542303753946269262?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/4542303753946269262?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/GQwbOXUeAKg/getting-multiple-file-extensions-with.html" title="Getting Multiple file extensions with Directory.GetFiles()" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2007/03/getting-multiple-file-extensions-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MGQXw5eCp7ImA9WBFXGU8.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-9077357673864988148</id><published>2007-03-26T09:30:00.000-05:00</published><updated>2007-03-26T10:03:40.220-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-03-26T10:03:40.220-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SelectSingleNode" /><category scheme="http://www.blogger.com/atom/ns#" term="XPath" /><category scheme="http://www.blogger.com/atom/ns#" term=".net 2.0" /><category scheme="http://www.blogger.com/atom/ns#" term="default namespace" /><title>SelectSingleNode with a default namespace</title><content type="html">Ok, I have a simple xml file with a default namespace as shown here:&lt;br /&gt;&lt;br /&gt;&lt; test xmlns="http://www.shaune.net/test"&gt;&lt;br /&gt; &lt; config&gt;&lt;br /&gt;     &lt; data&gt;test&lt; /data&gt;&lt;br /&gt;     &lt; settings&gt;&lt;br /&gt;         &lt; moredata&gt;test&lt; /moredata&gt;&lt;br /&gt;     &lt; /settings&gt;&lt;br /&gt; &lt; /config&gt;&lt;br /&gt;&lt; /test&gt;&lt;br /&gt;&lt;br /&gt;I loaded the xml file using&lt;br /&gt;XmlTextReader reader = new XmlTextReader("C:\\xml\\My.Config.xml" );&lt;br /&gt;nsm = new XmlNamespaceManager(reader.NameTable);&lt;br /&gt;&lt;br /&gt;//I read that this is how you specify a default namespace&lt;br /&gt;nsm.AddNamespace("", "http://www.shaune.net/test");&lt;br /&gt;&lt;br /&gt;configDoc.Load(reader);&lt;br /&gt;reader.Close();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and then I do a SelectSingleNode&lt;br /&gt;XmlNode test2 = configDoc.SelectSingleNode("//Config");&lt;br /&gt;&lt;br /&gt;This should work right?  Wrong!!!&lt;br /&gt;It turns out that  XPath 1.0 doesn't support default namespace. XPath 2.0 does but I guess that doesn't help right now with .net 2.0.&lt;br /&gt;&lt;br /&gt;What I needed to do was give the default namespace a name&lt;br /&gt;nsm.AddNamespace("cfg", "http://www.shaune.net/test");&lt;br /&gt;&lt;br /&gt;Then all my selects need  to specify this namespace&lt;br /&gt;XmlNode test2 = configDoc.SelectSingleNode("//cfg:Config");&lt;br /&gt;&lt;br /&gt;What a pain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-9077357673864988148?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rLzQYVAXSEUjyPJKb0QRm1_e8oY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rLzQYVAXSEUjyPJKb0QRm1_e8oY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rLzQYVAXSEUjyPJKb0QRm1_e8oY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rLzQYVAXSEUjyPJKb0QRm1_e8oY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/vsgAi3D4m_Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/9077357673864988148/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=9077357673864988148" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/9077357673864988148?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/9077357673864988148?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/vsgAi3D4m_Y/selectsinglenode-with-default-namespace.html" title="SelectSingleNode with a default namespace" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2007/03/selectsinglenode-with-default-namespace.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4ESXs9fCp7ImA9WBFWEU4.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-4154161106645190903</id><published>2007-02-28T11:52:00.000-05:00</published><updated>2007-03-28T20:15:08.564-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-03-28T20:15:08.564-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2007 ActiveX Control" /><title>Sharepoint 2007 OpenDocuments Class ActiveX Control</title><content type="html">I recently started having trouble with IE 7.0 and my Sharepoint 2007 site were if I selected open Edit Document from the dropdown list on any file in a Document Library nothing would happen. I also noticed if a file was not already checked out and I clicked on the link to look at it nothing would happen. I could right click and open the link in a new window or tab but that just didn't help if I need to edit the file in Word or Excel.&lt;br /&gt;&lt;a href="http://www.shaune.net/blog/uploaded_images/IEManage-Add-ons-758379.JPG"&gt;&lt;img style="margin: 0px 10px 10px 0px; float: left;" alt="" src="http://www.shaune.net/blog/uploaded_images/IEManage-Add-ons-747263.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have tracked down the problem to an ActiveX Control Sharepoint adds to your browser "SharePoint OpenDocuments Class".&lt;br /&gt;&lt;br /&gt;If you disable this Add-on the SharePoint Site behaves like you would expect except you don't get the Edit Document option in you Dropdown. This is by no means a solution to my problem, but I have at least tracked it down. I hope to find a Real solution soon.&lt;br /&gt;Anyone have any idea? Anyone having the same problem?&lt;br /&gt;&lt;br /&gt;Anyway I will let you know if I find more info.&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;Ok I did a little more research on this and found that many other people are having the same problem.  It turns out to be a conflict with Sharepoint Designer 2007 OWSSUPP.DLL version 12 and Office 2003 OWSSUPP.DLL version 11.&lt;br /&gt;I really didn't have the option to remove Sharepoint Designer since we are using it for custom workflow creation. &lt;br /&gt;I ran Microsoft Office Diagnostics and it found 1 problem but unfortunately it didn't go into any detail as to what the problem was.&lt;br /&gt;Lets hope this solves the problem once and for all!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-4154161106645190903?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pEQwkd221ztiwkfYvm1T5bICQDE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pEQwkd221ztiwkfYvm1T5bICQDE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pEQwkd221ztiwkfYvm1T5bICQDE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pEQwkd221ztiwkfYvm1T5bICQDE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/4vqQdZFpl38" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/4154161106645190903/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=4154161106645190903" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/4154161106645190903?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/4154161106645190903?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/4vqQdZFpl38/sharepoint-2007-opendocuments-class.html" title="Sharepoint 2007 OpenDocuments Class ActiveX Control" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2007/02/sharepoint-2007-opendocuments-class.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUNQno9eCp7ImA9WBFREkk.&quot;"><id>tag:blogger.com,1999:blog-1028236585843827010.post-2618054909872642077</id><published>2007-02-23T10:56:00.000-05:00</published><updated>2007-02-23T10:58:13.460-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-02-23T10:58:13.460-05:00</app:edited><title>Hello</title><content type="html">Ok just created my first blog.  Soon as i get a chance i will be adding what I can&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1028236585843827010-2618054909872642077?l=shaunedonohue.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y7JsTkhxJnBl4E-bXrqDnPIPpj4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y7JsTkhxJnBl4E-bXrqDnPIPpj4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y7JsTkhxJnBl4E-bXrqDnPIPpj4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y7JsTkhxJnBl4E-bXrqDnPIPpj4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnicalRamblings/~4/90GwFb5UvsI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shaunedonohue.blogspot.com/feeds/2618054909872642077/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1028236585843827010&amp;postID=2618054909872642077" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/2618054909872642077?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1028236585843827010/posts/default/2618054909872642077?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnicalRamblings/~3/90GwFb5UvsI/hello.html" title="Hello" /><author><name>Shaune Donohue</name><uri>https://profiles.google.com/113184728250268017047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-FYv0fhP8eCI/AAAAAAAAAAI/AAAAAAAAGEQ/yHDlcFCPcp0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://shaunedonohue.blogspot.com/2007/02/hello.html</feedburner:origLink></entry></feed>

