<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>HOW-TOs</title>
        <link>http://geekswithblogs.net/evjen/category/4838.aspx</link>
        <description>HOW-TOs</description>
        <language>en-US</language>
        <copyright>Bill Evjen</copyright>
        <managingEditor>bill.evjen@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Word Issue - Couldn't Select Text</title>
            <link>http://geekswithblogs.net/evjen/archive/2007/09/04/115140.aspx</link>
            <description>&lt;p&gt;I woke up yesterday morning, I noticed that Vista had installed three different security updates overnight. Opening Microsoft Word, I noticed that I was unable to use my mouse anywhere within the document anymore. I couldn't select any text. I couldn't right-click. I could only move my cursor around with the arrow keys on my keyboard. For me, this made Word completely useless.&lt;/p&gt;
&lt;p&gt;The problem was with a SnagIt add-in to Microsoft Office that was installed on my machine. It all of a sudden seemed to have issues running in the new environment (even though I had this add-in for quite some time on my machine). If you don't have the SnagIt program installed - then it most likely is another add-in.&lt;/p&gt;
&lt;p&gt;To fix the problem, you can try to go to the Word Options dialog. You get to this dialog by pressing the Office Start button in the upper-left hand corner and selecting Word Options (a button at the bottom). You will then get a dialog where one of the options will be a Add-Ins page.&lt;/p&gt;
&lt;p&gt; &lt;img height="287" width="450" alt="" src="/images/geekswithblogs_net/evjen/WordAddIns(1).gif" /&gt;&lt;/p&gt;
&lt;p&gt;From here, you can highlight your add-ins by clicking on the Go button and unchecking all the add-ins. From there, start adding them back in till you find the one that is the problem. If you are like me and couldn't even navigate to this screen, then you are going to want to make the add-in changes to the registry yourself. For this, press the start button and type regedit in the search box to get to the regedit.exe program. BE CAREFUL IN HERE AND DON'T CHANGE ANYTHING BUT WHAT I MENTION HERE OR YOU WILL TOTALLY MESS UP YOUR MACHINE. I AM NOT RESPONSIBLE TO ANYTHING YOU DO TO YOUR MACHINES!&lt;/p&gt;
&lt;p&gt;In the regedit tool: navigate to &lt;font face="Courier New"&gt;&lt;strong&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Word\Addins&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="174" width="400" alt="" src="/images/geekswithblogs_net/evjen/Tools/Microsoft/WordReg.gif" /&gt;&lt;/p&gt;
&lt;p&gt;Go to the LoadBehavior item in the right-hand pane and double-clicking on it will allow you to change the value from 3 to 0. A value of 0 (Zero) means that the add-in is disabled.&lt;/p&gt;
&lt;p&gt;This should work for you - worked for me.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/evjen/aggbug/115140.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Bill Evjen</dc:creator>
            <guid>http://geekswithblogs.net/evjen/archive/2007/09/04/115140.aspx</guid>
            <pubDate>Tue, 04 Sep 2007 16:36:46 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/evjen/comments/115140.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/evjen/archive/2007/09/04/115140.aspx#feedback</comments>
            <slash:comments>9</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/evjen/comments/commentRss/115140.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/evjen/services/trackbacks/115140.aspx</trackback:ping>
        </item>
        <item>
            <title>ReSharper on Visual Studio 2008</title>
            <link>http://geekswithblogs.net/evjen/archive/2007/08/13/114620.aspx</link>
            <description>&lt;div style="MARGIN: 0in 0in 10pt"&gt;&lt;img alt="" hspace="7" align="left" vspace="2" border="1" src="http://www.jetbrains.com/img/logo.gif" /&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;If I were to pick one tool to add to Visual Studio for my day-to-day coding, it would be &lt;a href="http://www.jetbrains.com/resharper/"&gt;ReSharper&lt;/a&gt; by &lt;a href="http://www.jetbrains.com"&gt;JetBrains&lt;/a&gt;. I have been using the tool since version 2.0 and it is currently in version 3.0. It provides a ton of tips/corrections/advice as you type code. It provides better tooltips, better Intellisense, and extremely better refactoring than what you get out of the box with the default Visual Studio.&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;For those of us out there that grab hold of the latest betas as soon as possible, you might be wondering about how to install ReSharper onto &lt;a href="http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx"&gt;Visual Studio 2008&lt;/a&gt;. I, myself, am running Visual Studio 2005 and 2008 on the same box (with no issues I might add). Installing ReSharper 3.0 on the box will default to install it to work with Visual Studio 2005. Though, if you are also going to want to install it on Visual Studio 2008, then you are going to have to take some extra steps.&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;The first step is to go to your command prompt and use the following command:&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;msiexec /i ReSharperSetup.3.0.1.msi VSVERSION=9.0&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;From there, it is a little confusing, but you will be asked to Remove/Reinstall/Change the current install. This is due to the fact that I already have ReSharper installed on the VS2005 version of the IDE. You can easily get around this by selecting Reinstall and it will then install the tool for VS2008 as is specified by the parameter in the command line &lt;font face="Courier New"&gt;VSVERSION=9.0&lt;/font&gt; …. which is 2008.&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;So far, no problems.&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;JetBrains just released the latest version of ReSharper 3.0.2 Build 517 and they now include a specific install for VS 2008.&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;&lt;img height="140" width="656" border="1" alt="" src="/images/geekswithblogs_net/evjen/Tools/VS Tools/Resharper.gif" /&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;So, if you are running both VS2005 and VS2008 on your box - you would need to download both versions of ReSharper and you will be good to go.&lt;/div&gt; &lt;img src="http://geekswithblogs.net/evjen/aggbug/114620.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Bill Evjen</dc:creator>
            <guid>http://geekswithblogs.net/evjen/archive/2007/08/13/114620.aspx</guid>
            <pubDate>Mon, 13 Aug 2007 18:40:03 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/evjen/comments/114620.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/evjen/archive/2007/08/13/114620.aspx#feedback</comments>
            <slash:comments>9</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/evjen/comments/commentRss/114620.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/evjen/services/trackbacks/114620.aspx</trackback:ping>
        </item>
        <item>
            <title>Server-Side Excel Generation</title>
            <link>http://geekswithblogs.net/evjen/archive/2007/04/09/111212.aspx</link>
            <description>&lt;P&gt;&lt;IMG alt=ExcelPackage src="http://www.codeplex.com/ExcelPackage/Project/FileDownload.aspx?DownloadId=5254"&gt;&lt;/P&gt;
