<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4444188791642767822</id><updated>2012-02-14T16:25:31.897-08:00</updated><category term='Powershell quotes'/><category term='visual studio find replace tagged expressions'/><category term='SharePoint Solution Package Web Part'/><title type='text'>Software Recipes</title><subtitle type='html'>After all, we cook all day long</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-1253868779102186610</id><published>2011-04-11T11:39:00.000-07:00</published><updated>2011-04-11T11:42:29.288-07:00</updated><title type='text'>Visual Studio &amp; SharePoint: how to create package as part of the build process</title><content type='html'>In order to build a project and have the package created, this can be added to the project file (csproj, vbproj): &lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;&amp;lt;PostBuildEventDependsOn&amp;gt;&lt;br /&gt;  $(PostBuildEventDependsOn);&lt;br /&gt;  CreatePackage;&lt;br /&gt;&amp;lt;/PostBuildEventDependsOn&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-1253868779102186610?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/1253868779102186610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=1253868779102186610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/1253868779102186610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/1253868779102186610'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/04/visual-studio-sharepoint-how-to-create.html' title='Visual Studio &amp; SharePoint: how to create package as part of the build process'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-4242925826541555597</id><published>2011-04-04T10:35:00.000-07:00</published><updated>2011-04-04T10:36:16.111-07:00</updated><title type='text'>SharePoint 2010: PowerShell to delete a web part from the gallery</title><content type='html'>&lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;param($Identity = "", $Url = "")&lt;br /&gt;&lt;br /&gt;[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")&lt;br /&gt;[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.WebPartPages")&lt;br /&gt;[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Publishing")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$SPSite = New-Object Microsoft.SharePoint.SPSite($Url)&lt;br /&gt;&lt;br /&gt;$SPWeb = $SPSite.OpenWeb()&lt;br /&gt;$WebPartGallery = $SPWeb.Lists["Web Part Gallery"]&lt;br /&gt;$gall = $WebPartGallery.Items  select Name&lt;br /&gt;$count = $gall.Count&lt;br /&gt;for ($i =0; $i -lt $count;$i++)&lt;br /&gt;{&lt;br /&gt;    if ($gall[$i] -match $Identity)&lt;br /&gt;    {&lt;br /&gt;        $WebPartGallery.Items.Delete($i)&lt;br /&gt;        $SPWeb.Update()&lt;br /&gt;        Write-Host "$Identity deleted"&lt;br /&gt;        $SPWeb.Dispose()&lt;br /&gt;    }&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-4242925826541555597?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/4242925826541555597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=4242925826541555597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4242925826541555597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4242925826541555597'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/04/sharepoint-2010-powershell-to-delete.html' title='SharePoint 2010: PowerShell to delete a web part from the gallery'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-2569483899157079747</id><published>2011-03-30T05:25:00.001-07:00</published><updated>2011-03-30T05:25:56.386-07:00</updated><title type='text'>VMWare player: blank full screen on Windows 7</title><content type='html'>Solution: enable "Accelerate 3D graphics."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-2569483899157079747?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/2569483899157079747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=2569483899157079747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2569483899157079747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2569483899157079747'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/03/blog-post.html' title='VMWare player: blank full screen on Windows 7'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-3239072928431190646</id><published>2011-03-04T16:21:00.000-08:00</published><updated>2011-03-04T16:24:20.791-08:00</updated><title type='text'>BitLocker: get out of recovery mode</title><content type='html'>Some changes to BIOS will cause bitlocker to enter recovery mode.&lt;br /&gt;&lt;br /&gt;One way to get out of this follows:&lt;br /&gt;&lt;br /&gt;- enter the 8 groups of 6 digits&lt;br /&gt;- get into Windows&lt;br /&gt;- type "manage-bde -protectors -disable c:" from a admin command prompt&lt;br /&gt;- reboot&lt;br /&gt;- type "manage-bde -protectors -enable c:" from a admin command prompt&lt;br /&gt;- reboot&lt;br /&gt;&lt;br /&gt;It shouldn't prompt now.&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://blogs.technet.com/b/askcore/archive/2010/08/04/issues-resulting-in-bitlocker-recovery-mode-and-their-resolution.aspx"&gt;here &lt;/a&gt;for details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-3239072928431190646?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/3239072928431190646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=3239072928431190646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3239072928431190646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3239072928431190646'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/03/bitlocker-get-out-of-recovery-mode.html' title='BitLocker: get out of recovery mode'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-589874032482786582</id><published>2011-03-03T11:25:00.000-08:00</published><updated>2011-03-03T11:27:49.096-08:00</updated><title type='text'>SharePoint: list throttling messages</title><content type='html'>There are two messages that people often get when throttling limits (5K default) is reached.&lt;br /&gt;&lt;br /&gt;"Displaying only the newest results below. To view all results, narrow your query by adding a filter.": this is seen when metadata navigation and filtering is enabled for the list.&lt;br /&gt;&lt;br /&gt;"This view cannot be displayed because it exceeds the list view threshold (5000 items) enforced by the administrator.": this is seen in all other cases.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-589874032482786582?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/589874032482786582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=589874032482786582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/589874032482786582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/589874032482786582'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/03/sharepoint-list-throttling-messages.html' title='SharePoint: list throttling messages'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-2191871452990431801</id><published>2011-02-17T03:46:00.000-08:00</published><updated>2011-02-21T04:03:34.234-08:00</updated><title type='text'>BI: Technet Intro Articles</title><content type='html'>Here's a set of articles that are a good intro to the Microsoft BI stack.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/magazine/2009.08.introtobi.aspx"&gt;Business Intelligence: Planning Your First Microsoft BI Solution&lt;/a&gt;&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/magazine/gg398018.aspx"&gt;Business Intelligence: Building a Data Foundation for a BI Solution&lt;/a&gt;&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/magazine/ee677579.aspx"&gt;Business Intelligence: Building Your First Cube&lt;/a&gt;&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/magazine/gg405051.aspx"&gt;Business Intelligence: Empower Your Users with Business Intelligence&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-2191871452990431801?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/2191871452990431801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=2191871452990431801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2191871452990431801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2191871452990431801'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/02/bi-technet-intro-articles.html' title='BI: Technet Intro Articles'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-492756604101971196</id><published>2011-02-09T17:23:00.000-08:00</published><updated>2011-02-09T17:27:21.771-08:00</updated><title type='text'>SharePoint 2010: code for dumping a taxonomy tree</title><content type='html'>Just customize the data you need from each node type (store, group, set, term).&lt;br /&gt;&lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;        private void DumpTaxonomy(string siteUrl)&lt;br /&gt;        {&lt;br /&gt;            Stack&amp;lt;string&amp;gt; stack = new Stack&amp;lt;string&amp;gt;();&lt;br /&gt;            using (SPSite site = new SPSite(siteUrl))&lt;br /&gt;            {&lt;br /&gt;                TaxonomySession session = new TaxonomySession(site, false);&lt;br /&gt;                int nts = 0;&lt;br /&gt;                foreach (TermStore ts in session.TermStores)&lt;br /&gt;                {&lt;br /&gt;                    nts++;&lt;br /&gt;                    int ng = 0;&lt;br /&gt;                    foreach (Group g in ts.Groups)&lt;br /&gt;                    {&lt;br /&gt;                        ng++;&lt;br /&gt;                        int ns = 0;&lt;br /&gt;                        foreach (TermSet s in g.TermSets)&lt;br /&gt;                        {&lt;br /&gt;                            ns++;&lt;br /&gt;                            int nt = 0;&lt;br /&gt;                            foreach (Term t in s.Terms)&lt;br /&gt;                            {&lt;br /&gt;                                nt++;&lt;br /&gt;                                DumpTerm(t, stack, 4);&lt;br /&gt;                            }&lt;br /&gt;                            stack.Push(ReportNode(3, nt));&lt;br /&gt;                        }&lt;br /&gt;                        stack.Push(ReportNode(2, ns));&lt;br /&gt;                    }&lt;br /&gt;                    stack.Push(ReportNode(1, ng));&lt;br /&gt;                }&lt;br /&gt;                stack.Push(ReportNode(0, nts));&lt;br /&gt;            }&lt;br /&gt;            while (stack.Count &amp;gt; 0)&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(stack.Pop());&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void DumpTerm(Term t, Stack&amp;lt;string&amp;gt; stack, int level)&lt;br /&gt;        {&lt;br /&gt;            int nt = 0;&lt;br /&gt;            foreach (Term children in t.Terms)&lt;br /&gt;            {&lt;br /&gt;                nt++;&lt;br /&gt;                DumpTerm(children, stack, level + 1);&lt;br /&gt;            }&lt;br /&gt;            stack.Push(ReportNode(level, t.Name + " " + nt.ToString()));&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private string ReportNode(int level, object children)&lt;br /&gt;        {&lt;br /&gt;            StringBuilder sb = new StringBuilder();&lt;br /&gt;            for(int i = 0; i &amp;lt; level; i++)&lt;br /&gt;            {&lt;br /&gt;                sb.Append("\t");&lt;br /&gt;            }&lt;br /&gt;            sb.Append(children);&lt;br /&gt;            return (sb.ToString());&lt;br /&gt;        }&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-492756604101971196?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/492756604101971196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=492756604101971196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/492756604101971196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/492756604101971196'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/02/sharepoint-2010-code-for-dumping.html' title='SharePoint 2010: code for dumping a taxonomy tree'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-7482285641375416864</id><published>2011-02-03T08:26:00.000-08:00</published><updated>2011-02-03T08:27:14.626-08:00</updated><title type='text'>SharePoint 2010: How to enable developer dashboard</title><content type='html'>&lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;$service = [Microsoft.SharePoint.Administration.SPWebService]::ContentService&lt;br /&gt;$addsetting =$service.DeveloperDashboardSettings&lt;br /&gt;$addsetting.DisplayLevel = [Microsoft.SharePoint.Administration.SPDeveloperDashboardLevel]::OnDemand&lt;br /&gt;$addsetting.Update()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-7482285641375416864?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/7482285641375416864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=7482285641375416864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/7482285641375416864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/7482285641375416864'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/02/sharepoint-2010-how-to-enable-developer.html' title='SharePoint 2010: How to enable developer dashboard'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-7184581256765540824</id><published>2011-02-03T07:10:00.000-08:00</published><updated>2011-02-03T07:13:38.176-08:00</updated><title type='text'>SharePoint 2010: how to get SQL rows for a document in a library</title><content type='html'>Here's the snippet, just change the doc lib name and doc title.&lt;br /&gt;&lt;br /&gt;&lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;select * from AllDocs d&lt;br /&gt;join AllLists l&lt;br /&gt;on d.ListId = d.ListId&lt;br /&gt;and upper(l.tp_Title) = 'UPPERCASE DOC LIB NAME'&lt;br /&gt;and upper(d.LeafName) = 'UPPERCASE DOC TITLE'&lt;br /&gt;join AllUserData u&lt;br /&gt;on u.tp_DocId = d.Id&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-7184581256765540824?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/7184581256765540824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=7184581256765540824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/7184581256765540824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/7184581256765540824'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/02/sharepoint-2010-how-to-get-sql-rows-for.html' title='SharePoint 2010: how to get SQL rows for a document in a library'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-6249602023096653164</id><published>2011-02-01T11:15:00.001-08:00</published><updated>2011-02-01T11:16:39.887-08:00</updated><title type='text'>SharePoint 2010: "Access denied by Business Data Connectivity" when viewing list that accesses external data</title><content type='html'>Solution: permissions (either to users if delegation is used, or the app pool account is trusted subsystem is used) need to be assigned through Business Data Connectivity Service in Central Administration site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-6249602023096653164?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/6249602023096653164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=6249602023096653164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/6249602023096653164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/6249602023096653164'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/02/sharepoint-2010-access-denied-by.html' title='SharePoint 2010: &quot;Access denied by Business Data Connectivity&quot; when viewing list that accesses external data'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-5215790821377805112</id><published>2011-01-21T07:10:00.000-08:00</published><updated>2011-01-21T07:17:04.512-08:00</updated><title type='text'>ASP.Net: OnSelectedIndexChanged event not firing</title><content type='html'>I had this snippet in a page:&lt;br /&gt;&lt;br /&gt;&lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;&amp;lt;asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"&amp;gt;&lt;br /&gt;    &amp;lt;ContentTemplate&amp;gt;&lt;br /&gt;        &amp;lt;table&amp;gt;&lt;br /&gt;            &amp;lt;tr&amp;gt;&lt;br /&gt;                &amp;lt;td&amp;gt;&lt;br /&gt;                    &amp;lt;asp:ListBox ID="lst" runat="server" OnSelectedIndexChanged="lst_SelectedIndexChanged"&amp;gt;&amp;lt;/asp:ListBox&amp;gt;&lt;br /&gt;                &amp;lt;/td&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Problem was that OnSelectedIndexChanged was not firing.&lt;br /&gt;&lt;br /&gt;Solution was to set AutoPostBack to true in the list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-5215790821377805112?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/5215790821377805112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=5215790821377805112' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/5215790821377805112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/5215790821377805112'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/01/asp-onselectedindexchanged-event-not.html' title='ASP.Net: OnSelectedIndexChanged event not firing'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-3395370103583474206</id><published>2011-01-21T06:15:00.000-08:00</published><updated>2011-01-21T06:20:43.424-08:00</updated><title type='text'>SharePoint 2010: Adding taxonomy field to files in a Document Library</title><content type='html'>Pre-requisite is that a taxonomy structure is set up with a "Term Group" group, a child "Term Set" with a "Term Name" term on it. Other than that, it's just about adapting site and list names to your deployment.&lt;br /&gt;&lt;br /&gt;Here's the code:&lt;br /&gt;&lt;br /&gt;&lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;        private void Test()&lt;br /&gt;        {&lt;br /&gt;            // get doc lib&lt;br /&gt;            SPWebApplication wa = SPWebApplication.Lookup(new Uri("http://server"));&lt;br /&gt;            SPSite site = wa.Sites["/sites/test"];&lt;br /&gt;            SPDocumentLibrary dl = site.RootWeb.Lists["DocumentLibrary1"] as SPDocumentLibrary;&lt;br /&gt;          &lt;br /&gt;            // get taxonomy field&lt;br /&gt;            TaxonomySession session = new TaxonomySession(site, false);&lt;br /&gt;            TermSet set = session.DefaultSiteCollectionTermStore.sGroups["Term Group"].TermSets["Term Set"];&lt;br /&gt;            Term term = set.GetTerms("Term Name", 1033, false)[0];&lt;br /&gt;            TaxonomyField tf = dl.Fields["Term Field"] as TaxonomyField;&lt;br /&gt;&lt;br /&gt;            // add files&lt;br /&gt;            for (int i = 0; i &amp;lt; 100; i++)&lt;br /&gt;            {&lt;br /&gt;                using (FileStream fs = (new FileInfo(@"C:\Content.txt")).OpenRead())&lt;br /&gt;                {&lt;br /&gt;                    // add item&lt;br /&gt;                    string name = "Name " + i;&lt;br /&gt;                    Hashtable ht = new Hashtable();&lt;br /&gt;                    SPFile file = dl.RootFolder.Files.Add(name, fs, ht, true);&lt;br /&gt;                    SPListItem item = file.Item;&lt;br /&gt;&lt;br /&gt;                    // set item's taxonomy field value&lt;br /&gt;                    tf.SetFieldValue(item, term);&lt;br /&gt;                    item.Update();&lt;br /&gt;&lt;br /&gt;                    // progress&lt;br /&gt;                    Console.WriteLine("{0} created", name);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-3395370103583474206?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/3395370103583474206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=3395370103583474206' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3395370103583474206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3395370103583474206'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/01/sharepoint-2010-adding-taxonomy-field.html' title='SharePoint 2010: Adding taxonomy field to files in a Document Library'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-4823336280683879260</id><published>2011-01-20T05:58:00.000-08:00</published><updated>2011-01-20T06:02:20.921-08:00</updated><title type='text'>SharePoint: The Taxonomy feature (Feature ID "73EF14B1-13A9-416b-A9B5-ECECA2B0604C") has not been activated.</title><content type='html'>Taxonomy feature is a hidden feature; it doesn't appear in the Site Collection Features UI. Enable it from SP's Management Shell:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;Enable-SPFeature -id &amp;quot;73EF14B1-13A9-416b-A9B5-ECECA2B0604C&amp;quot; -url &amp;lt;site collection Url&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-4823336280683879260?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/4823336280683879260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=4823336280683879260' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4823336280683879260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4823336280683879260'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/01/sharepoint-taxonomy-feature-feature-id.html' title='SharePoint: The Taxonomy feature (Feature ID &quot;73EF14B1-13A9-416b-A9B5-ECECA2B0604C&quot;) has not been activated.'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-2912951925918846669</id><published>2011-01-20T04:53:00.000-08:00</published><updated>2011-01-20T04:59:58.030-08:00</updated><title type='text'>VMWare: blank screen when "use host setting for monitor" is chosen</title><content type='html'>After booting a virtual box, I started getting a blank screen after the Windows boot progress bar dissapeared. I wasn't sure what may have changed.&lt;br /&gt;Went to edit VM settings in VMWare player, and noticed that if I chose a specific resolution, I didn't get the blank screen. But - the resulting windows was too small.&lt;br /&gt;Solution: ended up deleting all VM files other than .vmx and .vmdk. Booted and worked.&lt;br /&gt;(Not sure what root cause was though.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-2912951925918846669?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/2912951925918846669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=2912951925918846669' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2912951925918846669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2912951925918846669'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/01/vmware-blank-screen-when-use-host.html' title='VMWare: blank screen when &quot;use host setting for monitor&quot; is chosen'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-6861946698793040243</id><published>2011-01-19T10:46:00.000-08:00</published><updated>2011-01-19T10:51:39.770-08:00</updated><title type='text'>SharePoint 2010: read &amp; write profile properties</title><content type='html'>Assuming the property exists and can be read and written, the following code does the job.&lt;br /&gt;&lt;br /&gt;&lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;            StringBuilder s = new StringBuilder();&lt;br /&gt;&lt;br /&gt;            // get profile&lt;br /&gt;            SPServiceContext context = SPServiceContext.GetContext(SPContext.Current.Site);&lt;br /&gt;            UserProfileManager profileManager = new UserProfileManager(context);&lt;br /&gt;            UserProfile profile = profileManager.GetUserProfile(SPContext.Current.Web.CurrentUser.Name);&lt;br /&gt;&lt;br /&gt;            // read &amp;amp; write profile's property&lt;br /&gt;            const string testProperty = "TestProperty";&lt;br /&gt;            string testValue;&lt;br /&gt;            UserProfileValueCollection val = profile[testProperty];&lt;br /&gt;            if (val != null &amp;amp;&amp;amp; val.Value != null)&lt;br /&gt;            {&lt;br /&gt;                testValue = val.Value as string;&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                testValue = "Empty";&lt;br /&gt;                profile[testProperty].Value = DateTime.Now.ToString();&lt;br /&gt;                profile.Commit();&lt;br /&gt;            }&lt;br /&gt;            s.Append(profile[PropertyConstants.AccountName] + " = " + testValue);&lt;br /&gt;            s.Append(Environment.NewLine);&lt;br /&gt;            TestText.Text = s.ToString();&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-6861946698793040243?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/6861946698793040243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=6861946698793040243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/6861946698793040243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/6861946698793040243'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/01/sharepoint-2010-read-write-profile.html' title='SharePoint 2010: read &amp; write profile properties'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-1162584300033920387</id><published>2011-01-19T05:12:00.000-08:00</published><updated>2011-01-19T05:14:23.950-08:00</updated><title type='text'>Virtual PC: "the hibernated state is not compatible with the installed version of windows virtual pc"</title><content type='html'>Problem is that the "virtual saved state" file may contain information of the machine it last booted on (likely, the box virtual was copied from), that not compatible with the machine where virtual is being booted on.&lt;br /&gt;Solution: delete that state file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-1162584300033920387?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/1162584300033920387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=1162584300033920387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/1162584300033920387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/1162584300033920387'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/01/virtual-pc-hibernated-state-is-not.html' title='Virtual PC: &quot;the hibernated state is not compatible with the installed version of windows virtual pc&quot;'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-8042115078797597115</id><published>2011-01-12T03:33:00.000-08:00</published><updated>2011-01-12T03:47:10.440-08:00</updated><title type='text'>Cryptography &amp; .NET: Simple encryption &amp; descryption using certificates</title><content type='html'>Here's a simple toy that describes encryption with a public key by a sender and decryption with a private key by the receiver. Notice that the only object that's sent is the cipher text. Other than that, all entities don't cross boundaries, nor the certificate (which in one case is read from the store, from the file in the other).&lt;br /&gt;&lt;br /&gt;First, you have to create a suitable certificate. Only caveats: mark its key for 'Exchange' type, and its private key exportable:&lt;br /&gt;&lt;br /&gt;&lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;makecert.exe Test.cer -r -n "CN=Test Subject" -sr LocalMachine -ss My -sky Exchange -pe&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then, the code, which is mostly self explanatory. (Keys are accessed through providers that encapsulate calculations performed with them.)&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;        private void TestSenderReceiver()&lt;br /&gt;        {&lt;br /&gt;            //////////////////////////////////////////////////////&lt;br /&gt;            // SENDER CODE&lt;br /&gt;            //////////////////////////////////////////////////////&lt;br /&gt;&lt;br /&gt;            // get certificate&lt;br /&gt;            var certSender = new X509Certificate2(@&amp;quot;C:\Test.cer&amp;quot;);&lt;br /&gt;&lt;br /&gt;            // encrypt with public key&lt;br /&gt;            var providerSender = (RSACryptoServiceProvider)certSender.PublicKey.Key;&lt;br /&gt;            var plainSender = Encoding.Default.GetBytes(&amp;quot;this is plain text&amp;quot;);&lt;br /&gt;            var cipher = providerSender.Encrypt(plainSender, false);&lt;br /&gt;&lt;br /&gt;            //////////////////////////////////////////////////////&lt;br /&gt;            // RECEIVER CODE&lt;br /&gt;            //////////////////////////////////////////////////////&lt;br /&gt;&lt;br /&gt;            // get certificate&lt;br /&gt;            var store = new X509Store(&amp;quot;MY&amp;quot;, StoreLocation.LocalMachine);&lt;br /&gt;            store.Open(OpenFlags.ReadOnly &amp;#124; OpenFlags.OpenExistingOnly);&lt;br /&gt;            var certReceiver = store.Certificates.Find(X509FindType.FindBySubjectName, &amp;quot;Test Subject&amp;quot;, false)[0];&lt;br /&gt;&lt;br /&gt;            // decrypt with private key&lt;br /&gt;            var providerReceiver = (RSACryptoServiceProvider)certReceiver.PrivateKey;&lt;br /&gt;            var plainReceiver = providerReceiver.Decrypt(cipher, false);&lt;br /&gt;&lt;br /&gt;            // check they are same&lt;br /&gt;            int i;&lt;br /&gt;            for (i = 0; i &amp;lt; plainSender.Length &amp;amp;&amp;amp; i &amp;lt; plainReceiver.Length; i++)&lt;br /&gt;            {&lt;br /&gt;                if(plainSender[i] != plainReceiver[i])&lt;br /&gt;                {&lt;br /&gt;                    break;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            if(i == plainSender.Length &amp;amp;&amp;amp; i == plainReceiver.Length)&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(&amp;quot;Same!&amp;quot;);                &lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-8042115078797597115?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/8042115078797597115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=8042115078797597115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/8042115078797597115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/8042115078797597115'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/01/cryptography-net-simple-encryption.html' title='Cryptography &amp; .NET: Simple encryption &amp; descryption using certificates'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-5440938875334014754</id><published>2011-01-09T08:23:00.000-08:00</published><updated>2011-01-09T08:25:35.403-08:00</updated><title type='text'>Powershell script for fixing subtitles files (.srt)</title><content type='html'>&lt;a href="https://docs.google.com/uc?id=0BznXo2AlF36UZTdkM2QzN2ItYjYzMC00OTJlLWE0OTktYWM3MTMwOWFhZTNk&amp;export=download&amp;hl=en"&gt;This script&lt;/a&gt; fixes the offset of subtitles files (.srt).&lt;br /&gt;&lt;br /&gt;Sample call: .\SrtFixer.ps1 -Path 'Movie.srt' -Offset '-00:00:26.700'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-5440938875334014754?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/5440938875334014754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=5440938875334014754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/5440938875334014754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/5440938875334014754'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/01/powershell-script-for-fixing-subtitles.html' title='Powershell script for fixing subtitles files (.srt)'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-6975992390071016377</id><published>2011-01-06T04:24:00.000-08:00</published><updated>2011-01-06T04:27:27.530-08:00</updated><title type='text'>SQL Server service not starting: initerrlog: Could not open error log file ''. Operating system error = 3(The system cannot find the path specified.).</title><content type='html'>Issue was that the account under which service attempted to run was Network Service, which didn't have enough privileges.&lt;br /&gt;While I set it to Local System and got it working, for security reasons, you should set it to a domain account instead. More info &lt;a href="http://msdn.microsoft.com/en-us/library/ms143504.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-6975992390071016377?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/6975992390071016377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=6975992390071016377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/6975992390071016377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/6975992390071016377'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/01/sql-server-service-not-starting.html' title='SQL Server service not starting: initerrlog: Could not open error log file &apos;&apos;. Operating system error = 3(The system cannot find the path specified.).'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-2091827669809738515</id><published>2011-01-05T04:12:00.000-08:00</published><updated>2011-01-05T04:17:41.443-08:00</updated><title type='text'>Cannot run dcpromo.exe after Certificate Services have been installed</title><content type='html'>This is because, once a Certificate Authority is installed, its domain membership cannot be changed.&lt;br /&gt;Therefore, install Domain Services role, run dcpromo.exe and then install Certificate Services.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-2091827669809738515?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/2091827669809738515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=2091827669809738515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2091827669809738515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2091827669809738515'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2011/01/cannot-run-dcpromoexe-after-certificate.html' title='Cannot run dcpromo.exe after Certificate Services have been installed'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-3048742602504818118</id><published>2010-12-03T06:00:00.000-08:00</published><updated>2010-12-03T06:02:07.704-08:00</updated><title type='text'>SPWebApplication.Lookup() throws "This operation can be performed only on a computer that is joined to a server farm..."</title><content type='html'>In my case, issue was that project's target platform was x86. Changed it to 'Any CPU' and it worked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-3048742602504818118?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/3048742602504818118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=3048742602504818118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3048742602504818118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3048742602504818118'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2010/12/this-operation-can-be-performed-only-on.html' title='SPWebApplication.Lookup() throws &quot;This operation can be performed only on a computer that is joined to a server farm...&quot;'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-8183659663157675980</id><published>2010-09-07T08:22:00.001-07:00</published><updated>2010-09-07T08:26:50.581-07:00</updated><title type='text'>ASP.Net Error: "The requested content appears to be script and will not be served by the static file handler"</title><content type='html'>This means that, while there exist a handler that maps to that type of content (e.g. aspx), it doesn't apply to currently used .NET Framework.&lt;br /&gt;Solution is to run &lt;strong&gt;aspnet_regiis.exe -i&lt;/strong&gt; for the current framework. (e.g. C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i)&lt;br /&gt;If that doesn't work, then double check whether there's a handler that maps to that content for integrated pipeline mode. If there's not, a possible solution is to change to classic pipeline mode.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-8183659663157675980?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/8183659663157675980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=8183659663157675980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/8183659663157675980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/8183659663157675980'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2010/09/aspnet-error-requested-content-appears.html' title='ASP.Net Error: &quot;The requested content appears to be script and will not be served by the static file handler&quot;'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-3302898058886893952</id><published>2010-08-25T11:24:00.000-07:00</published><updated>2010-08-25T12:40:16.322-07:00</updated><title type='text'>PowerShell: Storing and retrieving secrets</title><content type='html'>function StoreSecret($plain, $subkeyPath, $secretRegValue)&lt;br /&gt;{&lt;br /&gt;  [void][System.Reflection.Assembly]::LoadWithPartialName("System.Security")&lt;br /&gt;  $secret = [System.Security.Cryptography.ProtectedData]::Protect([System.Text.Encoding]::UTF7.GetBytes($plain), $null, [System.Security.Cryptography.DataProtectionScope]::CurrentUser)&lt;br /&gt;  $subkey=[Microsoft.Win32.Registry]::LocalMachine.CreateSubKey($subkeyPath)&lt;br /&gt;  [void]$subkey.SetValue($secretRegValue, $secret, [Microsoft.Win32.RegistryValueKind]::Binary)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function RetrieveSecret($subkeyPath, $secretRegValue)&lt;br /&gt;{&lt;br /&gt;  [void][System.Reflection.Assembly]::LoadWithPartialName("System.Security")&lt;br /&gt;  $secret = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey($subkeyPath).GetValue($secretRegValue)&lt;br /&gt;  $plain = [System.Text.Encoding]::UTF7.GetString([System.Security.Cryptography.ProtectedData]::Unprotect($secret, $null, [System.Security.Cryptography.DataProtectionScope]::CurrentUser))&lt;br /&gt;  return $plain&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# set needed constants&lt;br /&gt;$subkeyPath = "Software\Pepino";&lt;br /&gt;$secretRegValue = "Secret";&lt;br /&gt;&lt;br /&gt;function StoreMySecret($plain)&lt;br /&gt;{&lt;br /&gt;  StoreSecret -plain $plain -subkeyPath $subkeyPath -secretRegValue $secretRegValue&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function RetrieveMySecret()&lt;br /&gt;{&lt;br /&gt;  $plain = RetrieveSecret -subkeyPath $subkeyPath -secretRegValue $secretRegValue&lt;br /&gt;  return $plain&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# store secret&lt;br /&gt;$plain="boquita"&lt;br /&gt;Write-Host "Secret is `"$plain`"" -BackgroundColor Black -ForegroundColor Yellow&lt;br /&gt;StoreMySecret -plain $plain&lt;br /&gt;&lt;br /&gt;# retrieve secret&lt;br /&gt;$plain = RetrieveMySecret&lt;br /&gt;Write-Host "Recovered secret is `"$plain`"" -BackgroundColor Black -ForegroundColor Yellow&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-3302898058886893952?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/3302898058886893952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=3302898058886893952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3302898058886893952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3302898058886893952'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2010/08/powershell-storing-and-retrieving.html' title='PowerShell: Storing and retrieving secrets'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-94532352720544037</id><published>2010-08-19T10:32:00.000-07:00</published><updated>2010-08-19T11:25:08.724-07:00</updated><title type='text'>SQL Server: Backup/Restore sample PowerShell script</title><content type='html'>This is a sample script that demonstrates a typical recovery scenario in SQL Server: full, differential and log backups restored in that order to bring back a database online.&lt;br /&gt;&lt;br /&gt;(A pre-requisite to run it is to have SQL Server snap-ins added to PowerShell. See &lt;a href="http://msdn.microsoft.com/en-us/library/cc281962.aspx"&gt;here&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;### SCRIPT STARTS HERE&lt;br /&gt;$instance='.\SQLEXPRESS'&lt;br /&gt;&lt;br /&gt;# drop db&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;IF DB_ID('DUMMY') IS NOT NULL ALTER DATABASE DUMMY SET SINGLE_USER WITH ROLLBACK IMMEDIATE"&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;IF DB_ID('DUMMY') IS NOT NULL DROP DATABASE DUMMY"&lt;br /&gt;&lt;br /&gt;# create db with a table&lt;br /&gt;$filesDir="c:\Garbage"&lt;br /&gt;if(-not(test-path $filesDir)){mkdir $filesDir}&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;CREATE DATABASE DUMMY ON (NAME = DUMMY_DATA,FILENAME='$filesDir\DUMMY_DATA.MDF') LOG ON (NAME = DUMMY_LOG, FILENAME = '$filesDir\DUMMY_LOG.LDF')"&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;ALTER DATABASE DUMMY SET RECOVERY FULL"&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE DUMMY;CREATE TABLE DATA(VALUE SMALLINT)"&lt;br /&gt;&lt;br /&gt;# query db (and ignore error)&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE DUMMY;SELECT VALUE FROM DATA" -EA "SILENTLYCONTINUE"&lt;br /&gt;&lt;br /&gt;# insert some rows&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE DUMMY;INSERT INTO DATA(VALUE) VALUES(1)"&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE DUMMY;INSERT INTO DATA(VALUE) VALUES(2)"&lt;br /&gt;&lt;br /&gt;# query db&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE DUMMY;SELECT VALUE FROM DATA"&lt;br /&gt;&lt;br /&gt;# full backup&lt;br /&gt;$full="$filesDir\Full.bak"&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;BACKUP DATABASE DUMMY TO DISK='$full'"&lt;br /&gt;&lt;br /&gt;# PROBLEM HERE, SOMEONE MISTAKENLY DROPS DATABASE&lt;br /&gt;# drop db&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;ALTER DATABASE DUMMY SET SINGLE_USER WITH ROLLBACK IMMEDIATE"&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;DROP DATABASE DUMMY"&lt;br /&gt;&lt;br /&gt;# TEST: restore full backup and verify data is there&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;RESTORE DATABASE DUMMY FROM DISK='$full'"&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE DUMMY;SELECT VALUE FROM DATA" -EA "SILENTLYCONTINUE"&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE DUMMY;SELECT VALUE FROM DATA"&lt;br /&gt;&lt;br /&gt;# insert a row&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE DUMMY;INSERT INTO DATA(VALUE) VALUES(3)"&lt;br /&gt;&lt;br /&gt;# backup a transaction log&lt;br /&gt;$diff="$filesDir\Differential.bak"&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;BACKUP DATABASE DUMMY TO DISK='$DIFF' WITH DIFFERENTIAL"&lt;br /&gt;&lt;br /&gt;# insert another row&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE DUMMY;INSERT INTO DATA(VALUE) VALUES(4)"&lt;br /&gt;&lt;br /&gt;# backup another transaction log&lt;br /&gt;$log="C:\Garbage\Log.bak"&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;BACKUP LOG DUMMY TO DISK='$log'"&lt;br /&gt;&lt;br /&gt;# drop database&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;ALTER DATABASE DUMMY SET SINGLE_USER WITH ROLLBACK IMMEDIATE"&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;DROP DATABASE DUMMY"&lt;br /&gt;&lt;br /&gt;# verify no data files are in place&lt;br /&gt;dir $filesDir\*.mdf;dir $filesDir\*.ldf&lt;br /&gt;&lt;br /&gt;# TEST: restore full backup plus the transactions logs and verify data is there&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;RESTORE DATABASE DUMMY FROM DISK='$full' WITH NORECOVERY"&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;RESTORE DATABASE DUMMY FROM DISK='$diff' WITH NORECOVERY"&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE MASTER;RESTORE LOG DUMMY FROM DISK='$log'"&lt;br /&gt;&lt;br /&gt;# query db, we should have now 4 rows!&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE DUMMY;SELECT VALUE FROM DATA" -EA "SILENTLYCONTINUE"&lt;br /&gt;Invoke-Sqlcmd -ServerInstance $instance -Query "USE DUMMY;SELECT VALUE FROM DATA"&lt;br /&gt;&lt;br /&gt;# and we should have data and log files back&lt;br /&gt;dir $filesDir\*.mdf;dir $filesDir\*.ldf&lt;br /&gt;&lt;br /&gt;### SCRIPT ENDS HERE&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-94532352720544037?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/94532352720544037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=94532352720544037' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/94532352720544037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/94532352720544037'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2010/08/sql-server-backuprestore-sample.html' title='SQL Server: Backup/Restore sample PowerShell script'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-4772038233868514550</id><published>2010-08-18T08:33:00.001-07:00</published><updated>2010-08-19T12:31:32.338-07:00</updated><title type='text'>Shortcut for generating a hotfix request for MS</title><content type='html'>&lt;form id="form1" action="javascript:window.location='http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=' + document.getElementById('kbn').value + '&amp;amp;kbln=en-us'"&gt;KB#&lt;input id="kbn"&gt;&lt;input value="Request Hotfix" type="submit"&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-4772038233868514550?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/4772038233868514550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=4772038233868514550' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4772038233868514550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4772038233868514550'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2010/08/shortcut-for-generating-hotfix-request.html' title='Shortcut for generating a hotfix request for MS'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-2609169522658587228</id><published>2010-08-18T05:07:00.000-07:00</published><updated>2010-08-18T05:14:48.691-07:00</updated><title type='text'>Windbg: investigating exceptions</title><content type='html'>&lt;p&gt;The sequence shown below is:&lt;br /&gt;&lt;br /&gt;1) !dumpheap -type Exception&lt;br /&gt;2) !dumpheap -type System.Runtime.InteropServices.COMException&lt;br /&gt;3) !pe 0000000006a58fb8&lt;br /&gt;4) !do 0000000006a58fb8 (for some specific fields that !pe won't show) &lt;/p&gt;&lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;0:000&amp;gt; !dumpheap -type Exception&lt;br /&gt;         Address               MT     Size&lt;br /&gt;0000000006961048 000007fef3336b30      136  &lt;br /&gt;00000000069610d0 000007fef3336c40      136  &lt;br /&gt;0000000006961158 000007fef3336d50      136  &lt;br /&gt;00000000069611e0 000007fef3336e60      136  &lt;br /&gt;0000000006961268 000007fef3336e60      136  &lt;br /&gt;0000000006a29a90 000007fef3340298       24  &lt;br /&gt;0000000006a29ac0 000007fef3340310       24  &lt;br /&gt;0000000006a58fb8 000007fef335c580      136  &lt;br /&gt;0000000006ac4390 000007fef335c580      136  &lt;br /&gt;total 9 objects&lt;br /&gt;Statistics:&lt;br /&gt;              MT    Count    TotalSize Class Name&lt;br /&gt;000007fef3340310        1           24 System.Text.DecoderExceptionFallback&lt;br /&gt;000007fef3340298        1           24 System.Text.EncoderExceptionFallback&lt;br /&gt;000007fef3336d50        1          136 System.ExecutionEngineException&lt;br /&gt;000007fef3336c40        1          136 System.StackOverflowException&lt;br /&gt;000007fef3336b30        1          136 System.OutOfMemoryException&lt;br /&gt;000007fef335c580        2          272 System.Runtime.InteropServices.COMException&lt;br /&gt;000007fef3336e60        2          272 System.Threading.ThreadAbortException&lt;br /&gt;Total 9 objects&lt;br /&gt;&lt;br /&gt;0:000&amp;gt; !dumpheap -type System.Runtime.InteropServices.COMException&lt;br /&gt;         Address               MT     Size&lt;br /&gt;0000000006a58fb8 000007fef335c580      136  &lt;br /&gt;0000000006ac4390 000007fef335c580      136  &lt;br /&gt;total 2 objects&lt;br /&gt;Statistics:&lt;br /&gt;              MT    Count    TotalSize Class Name&lt;br /&gt;000007fef335c580        2          272 System.Runtime.InteropServices.COMException&lt;br /&gt;Total 2 objects&lt;br /&gt;&lt;br /&gt;0:000&amp;gt; !do 0000000006a58fb8&lt;br /&gt;Name: System.Runtime.InteropServices.COMException&lt;br /&gt;MethodTable: 000007fef335c580&lt;br /&gt;EEClass: 000007fef2f4a2f8&lt;br /&gt;Size: 136(0x88) bytes&lt;br /&gt; (C:\Windows\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)&lt;br /&gt;Fields:&lt;br /&gt;              MT    Field   Offset                 Type VT     Attr            Value Name&lt;br /&gt;000007fef3336758  40000b5        8        System.String  0 instance 0000000000000000 _className&lt;br /&gt;000007fef3334b00  40000b6       10 ...ection.MethodBase  0 instance 0000000000000000 _exceptionMethod&lt;br /&gt;000007fef3336758  40000b7       18        System.String  0 instance 0000000000000000 _exceptionMethodString&lt;br /&gt;000007fef3336758  40000b8       20        System.String  0 instance 0000000006a591d8 _message&lt;br /&gt;000007fef332dd78  40000b9       28 ...tions.IDictionary  0 instance 0000000000000000 _data&lt;br /&gt;000007fef3336a20  40000ba       30     System.Exception  0 instance 0000000000000000 _innerException&lt;br /&gt;000007fef3336758  40000bb       38        System.String  0 instance 0000000006a59268 _helpURL&lt;br /&gt;000007fef3336048  40000bc       40        System.Object  0 instance 0000000006a59328 _stackTrace&lt;br /&gt;000007fef3336758  40000bd       48        System.String  0 instance 0000000000000000 _stackTraceString&lt;br /&gt;000007fef3336758  40000be       50        System.String  0 instance 0000000000000000 _remoteStackTraceString&lt;br /&gt;000007fef333d9c8  40000bf       70         System.Int32  1 instance                0 _remoteStackIndex&lt;br /&gt;000007fef3336048  40000c0       58        System.Object  0 instance 0000000000000000 _dynamicMethods&lt;br /&gt;000007fef333d9c8  40000c1       74         System.Int32  1 instance      -2146824040 _HResult&lt;br /&gt;000007fef3336758  40000c2       60        System.String  0 instance 0000000006a592a8 _source&lt;br /&gt;000007fef3339160  40000c3       68        System.IntPtr  1 instance                0 _xptrs&lt;br /&gt;000007fef333d9c8  40000c4       78         System.Int32  1 instance       -532459699 _xcode&lt;br /&gt;&lt;br /&gt;0:000&amp;gt; !pe 0000000006a58fb8&lt;br /&gt;Exception object: 0000000006a58fb8&lt;br /&gt;Exception type: System.Runtime.InteropServices.COMException&lt;br /&gt;Message: This command is not available because no document is open.&lt;br /&gt;InnerException: &amp;lt;none&amp;gt;&lt;br /&gt;StackTrace (generated):&lt;br /&gt;    SP               IP               Function&lt;br /&gt;    000000000013A200 0000000000000001 Microsoft_Office_Interop_Word!Microsoft.Office.Interop.Word.ApplicationClass.get_ActiveDocument()+0x2&lt;br /&gt;    000000000013A2F0 000007FF00222F6E Ms_Ddue_DdueWord!Microsoft.Ddue.DdueWordAuthoring.WordHelper.GetActiveDocument(Microsoft.Office.Interop.Word.Application)+0xce&lt;br /&gt;&lt;br /&gt;StackTraceString: &amp;lt;none&amp;gt;&lt;br /&gt;HResult: 800a1098&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;See &lt;a href="http://blogs.msdn.com/b/johan/archive/2008/01/31/using-windbg-hunting-exceptions.aspx"&gt;here&lt;/a&gt; for more details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-2609169522658587228?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/2609169522658587228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=2609169522658587228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2609169522658587228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2609169522658587228'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2010/08/windbg-investigating-exceptions.html' title='Windbg: investigating exceptions'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-5030079824578693415</id><published>2010-08-13T12:31:00.000-07:00</published><updated>2010-08-13T12:38:46.337-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Powershell quotes'/><title type='text'>PowerShell, double and single quotes</title><content type='html'>Powershell and quotes can be a bit confusing sometimes.&lt;br /&gt;&lt;br /&gt;Double-quoted strings are subject to variable substitution, while single-quoted strings are not.&lt;br /&gt;&lt;br /&gt;For example, let's launch a PowerShell console:&lt;br /&gt;&lt;br /&gt;&lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; HEIGHT: 94px; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;C:\Users\User&amp;gt;$x="hello"&lt;br /&gt;C:\Users\User&amp;gt;"$x"&lt;br /&gt;hello&lt;br /&gt;C:\Users\User&amp;gt;'$x'&lt;br /&gt;$x&lt;br /&gt;C:\Users\User&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Let's write now a very small script that outputs a single parameter:&lt;br /&gt;&lt;br /&gt;&lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; HEIGHT: 55px; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;C:\Users\User&amp;gt;'param($p) "$p"' &amp;gt; .\test.ps1&lt;br /&gt;C:\Users\User&amp;gt;type .\test.ps1&lt;br /&gt;param($p) "$p"&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Here's the output when calling that script with double- and single-quoted strings:&lt;br /&gt;&lt;br /&gt;&lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; HEIGHT: 134px; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;C:\Users\User&amp;gt;$x="hello"&lt;br /&gt;C:\Users\User&amp;gt;.\test.ps1 "$x"&lt;br /&gt;hello&lt;br /&gt;C:\Users\User&amp;gt;.\test.ps1 '$x'&lt;br /&gt;$x&lt;br /&gt;C:\Users\User&amp;gt;.\test.ps1 -p "hello world"&lt;br /&gt;hello world&lt;br /&gt;C:\Users\User&amp;gt;.\test.ps1 -p 'hello world'&lt;br /&gt;hello world&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Which makes sense, because in PowerShell both single and double quotes serve to form strings with spaces.&lt;br /&gt;&lt;br /&gt;Now, let's open a normal command prompt and try a few things:&lt;br /&gt;&lt;br /&gt;&lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; HEIGHT: 153px; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;C:\Users\User&amp;gt;powershell -file test.ps1 -p "hello"&lt;br /&gt;hello&lt;br /&gt;C:\Users\User&amp;gt;powershell -file test.ps1 -p 'hello'&lt;br /&gt;'hello'&lt;br /&gt;C:\Users\User&amp;gt;set XYZ="hello world"&lt;br /&gt;C:\Users\User&amp;gt;powershell -file .\test.ps1 %XYZ%&lt;br /&gt;hello world&lt;br /&gt;C:\Users\User&amp;gt;set XYZ='hello world'&lt;br /&gt;C:\Users\User&amp;gt;powershell -f .\test.ps1 %XYZ%&lt;br /&gt;'hello&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Which is expected too, because in a DOS command prompt, only double quotes will form strings with spaces, and single-quotes are taken as literals.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-5030079824578693415?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/5030079824578693415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=5030079824578693415' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/5030079824578693415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/5030079824578693415'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2010/08/powershell-double-and-single-quotes.html' title='PowerShell, double and single quotes'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-4205643148432928970</id><published>2010-03-09T18:02:00.001-08:00</published><updated>2010-03-09T18:06:02.114-08:00</updated><title type='text'>EDM designer in Visual Studio: "The operation could not be completed. The parameter is incorrect"</title><content type='html'>When trying to open a .edmx file in VS, it throws this error:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_d-ys2-C6Ra4/S5b-LToLv-I/AAAAAAAAACc/YGisLTwV_x4/s1600-h/Error.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 139px;" src="http://1.bp.blogspot.com/_d-ys2-C6Ra4/S5b-LToLv-I/AAAAAAAAACc/YGisLTwV_x4/s400/Error.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5446820269552025570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Solution: open the designer as plain xml and remove children of edmx:Diagrams/Diagram node.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-4205643148432928970?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/4205643148432928970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=4205643148432928970' title='38 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4205643148432928970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4205643148432928970'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2010/03/edm-designer-in-visual-studio-operation.html' title='EDM designer in Visual Studio: &quot;The operation could not be completed. The parameter is incorrect&quot;'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_d-ys2-C6Ra4/S5b-LToLv-I/AAAAAAAAACc/YGisLTwV_x4/s72-c/Error.png' height='72' width='72'/><thr:total>38</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-1181359275629740589</id><published>2010-03-09T17:44:00.000-08:00</published><updated>2010-03-09T17:48:56.595-08:00</updated><title type='text'>EDM: Error 11011: Association End key property 'Id' is not mapped.</title><content type='html'>Problem: receiving this error when building a project that includes an EDM:&lt;br /&gt;&lt;pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; HEIGHT: 27px; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"&gt;&lt;code&gt;Error 11011: Association End key property 'Id' is not mapped.&lt;/code&gt;&lt;/pre&gt;Solution: open as plain xml the .edmx file, remove everything related to the entity causing the error, then open the model with the designer and "Update model from database..." After you build, you should not get this error anymore.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-1181359275629740589?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/1181359275629740589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=1181359275629740589' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/1181359275629740589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/1181359275629740589'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2010/03/edm-error-11011-association-end-key.html' title='EDM: Error 11011: Association End key property &apos;Id&apos; is not mapped.'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-4221162879087692400</id><published>2010-03-04T10:38:00.000-08:00</published><updated>2010-03-04T11:23:34.739-08:00</updated><title type='text'>MVC &amp; ViewState don't work together</title><content type='html'>It seems that &lt;a href="http://forums.asp.net/t/1353516.aspx"&gt;postbacks are not supported in MVC&lt;/a&gt;. I found &lt;a href="http://bugsquash.blogspot.com/2009/02/aspnet-mvc-postback-support.html"&gt;this article&lt;/a&gt;, and tried to address this issue in order to use some Ajax controls that do require form tags for including a ScriptManager, which cause postbacks.&lt;br /&gt;&lt;br /&gt;In short - it worked correctly, with one tweak: instead of&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;public class ViewUserControlWithoutViewState&amp;lt;T&amp;gt; : ViewUserControl&amp;lt;T&amp;gt; where T : class &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;I changed to:&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;public class ViewUserControlWithoutViewState : ViewUserControl&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Otherwise, ASP.Net was not finding the type. Why? Didn't dig into more, but it may be related to Reflection not resolving correctly when &lt;em&gt;where&lt;/em&gt; keyword is being used.&lt;br /&gt;&lt;br /&gt;BTW - this is the control I was trying to use (needs Ajax Controls Toolkit):&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;    &amp;lt;form id=&amp;quot;Form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;asp:ToolkitScriptManager ID=&amp;quot;asm&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;        &amp;lt;asp:LinkButton ID=&amp;quot;linkButton1&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Show Popup&amp;quot; /&amp;gt;&lt;br /&gt;        &amp;lt;asp:ConfirmButtonExtender ID=&amp;quot;ConfirmButtonExtender1&amp;quot; runat=&amp;quot;server&amp;quot; TargetControlID=&amp;quot;linkButton1&amp;quot; ConfirmText=&amp;quot;Want it or not?&amp;quot; /&amp;gt;&lt;br /&gt;    &amp;lt;/form&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-4221162879087692400?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/4221162879087692400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=4221162879087692400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4221162879087692400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4221162879087692400'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2010/03/mvc-viewstate-is-not-good-friendship.html' title='MVC &amp; ViewState don&apos;t work together'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-3723832261423977090</id><published>2010-01-12T08:15:00.000-08:00</published><updated>2010-01-12T08:20:16.069-08:00</updated><title type='text'>Reindex script for SQL Server</title><content type='html'>DECLARE @db_name nvarchar(1000)&lt;br /&gt;SET @db_name=N'your database name'&lt;br /&gt;EXEC ('USE ' + @db_name)&lt;br /&gt;DECLARE @index_name nvarchar(1000)&lt;br /&gt;DECLARE @table_name nvarchar(1000)&lt;br /&gt;DECLARE @ind_id int&lt;br /&gt;DECLARE index_cursor CURSOR for&lt;br /&gt;select name, object_name(id), indid from sysindexes where id &gt; 1000 and indid &gt;=1 and rows &gt; 0 order by object_name(id), indid, name&lt;br /&gt;OPEN index_cursor&lt;br /&gt;FETCH NEXT FROM index_cursor INTO @index_name, @table_name, @ind_id&lt;br /&gt;WHILE @@FETCH_STATUS = 0&lt;br /&gt;BEGIN    &lt;br /&gt; IF @ind_id = 1    &lt;br /&gt; BEGIN        &lt;br /&gt;  EXEC sp_executesql N'DBCC DBREINDEX (@tbl, @idx, 0)',        &lt;br /&gt;  N'@idx nvarchar(1000), @tbl nvarchar(1000)',        &lt;br /&gt;  @index_name,        &lt;br /&gt;  @table_name    &lt;br /&gt; END    &lt;br /&gt; EXEC sp_executesql N'DBCC INDEXDEFRAG (@db, @tbl, @idx)',    &lt;br /&gt; N'@db nvarchar(1000), @idx nvarchar(1000), @tbl nvarchar(1000)',    &lt;br /&gt; @db_name,    &lt;br /&gt; @index_name,    &lt;br /&gt; @table_name    &lt;br /&gt; FETCH NEXT FROM index_cursor INTO @index_name, @table_name, @ind_id&lt;br /&gt;END&lt;br /&gt;CLOSE index_cursor&lt;br /&gt;DEALLOCATE index_cursor&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-3723832261423977090?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/3723832261423977090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=3723832261423977090' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3723832261423977090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3723832261423977090'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2010/01/reindex-script-for-sql-server.html' title='Reindex script for SQL Server'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-3735327334243661111</id><published>2009-12-24T10:46:00.000-08:00</published><updated>2009-12-24T10:49:34.042-08:00</updated><title type='text'>How to create a bootable installation CD/DVD in Windows</title><content type='html'>1) Download BBIE&lt;br /&gt;2) extract bootable sector from a bootable disk&lt;br /&gt;&lt;drive&gt;&lt;drive&gt;&lt;iso&gt;&lt;iso file=""&gt;3) Download ImgBurn&lt;br /&gt;4) Create a bootable image file&lt;br /&gt;&lt;br /&gt;Run ImgBurn&lt;br /&gt;Choose "Create image file from file/folders"&lt;br /&gt;Include desired files and folders&lt;br /&gt;Click "Advanced", "Bootable Disc" (sic), specify as "Boot Image" file the file you obtained in step 2).&lt;br /&gt;&lt;br /&gt;Launch the process, it will result in a .img file.&lt;br /&gt;&lt;br /&gt;5) Create CD/DVD&lt;br /&gt;&lt;br /&gt;Relaunch ImgBurn&lt;br /&gt;Choose "Write image file to disc"&lt;br /&gt;Browse to the image file obtained in step 4).&lt;br /&gt;&lt;br /&gt;If everything goes well, you should end up with a bootable CD/DVD.&lt;/iso&gt;&lt;/iso&gt;&lt;/drive&gt;&lt;/drive&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-3735327334243661111?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/3735327334243661111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=3735327334243661111' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3735327334243661111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3735327334243661111'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2009/12/how-to-create-bootable-cddvd.html' title='How to create a bootable installation CD/DVD in Windows'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-7928830409716664752</id><published>2009-08-13T13:55:00.000-07:00</published><updated>2009-08-13T13:57:43.964-07:00</updated><title type='text'>How to create a PFX file</title><content type='html'>makecert.exe -sv MyKey.pvk -n "CN=My Test Site" MyKey.cer -sky exchange&lt;br /&gt;&lt;br /&gt;"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\pvk2pfx.exe" -pvk MyKey.pvk -spc MyKey.cer -pfx MyPFX.pfx -po &lt;password&gt;&lt;br /&gt;&lt;br /&gt;Note: "-sky exchange" avoids errors like "SSL Certificate add failed, Error: 1312"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-7928830409716664752?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/7928830409716664752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=7928830409716664752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/7928830409716664752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/7928830409716664752'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2009/08/how-to-create-pfx-file.html' title='How to create a PFX file'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-5806846969650897401</id><published>2009-06-05T00:11:00.001-07:00</published><updated>2009-06-05T00:14:22.437-07:00</updated><title type='text'>SharePoint: Code for extending a web app</title><content type='html'>This doesn't claim to be &lt;em&gt;the&lt;/em&gt; code to extend a web app, but more like a boilerplate that you can adapt to your own needs. I tried it with a generous matrix of parameters and works correctly, but I have no doubt that some combinations may cause issues.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;        private static void ExtendWebApplication(SPWebApplication webapp, string name, int port, SPUrlZone zone, bool secure, bool useWindowsAuth, bool allowAnonymous, bool useClaims)&lt;br /&gt;        {&lt;br /&gt;            if (webapp == null)&lt;br /&gt;            {&lt;br /&gt;                throw (new ArgumentNullException(&amp;quot;webapp&amp;quot;));&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            SPServerBinding serverBinding = null;&lt;br /&gt;            SPSecureBinding secureBinding = null;&lt;br /&gt;            if (secure)&lt;br /&gt;            {&lt;br /&gt;                secureBinding = new SPSecureBinding();&lt;br /&gt;                secureBinding.Port = port;&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                serverBinding = new SPServerBinding();&lt;br /&gt;                serverBinding.Port = port;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            string extendedAppPath = webapp.IisSettings[SPUrlZone.Default].Path.ToString().Substring(0, webapp.IisSettings[SPUrlZone.Default].Path.ToString().LastIndexOf(@&amp;quot;\&amp;quot;) + 1) + port.ToString();&lt;br /&gt;            SPIisSettings iisSettings = new SPIisSettings(&lt;br /&gt;                string.Format(CultureInfo.InvariantCulture, &amp;quot;{0} - {1}&amp;quot;, name, port),&lt;br /&gt;                false,&lt;br /&gt;                true,&lt;br /&gt;                serverBinding,&lt;br /&gt;                secureBinding,&lt;br /&gt;                new DirectoryInfo(extendedAppPath));&lt;br /&gt;            iisSettings.DisableKerberos = !useWindowsAuth;&lt;br /&gt;            iisSettings.UseWindowsIntegratedAuthentication = useWindowsAuth;&lt;br /&gt;            iisSettings.AllowAnonymous = allowAnonymous;&lt;br /&gt;            webapp.IisSettings.Add(zone, iisSettings);&lt;br /&gt;            webapp.AlternateUrls.SetResponseUrl(new SPAlternateUrl(GetAlternateUrl(port, secure), zone));&lt;br /&gt;            webapp.AlternateUrls.Update();&lt;br /&gt;            webapp.UseClaimsAuthentication = useClaims;&lt;br /&gt;            webapp.Update();&lt;br /&gt;            webapp.ProvisionGlobally();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;em&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-5806846969650897401?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/5806846969650897401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=5806846969650897401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/5806846969650897401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/5806846969650897401'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2009/06/sharepoint-code-for-extending-web-app.html' title='SharePoint: Code for extending a web app'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-2070036643330741895</id><published>2009-06-02T22:38:00.000-07:00</published><updated>2009-06-03T07:35:58.465-07:00</updated><title type='text'>C#: Running PowerShell from C#</title><content type='html'>This is a class that allows to execute PowerShell scripts from C#&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;    using System.Management.Automation;&lt;br /&gt;    using System.Management.Automation.Runspaces;&lt;br /&gt;&lt;br /&gt;    /// &amp;lt;summary&amp;gt;&lt;br /&gt;    /// PowerShellExecutor&lt;br /&gt;    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;    public class PowerShellExecutor&lt;br /&gt;    {&lt;br /&gt;        Runspace _runspace = null;&lt;br /&gt;        Pipeline _pipeline = null;&lt;br /&gt;&lt;br /&gt;        /// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// .ctor&lt;br /&gt;        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;        public PowerShellExecutor()&lt;br /&gt;        {&lt;br /&gt;            _runspace = RunspaceFactory.CreateRunspace();&lt;br /&gt;            _runspace = RegisterCmdlets(_runspace, _runspace.CreatePipeline());&lt;br /&gt;            _pipeline = _runspace.CreatePipeline();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void ClearErrors()&lt;br /&gt;        {&lt;br /&gt;            _pipeline = _runspace.CreatePipeline(&amp;quot;$error.Clear()&amp;quot;);&lt;br /&gt;            _pipeline.Invoke();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        /// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// ExecuteCmdlet&lt;br /&gt;        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;        /// &amp;lt;param name=&amp;quot;command&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name=&amp;quot;rs&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name=&amp;quot;pipe&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;        /// &amp;lt;example&amp;gt;&lt;br /&gt;        /// PowerShellExecutor p = new PowerShellExecutor();&lt;br /&gt;        /// Collection&amp;lt;PSObject&amp;gt; c = p.ExecuteCmdlet(&amp;quot;$w = Get-Web 'MySite - 80'&amp;quot;, null);&lt;br /&gt;        /// c = p.ExecuteCmdlet(&amp;quot;[System.Console]::WriteLine($w)&amp;quot;, null);&lt;br /&gt;        /// &amp;lt;/example&amp;gt;&lt;br /&gt;        public Collection&amp;lt;PSObject&amp;gt; ExecuteCmdlet(string command)&lt;br /&gt;        {&lt;br /&gt;            // create pipeline&lt;br /&gt;            _pipeline = _runspace.CreatePipeline();&lt;br /&gt;&lt;br /&gt;            // add script to execute&lt;br /&gt;            _pipeline.Commands.AddScript(command);&lt;br /&gt;&lt;br /&gt;            // execute&lt;br /&gt;            Collection&amp;lt;PSObject&amp;gt; results = _pipeline.Invoke();&lt;br /&gt;            StringBuilder result = new StringBuilder();&lt;br /&gt;&lt;br /&gt;            // check results&lt;br /&gt;            if (results.Count == 0)&lt;br /&gt;            {&lt;br /&gt;                result = new StringBuilder();&lt;br /&gt;                result.Append(&amp;quot;$error&amp;quot;);&lt;br /&gt;                _pipeline = _runspace.CreatePipeline(result.ToString());&lt;br /&gt;                results = _pipeline.Invoke();&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            // return&lt;br /&gt;            return results;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        /// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// RegisterCmdlets&lt;br /&gt;        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;        /// &amp;lt;param name=&amp;quot;runspace&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name=&amp;quot;pipeline&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;        private Runspace RegisterCmdlets(Runspace runspace, Pipeline pipeline)&lt;br /&gt;        {&lt;br /&gt;            Collection&amp;lt;PSObject&amp;gt; results;&lt;br /&gt;            StringBuilder command = new StringBuilder();&lt;br /&gt;            runspace = RunspaceFactory.CreateRunspace();&lt;br /&gt;            runspace.Open();&lt;br /&gt;            command.Append(&amp;quot;Set-Alias powershell $env:windir\\System32\\WindowsPowerShell\\v1.0\\powershell.exe&amp;quot;);&lt;br /&gt;            pipeline = runspace.CreatePipeline(command.ToString());&lt;br /&gt;            results = pipeline.Invoke();&lt;br /&gt;&lt;br /&gt;            command = new StringBuilder();&lt;br /&gt;            command.Append(&amp;quot;Add-pssnapin Microsoft.SharePoint.PowerShell&amp;quot;);&lt;br /&gt;            pipeline = runspace.CreatePipeline(command.ToString());&lt;br /&gt;            results = pipeline.Invoke();&lt;br /&gt;            return runspace;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-2070036643330741895?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/2070036643330741895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=2070036643330741895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2070036643330741895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2070036643330741895'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2009/06/c-running-powershell-from-c.html' title='C#: Running PowerShell from C#'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-670546641205821846</id><published>2009-06-01T18:27:00.000-07:00</published><updated>2010-10-13T05:19:09.464-07:00</updated><title type='text'>Architectural Concerns</title><content type='html'>Cheat-sheet on things to have in mind when looking at a system from an architectural perspective:&lt;br /&gt;&lt;br /&gt;Simplicity&lt;br /&gt;Testability&lt;br /&gt;Usability&lt;br /&gt;Deployment&lt;br /&gt;Ecosystem&lt;br /&gt;Modularity&lt;br /&gt;Diagnosibility&lt;br /&gt;Performance&lt;br /&gt;Manageability&lt;br /&gt;Compatibility&lt;br /&gt;Layering&lt;br /&gt;Reliability&lt;br /&gt;Accessibility&lt;br /&gt;Serviceability&lt;br /&gt;Extensibility&lt;br /&gt;Dependencies&lt;br /&gt;Security&lt;br /&gt;Globalizability&lt;br /&gt;Supportability&lt;br /&gt;Programmability&lt;br /&gt;Maintenance&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-670546641205821846?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/670546641205821846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=670546641205821846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/670546641205821846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/670546641205821846'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2009/06/architectural-concerns.html' title='Architectural Concerns'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-1508938791032821798</id><published>2009-05-30T23:53:00.000-07:00</published><updated>2009-05-30T23:55:09.617-07:00</updated><title type='text'>WCF: System.ServiceModel.FaultException: The message could not be processed</title><content type='html'>Problem: exception thrown when connecting to a WCF service&lt;br /&gt;&lt;br /&gt;System.ServiceModel.FaultException: The message could not be processed. This is most likely because the action 'http://tempuri.org/IStockService/GetSymbolData' is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint's binding.&lt;br /&gt;&lt;br /&gt;Solution: at least in my case, there was a mismatch between the binding specified in the client (SecurityMode.None) and the server (wsHttpBinding). After specifiying the right binding in the client (SecurityMode.Message), it worked correctly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-1508938791032821798?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/1508938791032821798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=1508938791032821798' title='80 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/1508938791032821798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/1508938791032821798'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2009/05/wcf-systemservicemodelfaultexception.html' title='WCF: System.ServiceModel.FaultException: The message could not be processed'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>80</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-7722639633822127377</id><published>2009-04-07T16:52:00.001-07:00</published><updated>2009-04-07T16:56:54.044-07:00</updated><title type='text'>When to use AllowUnsafeUpdates, ValidateFormDigest() or else</title><content type='html'>For scenarios in which your code is processing a POST request, ValidateFormDigest() will, behind the scenes, set AllowUnsafeUpdates to true.&lt;br /&gt;&lt;br /&gt;But some scenarios (e.g. web services) are not a POST request, therefore ValidateFormDigest() will fail.&lt;br /&gt;&lt;br /&gt;So, here's a simple decision tree to help:&lt;br /&gt;&lt;br /&gt;HttpContext.Current is null =&gt; Do nothing, no need to set AllowUnsafeUpdates to true nor to call ValidateFormDigest() because update will be carried out (e.g. code being called from an .exe from a cmd prompt)&lt;br /&gt;&lt;br /&gt;HttpContext.Current is NOT null&lt;br /&gt;- SPContext.Current is null =&gt; Need to set AllowUnsafeUpdates to true (e.g. web service)&lt;br /&gt;- SPContext.Current is NOT null =&gt; Call ValidateFormDigest() (e.g. POST request processing)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-7722639633822127377?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/7722639633822127377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=7722639633822127377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/7722639633822127377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/7722639633822127377'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2009/04/when-to-use-allowunsafeupdates.html' title='When to use AllowUnsafeUpdates, ValidateFormDigest() or else'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-8926414711163337687</id><published>2009-04-06T15:17:00.000-07:00</published><updated>2009-04-06T15:33:12.136-07:00</updated><title type='text'>SPSecurity.RunWithElevatedPrivileges() throws InvalidOperationException, "Operation is not valid due to the current state of the object."</title><content type='html'>There are several reasons for this to happen.&lt;br /&gt;&lt;br /&gt;1) HttpContext.Current.User == null&lt;br /&gt;2) code running under impersonation.&lt;br /&gt;&lt;br /&gt;If it's 2), here's one recipe, save HttpContext, set it to null, restore it back:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;            HttpContext prev = HttpContext.Current;&lt;br /&gt;            HttpContext.Current = null;&lt;br /&gt;            try&lt;br /&gt;            {&lt;br /&gt;                SPSecurity.RunWithElevatedPrivileges(delegate()&lt;br /&gt;                {&lt;br /&gt;...&lt;br /&gt;                });&lt;br /&gt;            }&lt;br /&gt;            finally&lt;br /&gt;            {&lt;br /&gt;                HttpContext.Current = prev;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-8926414711163337687?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/8926414711163337687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=8926414711163337687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/8926414711163337687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/8926414711163337687'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2009/04/spsecurityrunwithelevatedprivileges.html' title='SPSecurity.RunWithElevatedPrivileges() throws InvalidOperationException, &quot;Operation is not valid due to the current state of the object.&quot;'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-264400866331473735</id><published>2009-02-20T10:36:00.000-08:00</published><updated>2009-02-20T11:13:29.147-08:00</updated><title type='text'>SQL Server: how to delete non-system databases from a cursor</title><content type='html'>&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;DECLARE @name nvarchar(200)&lt;br /&gt;DECLARE @stmt nvarchar(200)&lt;br /&gt;DECLARE dbCursor CURSOR FOR SELECT D.name FROM sys.databases D where owner_sid &amp;lt;&amp;gt; 0x01&lt;br /&gt;OPEN dbCursor&lt;br /&gt;    FETCH NEXT FROM dbCursor INTO @name&lt;br /&gt;    WHILE @@FETCH_STATUS = 0&lt;br /&gt;    BEGIN&lt;br /&gt;        --next IF is not needed, as cursor specifies that owner_sid &amp;lt;&amp;gt; 0x01 already&lt;br /&gt;        --IF @name &amp;lt;&amp;gt; 'master' and @name &amp;lt;&amp;gt; 'model' and @name &amp;lt;&amp;gt; 'msdb' and @name &amp;lt;&amp;gt; 'tempdb'&lt;br /&gt;        --BEGIN&lt;br /&gt;            PRINT 'Name = ' + @name&lt;br /&gt;            SET @stmt = 'DROP DATABASE &amp;quot;' + @name + '&amp;quot;'&lt;br /&gt;            PRINT 'stmt = ' + @stmt&lt;br /&gt;            EXECUTE sp_executesql @stmt&lt;br /&gt;        --END&lt;br /&gt;        FETCH NEXT FROM dbCursor INTO @name&lt;br /&gt;    END&lt;br /&gt;CLOSE dbCursor&lt;br /&gt;DEALLOCATE dbCursor&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Notice couple of tips (at least for someone that doesn't write T-SQL every morning ☺):&lt;br /&gt;&lt;br /&gt;- SQL syntax doesn't allow some statements to be run from inside a cursor, so you have to call sp_executesql store proc.&lt;br /&gt;- since '-' is a reserved operator, you have to enclose the DB on quotes to successfully operate on a DB whose name contains '-' or other reserved operator.&lt;br /&gt;- owner_sid &lt;&gt; 0x01 filters out system DB's (preferred over the commented IF)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-264400866331473735?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/264400866331473735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=264400866331473735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/264400866331473735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/264400866331473735'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2009/02/sql-server-how-to-delete-databases-from.html' title='SQL Server: how to delete non-system databases from a cursor'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-3551330701664335328</id><published>2009-02-10T10:26:00.000-08:00</published><updated>2009-02-10T10:29:07.407-08:00</updated><title type='text'>Perf: Managed memory leaks investigation</title><content type='html'>These two links are very helpful:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163491.aspx"&gt;Identify And Prevent Memory Leaks In Managed Code&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/ricom/archive/2004/12/10/279612.aspx"&gt;Tracking down managed memory leaks (how to find a GC leak)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-3551330701664335328?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/3551330701664335328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=3551330701664335328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3551330701664335328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3551330701664335328'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2009/02/perf-managed-memory-leaks-investigation.html' title='Perf: Managed memory leaks investigation'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-4869851714793203401</id><published>2009-01-30T11:33:00.000-08:00</published><updated>2009-01-30T11:34:07.977-08:00</updated><title type='text'>SQL Server: how to get the sizes of the columns of a table</title><content type='html'>select C.name, C.max_length from sys.columns C&lt;br /&gt;inner join &lt;br /&gt;sys.tables T&lt;br /&gt;on C.object_id = T.object_id and T.name = '&lt;&lt;em&gt;table name&lt;/em&gt;&gt;'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-4869851714793203401?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/4869851714793203401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=4869851714793203401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4869851714793203401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4869851714793203401'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2009/01/sql-server-how-to-get-sizes-of-columns.html' title='SQL Server: how to get the sizes of the columns of a table'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-2961101969647676153</id><published>2009-01-30T10:31:00.001-08:00</published><updated>2009-01-30T10:31:44.769-08:00</updated><title type='text'>SQL Server: how to see Log Transaction status</title><content type='html'>select name, log_reuse_wait, log_reuse_wait_desc from sys.databases&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-2961101969647676153?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/2961101969647676153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=2961101969647676153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2961101969647676153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2961101969647676153'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2009/01/sql-server-how-to-see-log-transaction.html' title='SQL Server: how to see Log Transaction status'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-6252996229253842388</id><published>2009-01-30T09:17:00.000-08:00</published><updated>2009-01-30T09:18:06.700-08:00</updated><title type='text'>SQL Server: how to get the sizes of all tables</title><content type='html'>EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-6252996229253842388?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/6252996229253842388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=6252996229253842388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/6252996229253842388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/6252996229253842388'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2009/01/sql-server-how-to-get-sizes-of-all.html' title='SQL Server: how to get the sizes of all tables'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-475212435223034064</id><published>2008-11-18T21:48:00.000-08:00</published><updated>2008-11-18T21:49:50.636-08:00</updated><title type='text'>What's installed in a Windows box?</title><content type='html'>See &lt;a href="http://blogs.msdn.com/astebner/archive/2005/07/01/using-msiinv-to-gather-information-about-what-is-installed-on-a-computer.aspx"&gt;here&lt;/a&gt; for downloading and use msiinv.exe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-475212435223034064?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/475212435223034064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=475212435223034064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/475212435223034064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/475212435223034064'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2008/11/whats-installed-in-windows-box.html' title='What&apos;s installed in a Windows box?'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-7290610520344541862</id><published>2008-11-12T15:54:00.000-08:00</published><updated>2008-11-12T15:58:37.220-08:00</updated><title type='text'>IIS7: COM 0x800703E3 error</title><content type='html'>Problem: when requesting static files against IIS7, following error was reported to event viewer&lt;br /&gt;&lt;br /&gt;0x800703E3&lt;br /&gt;   at System.Web.Hosting.IIS7WorkerRequest.FlushCore(Boolean keepConnected, Int32 numBodyFragments, IntPtr[] bodyFragments, Int32[] bodyFragmentLengths, Int32[] bodyFragmentTypes)&lt;br /&gt;   at System.Web.Hosting.IIS7WorkerRequest.FlushCachedResponse(Boolean isFinal)&lt;br /&gt;   at System.Web.HttpResponse.UpdateNativeResponse(Boolean sendHeaders)&lt;br /&gt;   at System.Web.HttpRuntime.FinishRequestNotification(IIS7WorkerRequest wr, HttpContext context, RequestNotificationStatus&amp; status)&lt;br /&gt;&lt;br /&gt;Solution: known issue in IIS7, fixed by &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;displaylang=en"&gt;Microsoft .NET Framework 3.5 Service Pack 1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-7290610520344541862?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/7290610520344541862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=7290610520344541862' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/7290610520344541862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/7290610520344541862'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2008/11/iis7-com-0x800703e3-error.html' title='IIS7: COM 0x800703E3 error'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-7923738663261993724</id><published>2008-11-12T14:19:00.000-08:00</published><updated>2008-11-12T14:27:44.404-08:00</updated><title type='text'>SQL: Excessive SQL Compilations/Sec</title><content type='html'>Problem: SQL Compilations/Sec greater than 50 sec in a mid-end backend.&lt;br /&gt;Cause: Store procedures not being fully parameterized. If they were, their plans could have been cached and reused for same runs with different parameters.&lt;br /&gt;&lt;br /&gt;Some related links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sql-server-performance.com/tips/stored_procedures_p1.aspx"&gt;http://www.sql-server-performance.com/tips/stored_procedures_p1.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.sql-server-performance.com/tips/sql_server_performance_monitor_coutners_p1.aspx"&gt;http://www.sql-server-performance.com/tips/sql_server_performance_monitor_coutners_p1.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/243588"&gt;http://support.microsoft.com/kb/243588&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa212698(SQL.80).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa212698(SQL.80).aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-7923738663261993724?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/7923738663261993724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=7923738663261993724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/7923738663261993724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/7923738663261993724'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2008/11/sql-excessive-sql-compilationssec.html' title='SQL: Excessive SQL Compilations/Sec'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-3588144957986750668</id><published>2008-11-05T12:45:00.001-08:00</published><updated>2008-11-05T12:45:37.724-08:00</updated><title type='text'>Tracking down managed memory leaks</title><content type='html'>See &lt;a href="http://blogs.msdn.com/ricom/archive/2004/12/10/279612.aspx"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-3588144957986750668?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/3588144957986750668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=3588144957986750668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3588144957986750668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3588144957986750668'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2008/11/tracking-down-managed-memory-leaks.html' title='Tracking down managed memory leaks'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-217837668975180179</id><published>2008-09-23T22:59:00.000-07:00</published><updated>2008-09-23T23:01:30.496-07:00</updated><title type='text'>Sansa m250: How to see it as a drive on XP</title><content type='html'>Menu, Settings, USB, choose the one that is not Autodetect ☺&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-217837668975180179?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/217837668975180179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=217837668975180179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/217837668975180179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/217837668975180179'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2008/09/sansa-m250-how-to-see-it-as-drive-on-xp.html' title='Sansa m250: How to see it as a drive on XP'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-6744662767727754453</id><published>2008-09-16T13:00:00.000-07:00</published><updated>2008-09-16T13:07:50.262-07:00</updated><title type='text'>SharePoint: Output caching not retrieving pages from cache</title><content type='html'>Symptom:&lt;br /&gt;&lt;br /&gt;for subsequent requests, you see the date in the output page (right click IE page, View Source, etc) updated (it should remain constant for the period of time page in cache is not invalidated):&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; Rendered using cache profile:Public Internet (Purely Anonymous) at: 2008-09-16T12:59:31&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;&lt;br /&gt;This issue may happen for requests that include query strings, like '?var=val'.&lt;br /&gt;&lt;br /&gt;Go to http://your%20server/cache%20profiles/allitems.aspx, and set 'Vary by Query String Parameters' to the value of the query param (in the example above, 'var') for the appropriate cache profiles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-6744662767727754453?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/6744662767727754453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=6744662767727754453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/6744662767727754453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/6744662767727754453'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2008/09/sharepoint-output-caching-not.html' title='SharePoint: Output caching not retrieving pages from cache'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-2192048985571776169</id><published>2008-09-11T15:32:00.001-07:00</published><updated>2008-09-11T15:38:02.916-07:00</updated><title type='text'>SharePoint: Root folder element not returned through SPList.GetItems(SPQuery)</title><content type='html'>Problem: a query like this&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;                SPQuery q = new SPQuery();&lt;br /&gt;                q.Query = &amp;quot;&amp;lt;Where&amp;gt;&amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name='MyField'/&amp;gt;&amp;lt;Value Type='Text'&amp;gt;ABC&amp;lt;/Value&amp;gt;&amp;lt;/Eq&amp;gt;&amp;lt;/Where&amp;gt;&amp;quot;;&lt;br /&gt;                q.ViewAttributes = &amp;quot;Scope=\&amp;quot;Recursive\&amp;quot;&amp;quot;;&lt;br /&gt;                SPListItemCollection c = l.GetItems(q);&lt;br /&gt;                Console.WriteLine(c.Count);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;on a list like with one element like&lt;br /&gt;&lt;br /&gt;Folder, MyField='ABC'&lt;br /&gt;&lt;br /&gt;was not returning the element.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;q.ViewAttributes = &amp;quot;Scope=\&amp;quot;RecursiveAll\&amp;quot;&amp;quot;;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spviewscope.aspx"&gt;See here why ☺&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-2192048985571776169?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/2192048985571776169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=2192048985571776169' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2192048985571776169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/2192048985571776169'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2008/09/sharepoint-root-folder-element-not.html' title='SharePoint: Root folder element not returned through SPList.GetItems(SPQuery)'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-9049725112487341958</id><published>2008-08-12T11:30:00.000-07:00</published><updated>2008-08-12T11:33:04.545-07:00</updated><title type='text'>Perfmon: "Unable to connect to machine"</title><content type='html'>1) grant Local Service full control permissions on HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows&lt;br /&gt;NT\CurrentVersion\Perflib&lt;br /&gt;2) Start Remote Registry service&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-9049725112487341958?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/9049725112487341958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=9049725112487341958' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/9049725112487341958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/9049725112487341958'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2008/08/perfmon-unable-to-connect-to-machine.html' title='Perfmon: &quot;Unable to connect to machine&quot;'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-4461070800696387286</id><published>2008-08-01T23:31:00.000-07:00</published><updated>2008-08-01T23:45:57.481-07:00</updated><title type='text'>SQL: retrieve store procedures definitions in SQL Server</title><content type='html'>&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;select P.name, M.definition&lt;br /&gt;from sys.sql_modules M &lt;br /&gt;inner join sys.procedures P&lt;br /&gt;on P.object_id = M.object_id&lt;br /&gt;order by P.name&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-4461070800696387286?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/4461070800696387286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=4461070800696387286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4461070800696387286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4461070800696387286'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2008/08/sql-retrieving-users-store-procedures.html' title='SQL: retrieve store procedures definitions in SQL Server'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-5017739940450174999</id><published>2008-07-30T10:13:00.000-07:00</published><updated>2008-07-30T10:16:51.759-07:00</updated><title type='text'>Windbg cheat-sheet</title><content type='html'>*** steps to find an exception&lt;br /&gt;&lt;br /&gt;.symfix&lt;br /&gt;.sympath+&lt;br /&gt;.reload&lt;br /&gt;sxd *&lt;br /&gt;.loadby sos mscorwks&lt;br /&gt;!threads&lt;br /&gt;kp&lt;br /&gt;!do *throwable*&lt;br /&gt;!do *_stackTraceString*&lt;br /&gt;&lt;br /&gt;*** debugging dump&lt;br /&gt;&lt;br /&gt;lmv mmscorwks&lt;br /&gt;.reload /f mscorwks.dll&lt;br /&gt;!load sos&lt;br /&gt;!threads&lt;br /&gt;!clrstack&lt;br /&gt;!pe -nested&lt;br /&gt;&lt;br /&gt;*** setup&lt;br /&gt;&lt;br /&gt;.sympath srv*g:\binaries*http://msdl.microsoft.com/download/symbols&lt;br /&gt;.reload&lt;br /&gt;.symfix&lt;br /&gt;ld -&gt; loads module symbols&lt;br /&gt;  ld moduleName&lt;br /&gt;.loadby sos mscorwks&lt;br /&gt;&lt;br /&gt;*** memory&lt;br /&gt;&lt;br /&gt;d&lt;br /&gt;dw&lt;br /&gt;dd&lt;br /&gt;  dd /c 1 00401060 -&gt; display dwords in 1 column from address 00401060&lt;br /&gt;db&lt;br /&gt;da -&gt; ascii&lt;br /&gt;du -&gt; unicode&lt;br /&gt;dds myFunction -&gt; try to resolve symbol&lt;br /&gt;dv -&gt; display variables (needs symbols)&lt;br /&gt;dv /V&lt;br /&gt;dt -&gt; display type&lt;br /&gt;  dt _EXCEPTION_POINTERS&lt;br /&gt;ln -&gt; list near&lt;br /&gt;&lt;br /&gt;*** search&lt;br /&gt;&lt;br /&gt;s -&gt; search memory&lt;br /&gt;  s -a 77f75acc L80 "B" -&gt; searches from 77f75acc to 77f75acc+80 for the ascci 'B'&lt;br /&gt;  s 77f75acc L80 42 40 3a -&gt; searches from 77f75acc to 77f75acc+80 for the string 42, 40 and 3a&lt;br /&gt;x -&gt; search symbols&lt;br /&gt;  x *! -&gt; list of all the modules in the process with their beginning and ending memory locations&lt;br /&gt;  x *!my* -&gt; list the functions that start with 'my' in all modules&lt;br /&gt;  x my!* -&gt; list the functions in 'my' module&lt;br /&gt;&lt;br /&gt;*** registers&lt;br /&gt;&lt;br /&gt;r&lt;br /&gt;rm&lt;br /&gt;&lt;br /&gt;*** step&lt;br /&gt;&lt;br /&gt;g -&gt; go until breakpoint&lt;br /&gt;p -&gt; step&lt;br /&gt;t -&gt; step into&lt;br /&gt;gu -&gt; step out&lt;br /&gt;pa -&gt; st&lt;br /&gt;ta -&gt; trace into to address&lt;br /&gt;.restart&lt;br /&gt;bp function -&gt; set breakpoint&lt;br /&gt;bp function "command" (ex.: bp kernel32!CreateFileW "du poi(esp+4); g")&lt;br /&gt;bp address&lt;br /&gt;&lt;br /&gt;*** stack&lt;br /&gt;&lt;br /&gt;k&lt;br /&gt;kP&lt;br /&gt;.frame&lt;br /&gt;kb 50 -&gt; show 50 frames&lt;br /&gt;~*k5 -&gt; for each thread, show 5 frames&lt;br /&gt;&lt;br /&gt;*** assembly&lt;br /&gt;&lt;br /&gt;u -&gt; unassemble function&lt;br /&gt;uf myFunction&lt;br /&gt;!u -&gt; unassemble managed function&lt;br /&gt;&lt;br /&gt;*** exceptions&lt;br /&gt;&lt;br /&gt;sxe ld &lt;dll name&gt; (to disable sxd)&lt;br /&gt;sxe clr -&gt; break in CLR exceptions&lt;br /&gt;&lt;br /&gt;*** windows&lt;br /&gt;&lt;br /&gt;!gle -&gt; GetLastError()&lt;br /&gt;&lt;br /&gt;*** dumps&lt;br /&gt;&lt;br /&gt;!threads&lt;br /&gt;!DumpObj = !do&lt;br /&gt;!DumpStackObjects&lt;br /&gt;!dt&lt;br /&gt;!dso&lt;br /&gt;!pe -nested&lt;br /&gt;!peb&lt;br /&gt;.cordll -u -l&lt;br /&gt;!dumpheap -type theType&lt;br /&gt;&lt;br /&gt;*** dumps (2)&lt;br /&gt;&lt;br /&gt;lmv mmscorwks&lt;br /&gt;Find matching package at \\server\share and copy all files (except symbols) to c:\debuggers folder&lt;br /&gt;.loadby sos mscorwks (or, if doesn't work, .load %debuggers%\sos.dll)&lt;br /&gt;May need to execute .cordll –u –l&lt;br /&gt;&lt;br /&gt;*** help&lt;br /&gt;&lt;br /&gt;!help&lt;br /&gt;&lt;br /&gt;*** sources&lt;br /&gt;&lt;br /&gt;.srcpath&lt;br /&gt;.lines&lt;br /&gt;.l+, .l-&lt;br /&gt;&lt;br /&gt;*** security descriptor&lt;br /&gt;&lt;br /&gt;!object \BaseNamedObjects\CLR_CASOFF_MUTEX&lt;br /&gt;dt nt!_OBJECT_HEADER objHeader&lt;br /&gt;?? SecurityDescriptor &amp; ~0x7&lt;br /&gt;!sd *result* 1&lt;br /&gt;&lt;br /&gt;*** kernel dbg setup&lt;br /&gt;&lt;br /&gt;in Vista:&lt;br /&gt;  bcdedit /bootdebug ON&lt;br /&gt;  bcdedit /dbgsettings SERIAL DEBUGPORT:1 BAUDRATE:115200&lt;br /&gt;in XP: in boot.ini&lt;br /&gt;  /debug /debugport=com1 /baudrate=115200 &lt;br /&gt;connect Vista to box XXX with a null cable&lt;br /&gt;in XXX&lt;br /&gt;- kd.exe -server tcp:port=999 -k com:port=com1,baud=115200&lt;br /&gt;- from windbg: .server tcp:port=999&lt;br /&gt;&lt;br /&gt;restart Vista&lt;br /&gt;to start debugging, kd.exe -remote tcp:server=serverboxname,port=999&lt;br /&gt;&lt;br /&gt;From WinPE:&lt;br /&gt;&lt;br /&gt;bcdedit /store c:\boot\bcd -enum -v &lt;br /&gt;GUID corresponding to Vista -&gt; {GUID}&lt;br /&gt;bcdedit /store c:\boot\bcd –debug {GUID} on&lt;br /&gt;&lt;br /&gt;*** kernel dbg&lt;br /&gt;&lt;br /&gt;!stacks -&gt; list threads&lt;br /&gt;!locks -&gt; lists locks&lt;br /&gt;&lt;br /&gt;*** SOS commands&lt;br /&gt;&lt;br /&gt;Object Inspection &lt;br /&gt;----------------------------- &lt;br /&gt;DumpObj (do) &lt;br /&gt;DumpArray (da) &lt;br /&gt;DumpStackObjects (dso) &lt;br /&gt;DumpHeap &lt;br /&gt;DumpVC &lt;br /&gt;GCRoot &lt;br /&gt;ObjSize &lt;br /&gt;FinalizeQueue &lt;br /&gt;PrintException (pe) &lt;br /&gt;TraverseHeap &lt;br /&gt;&lt;br /&gt;Examining CLR data structures &lt;br /&gt;----------------------------- &lt;br /&gt;DumpDomain &lt;br /&gt;EEHeap &lt;br /&gt;Name2EE &lt;br /&gt;SyncBlk &lt;br /&gt;DumpMT &lt;br /&gt;DumpClass &lt;br /&gt;DumpMD &lt;br /&gt;Token2EE &lt;br /&gt;EEVersion &lt;br /&gt;DumpModule &lt;br /&gt;ThreadPool &lt;br /&gt;DumpAssembly &lt;br /&gt;DumpMethodSig &lt;br /&gt;DumpRuntimeTypes &lt;br /&gt;DumpSig &lt;br /&gt;RCWCleanupList&lt;br /&gt;DumpIL&lt;br /&gt;&lt;br /&gt;Examining code and stacks&lt;br /&gt;-----------------------------&lt;br /&gt;Threads&lt;br /&gt;CLRStack&lt;br /&gt;IP2MD&lt;br /&gt;U&lt;br /&gt;DumpStack&lt;br /&gt;EEStack&lt;br /&gt;GCInfo&lt;br /&gt;EHInfo&lt;br /&gt;COMState&lt;br /&gt;BPMD &lt;br /&gt;&lt;br /&gt;Diagnostic Utilities&lt;br /&gt;-----------------------------&lt;br /&gt;VerifyHeap&lt;br /&gt;DumpLog&lt;br /&gt;FindAppDomain&lt;br /&gt;SaveModule&lt;br /&gt;GCHandles&lt;br /&gt;GCHandleLeaks&lt;br /&gt;VMMap&lt;br /&gt;VMStat&lt;br /&gt;ProcInfo &lt;br /&gt;StopOnException (soe)&lt;br /&gt;MinidumpMode&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-5017739940450174999?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/5017739940450174999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=5017739940450174999' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/5017739940450174999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/5017739940450174999'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2008/07/windbg-cheat-sheet.html' title='Windbg cheat-sheet'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-3458328040160956525</id><published>2008-05-15T09:24:00.000-07:00</published><updated>2008-05-15T23:11:27.036-07:00</updated><title type='text'>IIS: RPS suddendly drops to zero while serving static files</title><content type='html'>Problem: while running tests on an IIS web site, RPS dropped to zero, then came back up, etc.&lt;br /&gt;&lt;br /&gt;Solution: NTFS may be causing disk I/O to be the bottleneck by logging reads to those static files. Try setting&lt;br /&gt;&lt;br /&gt;HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisableLastAccessUpdate&lt;br /&gt;&lt;br /&gt;to 1 (DWORD), reboot (not sure which services need to be restarted for avoiding a reboot...), and try.&lt;br /&gt;&lt;br /&gt;More details &lt;a href="http://technet2.microsoft.com/windowsserver/en/library/80dc5066-7f13-4ac3-8da8-48ebd60b44471033.mspx?mfr=true"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-3458328040160956525?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/3458328040160956525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=3458328040160956525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3458328040160956525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3458328040160956525'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2008/05/iis-rps-suddendly-drops-to-zero-while.html' title='IIS: RPS suddendly drops to zero while serving static files'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-4599229077490202338</id><published>2008-04-14T16:43:00.000-07:00</published><updated>2008-04-15T10:48:18.438-07:00</updated><title type='text'>Debugging: No Locals, Breakpoint not being hit, etc in Visual Studio</title><content type='html'>Problem: sometimes, VS has trouble seeing Locals for optimized assemblies. Also, even with symbols loaded for a module, a breakpoint is not hit. Or you attach to the w3wp.exe process only to not see your module as loaded (and you know it is).&lt;br /&gt;&lt;br /&gt;Solution: say your assembly is My.dll&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create a file called My.ini&lt;/li&gt;&lt;li&gt;Put this content into that file:&lt;/li&gt;&lt;p&gt;[.Net Framework Debugging Control]&lt;br /&gt;AllowOptimize=0&lt;br /&gt;GenerateTrackingInfo=1&lt;/p&gt;&lt;li&gt;Copy the .ini file to the location of the assembly in the GAC&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-4599229077490202338?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/4599229077490202338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=4599229077490202338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4599229077490202338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/4599229077490202338'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2008/04/debugging-no-locals-breakpoint-not.html' title='Debugging: No Locals, Breakpoint not being hit, etc in Visual Studio'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-3860427832921718881</id><published>2008-03-25T13:28:00.000-07:00</published><updated>2008-03-25T15:17:54.328-07:00</updated><title type='text'>Performance: ASP.NET process not being registered by vsperfmon</title><content type='html'>Problem: by following these instructions: &lt;a href="http://msdn2.microsoft.com/en-us/teamsystem/aa718860.aspx"&gt;TN_1206: Profiling ASP.NET in instrumentation mode from the command line&lt;/a&gt;, I was not getting the w3wp.exe process being registered by vsperfmon, so no .vsp file was being generated.&lt;br /&gt;&lt;br /&gt;Solution: make sure to call vsperfmon with the &lt;strong&gt;/crosssession &lt;/strong&gt;parameter&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-3860427832921718881?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/3860427832921718881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=3860427832921718881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3860427832921718881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3860427832921718881'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2008/03/performance-aspnet-process-not-being.html' title='Performance: ASP.NET process not being registered by vsperfmon'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-5643812411061963687</id><published>2008-01-16T16:35:00.000-08:00</published><updated>2008-01-16T16:44:47.586-08:00</updated><title type='text'>SharePoint: Enabling Anonymous Access on a Site Collection</title><content type='html'>&lt;p&gt;First, you need to configure the web application for anonymous access:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;go to &lt;em&gt;Central Administration&lt;/em&gt;&lt;/li&gt;&lt;li&gt;go to &lt;em&gt;Application Management&lt;/em&gt;&lt;/li&gt;&lt;li&gt;click on &lt;em&gt;Authentication Providers&lt;/em&gt;&lt;/li&gt;&lt;li&gt;choose the Web Application the site collection lives into&lt;/li&gt;&lt;li&gt;click on the zone for the specified provider&lt;/li&gt;&lt;li&gt;check &lt;em&gt;Enable Anonymous Access&lt;/em&gt; and &lt;em&gt;Save&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Then, you need to enable anonymous access in the specific site collection:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Go to &lt;em&gt;Site Actions  Site Settings  Modify All Site Settings&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Click on &lt;em&gt;Advanced Permissions&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Click on &lt;em&gt;Settings  Anonymous Access&lt;/em&gt;&lt;/li&gt;&lt;li&gt;choose desired anonymous access, then &lt;em&gt;OK&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-5643812411061963687?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/5643812411061963687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=5643812411061963687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/5643812411061963687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/5643812411061963687'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2008/01/sharepoint-enabling-anonymous-access-on.html' title='SharePoint: Enabling Anonymous Access on a Site Collection'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-1413471595840918152</id><published>2007-12-25T10:32:00.000-08:00</published><updated>2007-12-25T20:56:27.244-08:00</updated><title type='text'>WCF with Transport security and self-signed certificate</title><content type='html'>Say you want to create a secure WCF channel and not having the client verifying the server's certificate (maybe because you are testing or the server's certificate is self-signed and you don't want to install that certificate in the client's trusted certificate's store).&lt;br /&gt;&lt;br /&gt;1) Configure the server this way:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;    &amp;lt;system.serviceModel&amp;gt;&lt;br /&gt;        &amp;lt;services&amp;gt;&lt;br /&gt;            &amp;lt;service name=&amp;quot;MyContract&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;endpoint&lt;br /&gt;                  address=&amp;quot;&amp;quot;&lt;br /&gt;                  binding=&amp;quot;basicHttpBinding&amp;quot;&lt;br /&gt;                  bindingConfiguration=&amp;quot;NtlmSecurity&amp;quot;&lt;br /&gt;                  contract=&amp;quot;IMyContract&amp;quot; /&amp;gt;&lt;br /&gt;            &amp;lt;/service&amp;gt;&lt;br /&gt;        &amp;lt;/services&amp;gt;&lt;br /&gt;        &amp;lt;bindings&amp;gt;&lt;br /&gt;            &amp;lt;basicHttpBinding&amp;gt;&lt;br /&gt;                &amp;lt;binding name=&amp;quot;NtlmSecurity&amp;quot;&amp;gt;&lt;br /&gt;                    &amp;lt;security mode=&amp;quot;Transport&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;transport clientCredentialType =&amp;quot;Ntlm&amp;quot; /&amp;gt;&lt;br /&gt;                    &amp;lt;/security&amp;gt;&lt;br /&gt;                &amp;lt;/binding&amp;gt;&lt;br /&gt;            &amp;lt;/basicHttpBinding&amp;gt;&lt;br /&gt;        &amp;lt;/bindings&amp;gt;&lt;br /&gt;    &amp;lt;/system.serviceModel&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2) Force not verifying the server's certificate. WARNING: this is intended only for test purposes. In production code, you don't want to avoid checking server's certificate at all.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;private IMyContract GetChannel(Uri address)&lt;br /&gt;{&lt;br /&gt;    // Create an endpoint address&lt;br /&gt;    EndpointAddress endpoint = new EndpointAddress(address);&lt;br /&gt;&lt;br /&gt;    // Create a binding&lt;br /&gt;    BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);&lt;br /&gt;    binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;&lt;br /&gt;&lt;br /&gt;    ServicePointManager.ServerCertificateValidationCallback = new     RemoteCertificateValidationCallback(&lt;br /&gt;    delegate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)&lt;br /&gt;    {&lt;br /&gt;        return (true);&lt;br /&gt;    });&lt;br /&gt;&lt;br /&gt;    // Create a channel to the service application endpoint&lt;br /&gt;    ChannelFactory&amp;lt;imycontract&amp;gt; factory = new ChannelFactory&amp;lt;IMyContract &amp;gt;(binding, endpoint);&lt;br /&gt;    return factory.CreateChannel();&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-1413471595840918152?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/1413471595840918152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=1413471595840918152' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/1413471595840918152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/1413471595840918152'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2007/12/wcf-with-transport-security-and-self.html' title='WCF with Transport security and self-signed certificate'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-3407183871545278878</id><published>2007-12-21T10:43:00.001-08:00</published><updated>2007-12-26T16:39:24.721-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Solution Package Web Part'/><title type='text'>SharePoint: How to add a web part to a page from a solution package</title><content type='html'>Assume you already got a solution package (.wsp) of the web part.&lt;br /&gt;&lt;br /&gt;First, you have to install it:&lt;br /&gt;&lt;br /&gt;SET STSADM="%full path%\STSADM.EXE"&lt;br /&gt;SET URL="http://urlOfMySite"&lt;br /&gt;SET SPACK="myWebPart.wsp"&lt;br /&gt;&lt;br /&gt;%STSADM% -o retractsolution -name %SPACK% -immediate -url %URL%&lt;br /&gt;%STSADM% -o execadmsvcjobs&lt;br /&gt;&lt;br /&gt;%STSADM% -o deletesolution -name %SPACK% -override&lt;br /&gt;%STSADM% -o execadmsvcjobs&lt;br /&gt;&lt;br /&gt;%STSADM% -o addsolution -filename %SPACK%&lt;br /&gt;%STSADM% -o execadmsvcjobs&lt;br /&gt;&lt;br /&gt;%STSADM% -o deploysolution -name %SPACK% -immediate -allowgacdeployment -url %URL%&lt;br /&gt;%STSADM% -o execadmsvcjobs&lt;br /&gt;&lt;br /&gt;Then, from the site where you want to add the web part to a page:&lt;br /&gt;&lt;br /&gt;Site Actions | Site Settings | Modify All Site Settings | Galleries | Web Parts, New&lt;br /&gt;Choose your web part, click "Populate Gallery"&lt;br /&gt;&lt;br /&gt;Then,&lt;br /&gt;&lt;br /&gt;Site Actions | Site Settings | Modify All Site Settings | Site Collection Administration | Site Collection Features, click "Activate" to activate your web part&lt;br /&gt;&lt;br /&gt;Then, you should be able to add your web part to a page on that site:&lt;br /&gt;&lt;br /&gt;Navigate to a page&lt;br /&gt;Site Actions | Edit Page, Add a Web Part, choose your web part, Add, Publish&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-3407183871545278878?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/3407183871545278878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=3407183871545278878' title='35 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3407183871545278878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3407183871545278878'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2007/12/sharepoint-how-to-add-web-part-to-page.html' title='SharePoint: How to add a web part to a page from a solution package'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>35</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-3496580310156284153</id><published>2007-12-14T13:52:00.000-08:00</published><updated>2007-12-14T13:56:37.265-08:00</updated><title type='text'>System.Web.Extensions version error</title><content type='html'>Problem:&lt;br /&gt;&lt;br /&gt;when trying to access a SharePoint page (can repro with plain ASP.NET too), this exception got thrown:&lt;br /&gt;&lt;br /&gt;An error occurred during the processing of . (0): error CS1705: Assembly 'Microsoft.Whatever' uses 'System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;&lt;br /&gt;in affected web.config, replace&lt;br /&gt;&lt;br /&gt;"System.Web.Extensions, Version=1.0.61025.0"&lt;br /&gt;&lt;br /&gt;with&lt;br /&gt;&lt;br /&gt;"System.Web.Extensions, Version=3.5.0.0"&lt;br /&gt;&lt;br /&gt;and iisreset.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-3496580310156284153?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/3496580310156284153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=3496580310156284153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3496580310156284153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/3496580310156284153'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2007/12/systemwebextensions-version-error.html' title='System.Web.Extensions version error'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4444188791642767822.post-5958437682028399031</id><published>2007-12-12T14:04:00.000-08:00</published><updated>2007-12-12T17:22:08.595-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio find replace tagged expressions'/><title type='text'>Visual Studio Find &amp; Replace with Tagged Expressions</title><content type='html'>This is an example on how to use tagged expressions in Visual Studio Find &amp;amp; Replace dialog.&lt;br /&gt;&lt;br /&gt;Say you need to replace all of the ocurrences of&lt;br /&gt;&lt;br /&gt;MyMethod&amp;lt;MyType&amp;gt;("Identity");&lt;br /&gt;&lt;br /&gt;with something like&lt;br /&gt;&lt;br /&gt;(MyType)Fields["Identity"];&lt;br /&gt;&lt;br /&gt;Then, you have to find&lt;br /&gt;&lt;br /&gt;MyMethod\&lt;&lt;strong&gt;{&lt;/strong&gt;:w+&lt;strong&gt;}&lt;/strong&gt;\&gt;\(\"&lt;strong&gt;{&lt;/strong&gt;:w+&lt;strong&gt;}&lt;/strong&gt;\"\);&lt;br /&gt;&lt;br /&gt;and replace it by&lt;br /&gt;&lt;br /&gt;(&lt;strong&gt;\1&lt;/strong&gt;)Fields["&lt;strong&gt;\2&lt;/strong&gt;"];&lt;br /&gt;&lt;br /&gt;Simple.&lt;br /&gt;&lt;br /&gt;Notice two things here:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;the backslashes before every reg exp metacharacter in the Find statement&lt;/li&gt;&lt;li&gt;the absence of them in the Replace statement&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4444188791642767822-5958437682028399031?l=softwarerecipes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarerecipes.blogspot.com/feeds/5958437682028399031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4444188791642767822&amp;postID=5958437682028399031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/5958437682028399031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4444188791642767822/posts/default/5958437682028399031'/><link rel='alternate' type='text/html' href='http://softwarerecipes.blogspot.com/2007/12/visual-studio-find-replace-with-tagged.html' title='Visual Studio Find &amp; Replace with Tagged Expressions'/><author><name>Ariel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