&lt;P&gt;I have been looking at the best ways in which &lt;A href="http://www.lipperweb.com"&gt;Lipper&lt;/A&gt; can work with Excel in our next-generation application and took a look at &lt;A href="http://www.codeplex.com/ExcelPackage"&gt;ExcelPackage&lt;/A&gt; - an &lt;A href="http://www.ecma-international.org/news/PressReleases/PR_TC45_Dec2006.htm"&gt;Office Open XML&lt;/A&gt; file creation library. I was quite impressed with how easy it is to create Excel documents on the fly with our latest financial information and then to delivery that file to the end user via a web service or something.&lt;/P&gt;
&lt;P&gt;The nice thing is that you can create exciting looking Excel documents (using Office 2007) on the server with very little coding. ExcelPackage makes use of the .NET Framework 3.0's new &lt;FONT face="Courier New"&gt;System.IO.Packaging&lt;/FONT&gt; namespace in the Office Open XML creation. This does mean that you are unable to create dynamic Office 2003 or earlier files to deliver (tried that as a test myself).&lt;/P&gt;
&lt;P&gt;What makes it so fast is that you can make use of a templated Excel file on your server instead of&amp;nbsp;building all the styles of document in code. This then means that you can just deal with just populating the values into the Excel document as needed and the values that you place in specific ranges or cells then can be used to drive other parts of the document - such as charts. An example I quickly put together with dummy data is presented here:&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System.Collections.Generic;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System.Text;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System.IO;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; OfficeOpenXml;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;namespace&lt;/FONT&gt;&lt;FONT size=2&gt; ConsoleApplication1&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;class&lt;/FONT&gt;&lt;FONT size=2&gt; Program&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;static&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;FONT size=2&gt; Main()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;FileInfo&lt;/FONT&gt;&lt;FONT size=2&gt; newFile = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;FileInfo&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;@"C:\LipperSelectedAsset.xlsx"&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;FileInfo&lt;/FONT&gt;&lt;FONT size=2&gt; template = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;FileInfo&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;@"C:\AssetOverview.xlsx"&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; (ExcelPackage xlPackage = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; ExcelPackage(newFile, template))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets[1];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; worksheet.Cell(1, 2).Value = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"ABC Global Select Equity B USD"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; worksheet.Cell(5, 4).Value = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"Equity Fund"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;worksheet.Cell(1, 2).Comment = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"New Fund"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExcelWorksheet worksheet2 = xlPackage.Workbook.Worksheets[2];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;worksheet2.Cell(1, 1).Value = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"23"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; worksheet2.Cell(2, 1).Value = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"32"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; worksheet2.Cell(3, 1).Value = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"25"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; worksheet2.Cell(4, 1).Value = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"22"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; worksheet2.Cell(5, 1).Value = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"23"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; worksheet2.Cell(6, 1).Value = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"231"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; worksheet2.Cell(7, 1).Value = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"232"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExcelWorksheet worksheet3 = xlPackage.Workbook.Worksheets[3];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; worksheet3.Cell(1, 1).Value = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;""&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xlPackage.Save();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;In the first line of code - I created an instance of the file that I will be creating on the server. The second line specifies the template that is to be utilized. Then using the ExcelPackage object, you make an association between the new file and the template. Then using the ExcelWorksheet object, you create values on the three default worksheets of the Excel document. It is important to realize what I am doing in the 3rd worksheet of the file. You can see from my bit of code that I am populating a blank value in the first cell and doing nothing more. The problem is that the class library expects a value on each of the three default worksheets otherwise you will get an error.&lt;/P&gt;
&lt;P&gt;Give it a try - this is pretty simple.&lt;/P&gt; &lt;img src="http://geekswithblogs.net/evjen/aggbug/111212.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Bill Evjen</dc:creator>
            <guid>http://geekswithblogs.net/evjen/archive/2007/04/09/111212.aspx</guid>
            <pubDate>Mon, 09 Apr 2007 19:24:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/evjen/comments/111212.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/evjen/archive/2007/04/09/111212.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/evjen/comments/commentRss/111212.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/evjen/services/trackbacks/111212.aspx</trackback:ping>
        </item>
        <item>
            <title>Installing Fingerprint Reader software on Windows Vista</title>
            <link>http://geekswithblogs.net/evjen/archive/2006/12/31/102409.aspx</link>
            <description>&lt;P&gt;Installed Windows Vista back on my machine. Took it off for a while due to the fact that the new &lt;A href="http://www.zune.net"&gt;Zune&lt;/A&gt; software didn't work on Vista. It does now - so I'm back! :)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/windowsvista/default.htm"&gt;&lt;IMG title="" height=42 alt="Microsoft Windows Vista" src="http://www.microsoft.com/library/toolbar/3.0/images/banners/WindVistaTemp_ltr.jpg" width=660 border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;In installing Windows Vista, for the second time - one thing that took me a while was finding all the software for my Microsoft Keyboard with Fingerprint Reader. You can find the software for both the keyboard and the fingerprint reader here:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/hardware/mouseandkeyboard/download.mspx"&gt;http://www.microsoft.com/hardware/mouseandkeyboard/download.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;It is two separate pieces of software that you want to install. The first is &lt;A href="http://download.microsoft.com/download/9/0/1/901BBD58-043B-40C1-A2B2-7778A068A321/ITP32Eng.exe"&gt;ItelliType Pro 6.1 (32bit) for Vista&lt;/A&gt;. Installing this on Vista will not require a reboot. After installing this, you will then want to install &lt;A href="http://download.microsoft.com/download/b/0/f/b0fee793-683c-42f4-9fdc-011cab5cc853/Setup.exe"&gt;DigitalPersona Password Manager 2.0&lt;/A&gt;. This will require a reboot and then you will register your fingerprints after the reboot. Works wonderfully on Vista.&lt;/P&gt;
&lt;P&gt;For those that don't yet have a fingerprint reader (whether it is on their keyboard or not), this is something that I highly recommend. I have one at work and at home. You never have to type in your username and password again.&lt;/P&gt; &lt;img src="http://geekswithblogs.net/evjen/aggbug/102409.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Bill Evjen</dc:creator>
            <guid>http://geekswithblogs.net/evjen/archive/2006/12/31/102409.aspx</guid>
            <pubDate>Mon, 01 Jan 2007 00:16:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/evjen/comments/102409.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/evjen/archive/2006/12/31/102409.aspx#feedback</comments>
            <slash:comments>32</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/evjen/comments/commentRss/102409.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/evjen/services/trackbacks/102409.aspx</trackback:ping>
        </item>
        <item>
            <title>HOW TO: Build Your First WPF Application</title>
            <link>http://geekswithblogs.net/evjen/archive/2006/11/20/97624.aspx</link>
            <description>&lt;P&gt;I just really started playing around with WPF and XAML and how to build an application in this new format. I really like it, but at the same time, I have a lot to still learn! For my first example, I wanted a form that would have some sort of event that caused UI to change in some manner. For this, I put together a form with a simple Button control on it and a place to put some results on the form after the button is clicked. This form really needs two pieces to work - &lt;FONT face="Courier New"&gt;Window1.xaml&lt;/FONT&gt; and &lt;FONT face="Courier New"&gt;Window1.xaml.cs&lt;/FONT&gt;. &lt;FONT face="Courier New"&gt;Window1.xaml&lt;/FONT&gt; is the visual form and it is laid out using XAML, while &lt;FONT face="Courier New"&gt;Window1.xaml.cs&lt;/FONT&gt; is the code-behind file.&lt;/P&gt;
&lt;P&gt;What I really like about this WPF model is that it is very much like the ASP.NET model - which I find quite attractive. You have a page dealing with presentation and another page that deals with all of the business logic surrounding the page. The code for the &lt;FONT face="Courier New"&gt;Window1.xaml&lt;/FONT&gt; file is presented here:&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Window&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;x:Class&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;XAML_Example.Window1&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;xmlns&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;xmlns:x&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Title&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;XAML_Example&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Height&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;300&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Width&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;300&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Grid&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Button&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Height&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;23&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Margin&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;15,15,125,0&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;button1&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;VerticalAlignment&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Top&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Click&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;button1_Click&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT size=2&gt;Random Number&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Button&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;ScrollViewer&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Margin&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;0,50,0,0&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;TextBlock&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;textBlock1&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;TextWrapping&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Wrap&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;FontSize&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;20&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;FontWeight&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Bold&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;ScrollViewer&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Grid&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Window&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;From this, you can see the entire form is defined using the &lt;FONT face="Courier New"&gt;&amp;lt;Window&amp;gt;&lt;/FONT&gt; element. Looking at the attributes of the element, you can also see that I defined the title of the form and its size. All the items within the &lt;FONT face="Courier New"&gt;&amp;lt;Grid&amp;gt;&lt;/FONT&gt; element can actually be in any order you want as the real emphasis is on the Margin attribute which specifies the location of the object. You can see that&amp;nbsp;I have a Button control, a ScrollViewer control, and a TextBlock control on the form. Looking more closely at at the &lt;FONT face="Courier New"&gt;&amp;lt;Button&amp;gt;&lt;/FONT&gt; control, you can create an event for this by simply adding the appropriate attribute. In this case, the &lt;FONT face="Courier New"&gt;Click&lt;/FONT&gt; attribute is added and a method name is assigned to it (&lt;FONT face="Courier New"&gt;button1_Click()&lt;/FONT&gt;). This points to a method that is contained in your code-behind file - &lt;FONT face="Courier New"&gt;Window1.xaml.cs&lt;/FONT&gt;.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;namespace&lt;/FONT&gt;&lt;FONT size=2&gt; XAML_Example&lt;BR&gt;{&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;partial&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;class&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Window1&lt;/FONT&gt;&lt;FONT size=2&gt;: System.Windows.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Window&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT size=2&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;public&lt;/FONT&gt;&lt;FONT size=2&gt; Window1()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff size=2&gt;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;FONT size=2&gt; button1_Click(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;object&lt;/FONT&gt;&lt;FONT size=2&gt; sender, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;EventArgs&lt;/FONT&gt;&lt;FONT size=2&gt; e) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Random&lt;/FONT&gt;&lt;FONT size=2&gt; generator = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Random&lt;/FONT&gt;&lt;FONT size=2&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; randomValue;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; randomValue = generator.Next(10, 100);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textBlock1.Text += &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;" "&lt;/FONT&gt;&lt;FONT size=2&gt; + randomValue.ToString();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;Running this bit of code and pressing the button to initiate the &lt;FONT face="Courier New"&gt;button1_Click&lt;/FONT&gt; event will give you something like the following results as presented here:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;IMG src="/images/geekswithblogs_net/evjen/65/o_XAML_Random.gif"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Enjoy!&lt;/P&gt;&lt;/FONT&gt; &lt;img src="http://geekswithblogs.net/evjen/aggbug/97624.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Bill Evjen</dc:creator>
            <guid>http://geekswithblogs.net/evjen/archive/2006/11/20/97624.aspx</guid>
            <pubDate>Mon, 20 Nov 2006 13:16:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/evjen/comments/97624.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/evjen/archive/2006/11/20/97624.aspx#feedback</comments>
            <slash:comments>13</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/evjen/comments/commentRss/97624.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/evjen/services/trackbacks/97624.aspx</trackback:ping>
        </item>
        <item>
            <title>Web Services - Sending Large SOAP Messages</title>
            <link>http://geekswithblogs.net/evjen/archive/2006/09/13/91112.aspx</link>
            <description>&lt;P&gt;I have been working in the area of &lt;A href="http://msdn.microsoft.com/webservices"&gt;Web services&lt;/A&gt; for some time and&amp;nbsp; I am on a project where&amp;nbsp;I needed to distribute some extremely large datasets to some clients (Windows Forms). So, imagine an interface where you need to request information about an entity and you have a service where you can send in an array of entities to then get back an array of result sets about each one of the identifiers passed in. We had one such application and it worked quite nicely in that we built some ASP.NET 2.0 Web services to push out the SOAP messages to the client in just this scenario. It worked so well since we were only sending in 30 identifiers at a time but then we really decided to test it out when we put in 1,000 - 5,000 identifiers into one request. This in return was giving us back tremendously large SOAP messages and in many cases our Windows Forms application was simply timing out. How to approach this we thought. There are many methods of approach&amp;nbsp;and we had to pick one and go with it as we had to support this scenario for our clients.&lt;/P&gt;
&lt;P&gt;Our options included:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Using the Windows Communication Foundation and building services that pushed binary objects around instead of using SOAP. 
&lt;LI&gt;Using .NET Remoting instead and using the binary over HTTP that it offers. 
&lt;LI&gt;Using an HTTP compression class&amp;nbsp;technique along with SOAP Extensions to compress the SOAP message before it went out across the wire. 
&lt;LI&gt;Using the HTTP Compression feature found&amp;nbsp;on the Windows Server 2003 box with our standard ASP.NET Web services 
&lt;LI&gt;Using WSE 3.0 MTOM capabilities to encapsulate our messages into binary objects to send across the wire&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;There are a lot of options, but we quickly narrowed them down. First off, we are not able to use the WCF yet as we are unable to put this on the client at this point in time as we are supporting so many operating systems that are below the required Windows XP SP2. .NET Remoting ... maybe, but we really wanted to stick to the SOAP model for later routing purposes. Soap Extensions - a possibility, but not the easiest to implement and would require us to put a decompression class on the client. HTTP Compression - that's a possibility. WSE 3.0 - another interesting stance, but would require us to put the WSE 3.0 on the client - something we weren't too interested in doing.&lt;/P&gt;
&lt;P&gt;So, we narrowed our tests down to .NET Remoting as well as HTTP Compression using Windows Server 2003. We&amp;nbsp;built a test application that first did a comparison between .NET Remoting and standard ASP.NET 2.0 Web services with no compression enabled. The tests were interesting. First off when a single identifier was sent in and a tiny SOAP message was returned - there really wasn't that much difference between the two. The results were pretty much the same. Though, when sending in 1,000 identifiers .NET Remoting considerably outperformed ASP.NET 2.0 Web services. This was due to the fact that the large SOAP message was being sent as binary over the wire and the entire serialization and deserialization process was eliminated. The results were that .NET Remoting performed by shrinking the time it took to get the response to less than &lt;STRONG&gt;HALF&lt;/STRONG&gt; that of the ASP.NET 2.0 Web services approach.&lt;/P&gt;
&lt;P&gt;Then we turned on HTTP Compression on the Windows Server 2003 box. Instructions for this can be found at &lt;A href="http://support.microsoft.com/?id=322603"&gt;http://support.microsoft.com/?id=322603&lt;/A&gt;&amp;nbsp;but you want to do this for .asmx pages. Though, you will discover that enabling compression through IIS is not the only step you are required to take. In order for the HTTP message to be compressed on the server, you are going to need to get the client to ask for the message to be compressed. This means that the client will need to send a &lt;FONT face="Courier New"&gt;accept-encoding: gzip;&lt;/FONT&gt; in the HTTP header. By default, proxy classes don't do this for you. Instead, you are going to have to force the client to make this type of request by using the new &lt;FONT face="Courier New"&gt;EnableDecompression&lt;/FONT&gt; property in .NET 2.0.&lt;/P&gt;&lt;FONT size=2&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;Fundamental.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Fundamentals_1_0&lt;/FONT&gt;&lt;FONT size=2&gt; proxy = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; Fundamental.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Fundamentals_1_0&lt;/FONT&gt;&lt;FONT size=2&gt;();&lt;BR&gt;proxy.EnableDecompression = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;true&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;
&lt;P&gt;After you instantiate the proxy class, you simply set the &lt;FONT face="Courier New"&gt;EnableDecompression&lt;/FONT&gt; property to &lt;FONT face="Courier New"&gt;true&lt;/FONT&gt; and you are then good to go - the proper HTTP header will now be included. Enabling our client to do this and sending in the 1,000 identifiers we were amazed that we could just about replicate the .NET Remoting performance and in some cases we could match it. This showed us that we could deliver our large SOAP messages over HTTP and get away with doing the littlest impact to the client that was possible (as far as new installs of any software&amp;nbsp;or code changes to the client app).&lt;/P&gt;
&lt;P&gt;Other scenarios may of course warrant different approaches - I'm just describing what worked for us in this case. It was a good lesson.&lt;/P&gt; &lt;img src="http://geekswithblogs.net/evjen/aggbug/91112.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Bill Evjen</dc:creator>
            <guid>http://geekswithblogs.net/evjen/archive/2006/09/13/91112.aspx</guid>
            <pubDate>Wed, 13 Sep 2006 18:33:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/evjen/comments/91112.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/evjen/archive/2006/09/13/91112.aspx#feedback</comments>
            <slash:comments>9</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/evjen/comments/commentRss/91112.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/evjen/services/trackbacks/91112.aspx</trackback:ping>
        </item>
        <item>
            <title>EXCELLENT TUTORIALS - Building a 3-Tiered Data Architecture with ASP.NET 2.0</title>
            <link>http://geekswithblogs.net/evjen/archive/2006/07/03/83932.aspx</link>
            <description>&lt;P&gt;From Scott Mitchell ... outstanding!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.asp.net/learn/dataaccess/default.aspx?tabid=63"&gt;http://www.asp.net/learn/dataaccess/default.aspx?tabid=63&lt;/A&gt;&amp;nbsp;&lt;/P&gt; &lt;img src="http://geekswithblogs.net/evjen/aggbug/83932.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Bill Evjen</dc:creator>
            <guid>http://geekswithblogs.net/evjen/archive/2006/07/03/83932.aspx</guid>
            <pubDate>Mon, 03 Jul 2006 11:50:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/evjen/comments/83932.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/evjen/archive/2006/07/03/83932.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/evjen/comments/commentRss/83932.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/evjen/services/trackbacks/83932.aspx</trackback:ping>
        </item>
        <item>
            <title>Can't View CHM Files in IE7 - A FIX</title>
            <link>http://geekswithblogs.net/evjen/archive/2006/06/29/83567.aspx</link>
            <description>&lt;P&gt;If you are having problems viewing CHM files (like the new WCF documentation CHM files), you might be seeing a blank IE screen when you click on any of the subject headings contained ni the file. If this is the case, right-click on the CHM file and select Properties from the provided menu. You can then click on the Unblock button at the bottom. This will then allow the CHM file to be viewed using IE as it should be.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="/images/geekswithblogs_net/evjen/65/o_chmfiles.gif"&gt;&lt;/P&gt; &lt;img src="http://geekswithblogs.net/evjen/aggbug/83567.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Bill Evjen</dc:creator>
            <guid>http://geekswithblogs.net/evjen/archive/2006/06/29/83567.aspx</guid>
            <pubDate>Thu, 29 Jun 2006 14:00:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/evjen/comments/83567.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/evjen/archive/2006/06/29/83567.aspx#feedback</comments>
            <slash:comments>150</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/evjen/comments/commentRss/83567.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/evjen/services/trackbacks/83567.aspx</trackback:ping>
        </item>
        <item>
            <title>Installing a Clean Image on the Thinkpad T60</title>
            <link>http://geekswithblogs.net/evjen/archive/2006/06/19/82386.aspx</link>
            <description>&lt;P&gt;&lt;IMG src="http://www.pdamania.hu/images/cikk/thinkpad_20060106_2.jpg"&gt;&lt;/P&gt;
&lt;P&gt;When I sent to install a clean image of Windows XP on my new Thinkpad T60, it wouldn't proceed as it couldn't find any hard drive to deploy the OS to. To get around this, you have to step into the BIOS by pressing the ThinkVantage blue button at the top of the keyboard. Once there, go into the CONFIG section and scroll down to SATA. From here, change the setting to Compatibility and then ESC out and end by saving the changes made. Reboot and you will then be able to install the OS.&lt;/P&gt; &lt;img src="http://geekswithblogs.net/evjen/aggbug/82386.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Bill Evjen</dc:creator>
            <guid>http://geekswithblogs.net/evjen/archive/2006/06/19/82386.aspx</guid>
            <pubDate>Mon, 19 Jun 2006 20:01:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/evjen/comments/82386.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/evjen/archive/2006/06/19/82386.aspx#feedback</comments>
            <slash:comments>29</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/evjen/comments/commentRss/82386.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/evjen/services/trackbacks/82386.aspx</trackback:ping>
        </item>
    </channel>
</rss>
