<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Robert McLaws: FunWithCoding.NET : .NET Framework 1.1</title><link>http://weblogs.asp.net/rmclaws/archive/tags/.NET+Framework+1.1/default.aspx</link><description>Tags: .NET Framework 1.1</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>VisualBlogger Beta 1 This Weekend!</title><link>http://weblogs.asp.net/rmclaws/archive/2004/04/01/105416.aspx</link><pubDate>Thu, 01 Apr 2004 12:48:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:105416</guid><dc:creator>interscape</dc:creator><author>interscape</author><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/rmclaws/rsscomments.aspx?PostID=105416</wfw:commentRss><comments>http://weblogs.asp.net/rmclaws/archive/2004/04/01/105416.aspx#comments</comments><description>&lt;P&gt;I'm wrapping up the last features for the first beta of VisualBlogger 2004. 
Wanted to give a brief status report on where I am at, what features it has, and 
what features are left to be done before the final release.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Beta 1 Features:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
  &lt;LI&gt;Full WYSIWYG Editing 
  &lt;LI&gt;Raw HTML Editing 
  &lt;LI&gt;Blogging ScratchPad 
  &lt;LI&gt;Post To Mutliple Weblogs 
  &lt;LI&gt;Post To Multiple Weblogs with Categories 
  &lt;LI&gt;Blog Credential Hashing in Local Store 
  &lt;LI&gt;Save Posts 
  &lt;LI&gt;Load Posts 
  &lt;LI&gt;Clipboard Access
  &lt;LI&gt;Code Formatting
  &lt;LI&gt;Provider Model-Based 
  &lt;LI&gt;2 BlogProviders 
  &lt;UL&gt;
    &lt;LI&gt;.Text Simple (SimpleBlogService.asmx) 
    &lt;LI&gt;.Text 0.95 (AspNetWeblog.asmx and BlogContent.asmx)&lt;/LI&gt;&lt;/UL&gt;
  &lt;LI&gt;Abstracted object model mapped to provider-specific objects 
  &lt;LI&gt;Central Bug Reporting / Feedback System&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Final Version Features:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
  &lt;LI&gt;Advanced Post Options (Allow Comments, Page Alias, etc) 
  &lt;LI&gt;Dynamic assessment of available options by provider (CanAllowComments, 
  etc) 
  &lt;LI&gt;8&amp;nbsp;BlogProviders &lt;/LI&gt;
  &lt;UL&gt;
    &lt;LI&gt;.Text Simple (SimpleBlogService.asmx) 
    &lt;LI&gt;.Text 0.95 (AspNetWeblog.asmx and BlogContent.asmx) 
    &lt;LI&gt;.Text 0.96 (DotTextAPI.asmx) 
    &lt;LI&gt;Blogger API 
    &lt;LI&gt;LiveJournal API 
    &lt;LI&gt;MetaWeblogAPI 
    &lt;LI&gt;Movable Type API 
    &lt;LI&gt;Atom API&lt;/LI&gt;&lt;/UL&gt;
  &lt;LI&gt;Dynamic provider substitution/addition at runtime
  &lt;LI&gt;Edit Existing Posts (Where Available) 
  &lt;LI&gt;Edit Categories (Where Available) 
  &lt;LI&gt;Insert New Categories (Where Available) 
  &lt;LI&gt;Upload Images via FTP 
  &lt;LI&gt;Local Caching of Categories 
  &lt;LI&gt;Saved Entries stored as XML 
  &lt;LI&gt;VS.NET 2002 &amp;amp; 2003 Integration 
  &lt;LI&gt;VS.NET "VisualBlog This Code" right-click option (Code autoformating) 
  &lt;LI&gt;IE "VisualBlog This" right-click option 
  &lt;LI&gt;Automatic backups every 5 minutes 
  &lt;LI&gt;Remote Blog Configuration (Where Available)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Ambitious, to be sure, but completely doable. I'm planning a final release 
sometime in late April / early May. I wanted to release it along with the other 
stuff Interscape is doing, but this project needs to take a backseat while we 
collect some public feedback. I want this to be a really kick-butt tool, and I'm 
willing to wait a bit for that to happen. Plus, I have some other .Text-related 
development work that I'll need to focus on for a while, so it works out quite 
nicely.&lt;/P&gt;
&lt;P&gt;I spent tha past 3 days doing a complete overhaul on the organization. I 
redid all of the namespacing, and gave the Web Service references a predictable 
taxonomy. Posts are now using objects as intermediate storage units, using 
heavily modified versions of ScottW's .Text objects. I can honestly say now, 
that I LOVE programming with collections. I can't wait till I can use Generics. 
Very exciting. I added some nifty features to the existing Category collections, 
which let me dump the categoty data into various formats depending on the 
situation. Using this setup also made implementing the providers a breeze. The 
combination of typed datasets and the new objects make mapping to 
provider-specific objects dirt simple.&lt;/P&gt;
&lt;P&gt;I have really grown as a developer through this project. I really surprised 
myself with all the things it can do. It took me weeks to figure out the 
provider model implementation for &lt;A 
href="http://www.genxdotnet.com"&gt;GenX.NET&lt;/A&gt; (found out weeks later that 
Microsoft's implementation in Whidbey is very similar), and I implemented it in 
VisualBlogger in a matter of hours. I already found some serious improvements to 
the model that will be made for GenX.NET 3.1, and was able to streamline the 
code for that product even further.&lt;/P&gt;
&lt;P&gt;Well, enough rambling. I need to test the "Post To Categories" part of the 
new provider-based system, so I can go to sleep. Got to start getting ready for 
the MVP Summit. Looking forward to going back to Microsoft again. This will be 
my second trip, and I am way excited. More on that later.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=105416" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rmclaws/archive/tags/VS.NET+2003/default.aspx">VS.NET 2003</category><category domain="http://weblogs.asp.net/rmclaws/archive/tags/.NET+Framework+1.1/default.aspx">.NET Framework 1.1</category><category domain="http://weblogs.asp.net/rmclaws/archive/tags/.Text/default.aspx">.Text</category><category domain="http://weblogs.asp.net/rmclaws/archive/tags/VisualBlogger+2004/default.aspx">VisualBlogger 2004</category></item><item><title>VisualBlogger CategoryPost Test #9</title><link>http://weblogs.asp.net/rmclaws/archive/2004/03/25/96353.aspx</link><pubDate>Fri, 26 Mar 2004 01:12:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:96353</guid><dc:creator>interscape</dc:creator><author>interscape</author><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/rmclaws/rsscomments.aspx?PostID=96353</wfw:commentRss><comments>http://weblogs.asp.net/rmclaws/archive/2004/03/25/96353.aspx#comments</comments><description>&lt;P&gt;The WinForms adventure continues. The CheckedListBox control has been giving 
me all sorts of problems. For one thing, if you put one in a TabControlPage, and 
then switch pages, it doesn't hold its state. It took me a little bit of 
experimentation, but I came up with the following code to help out:&lt;/P&gt;&lt;PRE style="COLOR: #000000"&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;1&lt;/SPAN&gt;    &lt;FONT color=#0000ff&gt;Dim&lt;/FONT&gt; chk1 &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;New&lt;/FONT&gt; ArrayList
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;2&lt;/SPAN&gt;    &lt;FONT color=#0000ff&gt;Dim&lt;/FONT&gt; chk2 &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;New&lt;/FONT&gt; ArrayList
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;3&lt;/SPAN&gt;&lt;FONT color=#0069cc&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;4&lt;/SPAN&gt;#Region &lt;FONT color=#004884&gt;" OptionsTabPage.Leave Event Handler "&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN id=region1 style="DISPLAY: inline"&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;5&lt;/SPAN&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;6&lt;/SPAN&gt;    &lt;FONT color=#0000ff&gt;Private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Sub&lt;/FONT&gt; OptionsTabPage_Leave(&lt;FONT color=#0000ff&gt;ByVal&lt;/FONT&gt; sender &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Object&lt;/FONT&gt;, &lt;FONT color=#0000ff&gt;ByVal&lt;/FONT&gt; e &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; System.EventArgs) &lt;BR&gt;		&lt;FONT color=#0000ff&gt;Handles&lt;/FONT&gt; OptionsTabPage.Leave
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;7&lt;/SPAN&gt;        chk1.Clear()
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;8&lt;/SPAN&gt;        chk2.Clear()
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;9&lt;/SPAN&gt;        &lt;FONT color=#0000ff&gt;Dim&lt;/FONT&gt; tmpChk1 &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; CheckedListBox.CheckedIndexCollection = BlogList.CheckedIndices
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;10&lt;/SPAN&gt;        &lt;FONT color=#0000ff&gt;For&lt;/FONT&gt; y &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Integer&lt;/FONT&gt; = 0 &lt;FONT color=#0000ff&gt;To&lt;/FONT&gt; tmpChk1.Count - 1
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;11&lt;/SPAN&gt;            chk1.Add(tmpChk1.Item(y))
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;12&lt;/SPAN&gt;        &lt;FONT color=#0000ff&gt;Next&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;13&lt;/SPAN&gt;        &lt;FONT color=#0000ff&gt;Dim&lt;/FONT&gt; tmpChk2 &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; CheckedListBox.CheckedIndexCollection = CategoryList.CheckedIndices
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;14&lt;/SPAN&gt;        &lt;FONT color=#0000ff&gt;For&lt;/FONT&gt; z &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Integer&lt;/FONT&gt; = 0 &lt;FONT color=#0000ff&gt;To&lt;/FONT&gt; tmpChk2.Count - 1
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;15&lt;/SPAN&gt;            chk2.Add(tmpChk2.Item(z))
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;16&lt;/SPAN&gt;        &lt;FONT color=#0000ff&gt;Next&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;17&lt;/SPAN&gt;    &lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Sub&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;18&lt;/SPAN&gt;&lt;FONT color=#0069cc&gt;#End Region&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;19&lt;/SPAN&gt;&lt;FONT color=#0069cc&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;20&lt;/SPAN&gt;#Region &lt;FONT color=#004884&gt;" Tab Control Page Changed Event "&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN id=region2 style="DISPLAY: inline"&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;21&lt;/SPAN&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;22&lt;/SPAN&gt;    &lt;FONT color=#0000ff&gt;Private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Sub&lt;/FONT&gt; ViewTabControl_SelectedIndexChanged(&lt;FONT color=#0000ff&gt;ByVal&lt;/FONT&gt; sender &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; System.&lt;FONT color=#0000ff&gt;Object&lt;/FONT&gt;, &lt;FONT color=#0000ff&gt;ByVal&lt;/FONT&gt; e &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; System.EventArgs) &lt;BR&gt;		&lt;FONT color=#0000ff&gt;Handles&lt;/FONT&gt; ViewTabControl.SelectedIndexChanged
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;23&lt;/SPAN&gt;        &lt;FONT color=#0000ff&gt;Dim&lt;/FONT&gt; currentPage &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; TabControl = &lt;FONT color=#0000ff&gt;CType&lt;/FONT&gt;(sender, TabControl)
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;24&lt;/SPAN&gt;        &lt;FONT color=#0000ff&gt;Select&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Case&lt;/FONT&gt; currentPage.SelectedTab.Name
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;25&lt;/SPAN&gt;            &lt;FONT color=#0000ff&gt;Case&lt;/FONT&gt; &lt;FONT color=#004884&gt;"OptionsTabPage"&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;26&lt;/SPAN&gt;                &lt;FONT color=#0000ff&gt;Try&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;27&lt;/SPAN&gt;                    &lt;FONT color=#0000ff&gt;For&lt;/FONT&gt; y &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Integer&lt;/FONT&gt; = 0 &lt;FONT color=#0000ff&gt;To&lt;/FONT&gt; chk1.Count - 1
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;28&lt;/SPAN&gt;                        BlogList.SetItemChecked(chk1(y).ToString, &lt;FONT color=#0000ff&gt;True&lt;/FONT&gt;)
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;29&lt;/SPAN&gt;                    &lt;FONT color=#0000ff&gt;Next&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;30&lt;/SPAN&gt;                &lt;FONT color=#0000ff&gt;Catch&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;31&lt;/SPAN&gt;                &lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Try&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;32&lt;/SPAN&gt;                &lt;FONT color=#0000ff&gt;Try&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;33&lt;/SPAN&gt;                    &lt;FONT color=#0000ff&gt;For&lt;/FONT&gt; z &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Integer&lt;/FONT&gt; = 0 &lt;FONT color=#0000ff&gt;To&lt;/FONT&gt; chk2.Count - 1
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;34&lt;/SPAN&gt;                        CategoryList.SetItemChecked(chk2(z).ToString, &lt;FONT color=#0000ff&gt;True&lt;/FONT&gt;)
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;35&lt;/SPAN&gt;                    &lt;FONT color=#0000ff&gt;Next&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;36&lt;/SPAN&gt;                &lt;FONT color=#0000ff&gt;Catch&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;37&lt;/SPAN&gt;                &lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Try&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;38&lt;/SPAN&gt;        &lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Select&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;39&lt;/SPAN&gt;    &lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Sub&lt;/FONT&gt;
&lt;BR&gt;&lt;SPAN style="BORDER-RIGHT: #999999 1px solid; WIDTH: 40px; COLOR: #008284; MARGIN-RIGHT: 10px; BACKGROUND-COLOR: #e5e5e5; TEXT-ALIGN: right"&gt;40&lt;/SPAN&gt;&lt;FONT color=#0069cc&gt;#End Region&lt;/FONT&gt;&lt;/PRE&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;At 
any rate, this port is a test of the "PostToCategories" functionality. Now that 
I'm saving the state properly, and using the "CheckedIndices" property instead 
of "SelectedIndices" property, it should work. I'll know in about 8 
seconds.&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=96353" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rmclaws/archive/tags/.NET+Framework+1.1/default.aspx">.NET Framework 1.1</category><category domain="http://weblogs.asp.net/rmclaws/archive/tags/.Text/default.aspx">.Text</category></item><item><title>Are YOU In Design Mode?</title><link>http://weblogs.asp.net/rmclaws/archive/2003/10/08/31128.aspx</link><pubDate>Wed, 08 Oct 2003 19:51:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:31128</guid><dc:creator>interscape</dc:creator><author>interscape</author><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/rmclaws/rsscomments.aspx?PostID=31128</wfw:commentRss><comments>http://weblogs.asp.net/rmclaws/archive/2003/10/08/31128.aspx#comments</comments><description>&lt;A href="http://www.hanselman.com/blog/default.aspx"&gt;Scott Hansleman&lt;/A&gt; &lt;A href="http://www.hanselman.com/blog/PermaLink.aspx?guid=9ff4c3b2-70ec-4b0f-95ed-5bd83b6c9a55"&gt;talks about page instantiation&lt;/A&gt; while designing ASPX pages in the IDE [via &lt;A href="http://www.lennybacon.com/default.aspx"&gt;Daniel Fisher&lt;/A&gt;]. Good stuff.&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=31128" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rmclaws/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/rmclaws/archive/tags/VS.NET+2003/default.aspx">VS.NET 2003</category><category domain="http://weblogs.asp.net/rmclaws/archive/tags/.NET+Framework+1.1/default.aspx">.NET Framework 1.1</category></item><item><title>XmlTextWriter + StringWriter = Headache</title><link>http://weblogs.asp.net/rmclaws/archive/2003/07/31/22080.aspx</link><pubDate>Thu, 31 Jul 2003 15:17:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:22080</guid><dc:creator>interscape</dc:creator><author>interscape</author><slash:comments>22</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/rmclaws/rsscomments.aspx?PostID=22080</wfw:commentRss><comments>http://weblogs.asp.net/rmclaws/archive/2003/07/31/22080.aspx#comments</comments><description>&lt;p&gt;I've come to the conclusion that .NET doesn't really make coding easier (yet), because most Framework classes are incomplete, and use Inheritance as an excuse to leave them that way. Case in point: XmlTextWriter.&lt;/p&gt;
&lt;p&gt;I'm changing GenX.NET's XML formatter to use the XmlTextWriter instead of building XML manually. It's a bit cleaner this way, and I can use formatting to overcome this really weird issue I've been having with the StringBuilder.ToString method putting in breaks every 1024 characters. More on that later. Anyways, so the XmlTextWriter constructor takes an instance of the StringWriter class, which is where the problems begin. The XmlTextWriter's constructor looks like this:&lt;/p&gt;
&lt;p&gt;Sub New(StringBuilder)&lt;br /&gt;Sub New(Filename, Encoding)&lt;br /&gt;Sub New(System.IO.TextWriter)&lt;/p&gt;
&lt;p&gt;The lameness begins. So you can't set the encoding of the XML document if you pass in the StringBuilder. Sucks to be me. So I whip open the Object Browser, navigate to the XmlTextWriter, and I get the following pearl of wisdom:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Public Sub New(ByVal w As System.IO.TextWriter)&lt;br /&gt;Member of: System.Xml.XmlTextWriter&lt;/p&gt;
&lt;p&gt;Summary:&lt;br /&gt;Creates an instance of the XmlTextWriter class using the specified System.IO.TextWriter . &lt;/p&gt;
&lt;p&gt;Parameters:&lt;br /&gt;w: The TextWriter to write to. It is assumed that the TextWriter is already set to the correct encoding.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Well, this would be a fabulous assumption to make, save for one thing... &lt;strong&gt;&lt;em&gt;The TextWriter's encoding property is READ ONLY&lt;/em&gt;&lt;/strong&gt;. La-de-frickin-da. Time to add bloat to my codebase again.&lt;/p&gt;
&lt;p&gt;So I do a GoogleSearch on “&lt;a href="http://www.google.com/search?hl=en&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8&amp;amp;q=xmltextwriter+stringbuilder+encoding"&gt;XmlTextWriter StringBuilder Encoding&lt;/a&gt;”, and I get &lt;a href="http://weblogs.asp.net/rosherove/posts/8685.aspx"&gt;Roy Osherove&lt;/a&gt; talking about the subject. The dude knows XML &amp;amp; .NET, so I'm thinking “Great”.... but no dice. The examples in the comments don't work. The 2nd sample freaks out IE because the IE XSLT parser can't hack it if there are spaces at the end of the file. For some reason, converting a MemoryStream's buffer to a string kicks out extra data at the end. This is very bad. 45 minutes wasted.&lt;/p&gt;
&lt;p&gt;The 1st example does not exactly work, because it doesn't allow for a StringBuilder to be passed in. This one is simple enough to correct, I just hate adding unnecessary code to my object model. The solution looks like this:&lt;/p&gt;
&lt;p&gt;StringWriterWithEncoding Class:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;Imports&lt;/font&gt; System.IO&lt;br /&gt;&lt;font color="#0000ff"&gt;Imports&lt;/font&gt; System.Text&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;Friend Class&lt;/font&gt; StringWriterWithEncoding&lt;br /&gt;&lt;font color="#0000ff"&gt;    Inherits&lt;/font&gt; StringWriter &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;Private&lt;/font&gt; m_encoding &lt;font color="#0000ff"&gt;As&lt;/font&gt; Encoding &lt;/font&gt;
&lt;p&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;Public&lt;/font&gt; &lt;font color="#0000ff"&gt;Sub&lt;/font&gt; &lt;font color="#0000ff"&gt;New&lt;/font&gt;(&lt;font color="#0000ff"&gt;ByVal&lt;/font&gt; sb &lt;font color="#0000ff"&gt;As&lt;/font&gt; StringBuilder, &lt;font color="#0000ff"&gt;ByVal&lt;/font&gt; encoding &lt;font color="#0000ff"&gt;As&lt;/font&gt; Encoding)&lt;br /&gt;&lt;font color="#0000ff"&gt;    MyBase&lt;/font&gt;.New(sb)&lt;br /&gt;    m_encoding = encoding&lt;br /&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;Sub &lt;/font&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;Public&lt;/font&gt; &lt;font color="#0000ff"&gt;Overrides&lt;/font&gt; &lt;font color="#0000ff"&gt;ReadOnly&lt;/font&gt; &lt;font color="#0000ff"&gt;Property&lt;/font&gt; Encoding() &lt;font color="#0000ff"&gt;As&lt;/font&gt; Encoding&lt;br /&gt;    &lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;Get&lt;br /&gt;        &lt;/font&gt;&lt;font color="#0000ff"&gt;Return&lt;/font&gt; m_encoding&lt;br /&gt;    &lt;font color="#0000ff"&gt;End&lt;/font&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;Get&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;Property &lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;End Class&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;XML Parser Class: 
&lt;blockquote&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Protected&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Friend&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Overridable&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Function&lt;/font&gt;&lt;font size="2"&gt; DataReader(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByRef&lt;/font&gt;&lt;font size="2"&gt; FromDataReader &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; SheetBuilder.FromDataReader) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Implements&lt;/font&gt;&lt;font size="2"&gt; IFormatProvider.DataReader 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;    Dim&lt;/font&gt;&lt;font size="2"&gt; i &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;    Dim&lt;/font&gt;&lt;font size="2"&gt; sb &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; StringBuilder&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;    &lt;strong&gt;Dim&lt;/strong&gt;&lt;/font&gt;&lt;strong&gt;&lt;font size="2"&gt; writer &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; XmlTextWriter(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;&lt;strong&gt; StringWriterWithEncoding(sb, Encoding.UTF8))&lt;/strong&gt; 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;    writer.Formatting = Formatting.Indented&lt;br /&gt;    writer.WriteStartDocument() 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;    writer.WriteStartElement(“document“))&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;    writer.WriteElementString(dr.GetName(i), HtmlEncode(dr.GetValue(i).ToString))&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;    writer.WriteEndElement()&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;    writer.Flush()&lt;br /&gt;    writer.Close()&lt;br /&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;    Return&lt;/font&gt;&lt;font size="2"&gt; sb.ToString&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Function&lt;/font&gt;&lt;/blockquote&gt;
&lt;p&gt;There you have it. Now you can add whatever encoding you want, and the StringWriter will compensate accordingly. Notice also that the XmlTextWriter DOES NOT compensate for things like Ampersands (&amp;amp;) and so forth. I decided I'd take the burden off of the end user, and sacrifice a little performace by HtmlEncoding the output, rather than risk a document breaking and having to deal with a support issue.&lt;/p&gt;
&lt;p&gt;Hopefully, MS will fix that stupid ReadOnly property and make it a two-way street, like they did with the &lt;a href="http://weblogs.asp.net/rmclaws/posts/10493.aspx"&gt;SelectedValue property in the DropDownList&lt;/a&gt;. For now I'll have to use mine. &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=22080" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rmclaws/archive/tags/.NET+Framework+1.1/default.aspx">.NET Framework 1.1</category><category domain="http://weblogs.asp.net/rmclaws/archive/tags/GenX.NET/default.aspx">GenX.NET</category></item><item><title>"No-Brainer Compatibility" Explained</title><link>http://weblogs.asp.net/rmclaws/archive/2003/07/29/21631.aspx</link><pubDate>Tue, 29 Jul 2003 07:43:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:21631</guid><dc:creator>interscape</dc:creator><author>interscape</author><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/rmclaws/rsscomments.aspx?PostID=21631</wfw:commentRss><comments>http://weblogs.asp.net/rmclaws/archive/2003/07/29/21631.aspx#comments</comments><description>&lt;P&gt;For several weeks now, I've been talking about various issues in regards to component versioning and Framework compatibility. A few months ago, I got so frustrated by the issues that were raised, that I said I was going to start a task force to solve the problem. This task force was informal and basically consisted of Paul Alexander (XHEO)&amp;nbsp;and I (Interscape Technologies). Over the past 6 months, I have really enjoyed working with Paul, and I am constantly amazed at the work he achieves. Together, we've been able to make some headway in the industry as a whole, and we have several extremely exciting things coming up in the future.&lt;/P&gt;
&lt;P&gt;The results of this work were detailed informally in my weblog, but will be published through Builder.com officially over the next 6 weeks. By the end of the week, I will have a single, final document available on my company website. For now, thought, I want to focus on the images I posted this morning, and the role they should play with your marketing.&lt;/P&gt;
&lt;P&gt;This overall system that I've come up with, I'm dubbing the &amp;#8220;No-Brainer Compatibility Initiative&amp;#8221;. This is not meant to be derrogatory by any means. It really should be a no-brainer to the people that use the reusable code that we distribute/sell regarding how it works, and which version to use it to. All too often, developers assume that the end user/other developers that will&amp;nbsp;be using thair code are just&amp;nbsp;as smart as they are. All too often, this is not the case. Most .NET developers are either coding newbies or coding converts. Many come from the Java realm, and just as many come from ScriptKiddieLand. Most, myself included, wouldn't know good programming methods if they came up and bit them in the ass. I'm still learning about design patterns and so forth.&lt;/P&gt;
&lt;P&gt;So the point is to make it blatantly obvious to anyone with an IQ above 20 which version goes with which Framework. It's not that hard. The first step is to &lt;A href="http://weblogs.asp.net/rmclaws/posts/10613.aspx"&gt;use the Framework Compatibility Graphics (FCGs)&lt;/A&gt; I blogged about this morning. Roy Osherove asked me, &amp;#8220;Where do I put these graphics... in my installer or some kind of splash screen?&amp;#8221; My answer: &amp;#8220;Yeah those, but first and foremost, on every product-related page of your website, your documentation, and any product related support website page.&amp;#8221; You want to build as much awareness as humanly possible. You also want to put the graphic in an &lt;?xml:namespace prefix = asp /&gt;&lt;asp:hyperlink&gt;and make the link to go a page with the large version of the graphic, and explain in more detail exactly what it means. Paul and I may be coming up with standard text in the very near future, to help you guys out of you're having trouble.&lt;/P&gt;
&lt;P&gt;The next parts of this initiative stem my previous posts &lt;A href="http://weblogs.asp.net/rmclaws/posts/7663.aspx"&gt;here&lt;/A&gt;, &lt;A href="http://weblogs.asp.net/rmclaws/posts/10083.aspx"&gt;here&lt;/A&gt;, and &lt;A href="http://weblogs.asp.net/rmclaws/posts/8615.aspx"&gt;here&lt;/A&gt;, and are addressed in greated detail in my Builder.com column next month. Paul has already taken these steps with XHEO|Licensing 2.0, as shown in the following screenshot:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://images.interscapeusa.com/blog/XheoReferences.JPG"&gt;&lt;/P&gt;
&lt;P&gt;Is there any question from that dialog which version you should use in VS.NET 2003? &lt;SHRUGS&gt;I sure hope not. As a user of XHEO's products, there sure isn't for me.&lt;/SHRUGS&gt;&lt;/P&gt;
&lt;P&gt;Now, this is not necessarily the best way to do it. It is, however, &lt;EM&gt;&lt;STRONG&gt;the best anyone has come up with so far&lt;/STRONG&gt;&lt;/EM&gt;. Try it, experiment with it, and make it better. When you do, please be sure to let me know. This is why I talk about this stuff instead of keeping it to myself.&lt;/P&gt;&lt;/asp:hyperlink&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=21631" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rmclaws/archive/tags/.NET+Framework+1.1/default.aspx">.NET Framework 1.1</category><category domain="http://weblogs.asp.net/rmclaws/archive/tags/GenX.NET/default.aspx">GenX.NET</category><category domain="http://weblogs.asp.net/rmclaws/archive/tags/Versioning+and+Compatibility/default.aspx">Versioning and Compatibility</category></item><item><title>MORE VS.NET 2003 Info</title><link>http://weblogs.asp.net/rmclaws/archive/2003/04/10/5348.aspx</link><pubDate>Thu, 10 Apr 2003 23:30:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5348</guid><dc:creator>interscape</dc:creator><author>interscape</author><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/rmclaws/rsscomments.aspx?PostID=5348</wfw:commentRss><comments>http://weblogs.asp.net/rmclaws/archive/2003/04/10/5348.aspx#comments</comments><description>&lt;P&gt;&lt;A href="http://dotnetweblogs.com/RMcLaws/posts/5344.aspx"&gt;In my previous post&lt;/A&gt;, I talked a lot about the new Framework 1.1 and VS.NET 2003, and how they deal with the old stuff. After reading the first comments of my last post, I realized it might take more explaining than I thought. This may be a hard thing to swallow, so clear your mind, and be ready to take the red pill:&lt;/P&gt;
&lt;P&gt;Are you ready?&lt;/P&gt;
&lt;P&gt;&lt;FONT color=red&gt;&lt;STRONG&gt;=============================&lt;BR&gt;VS.NET 2003 IS NOT AN UPGRADE.&lt;BR&gt;=============================&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Ah! Don't start talking yet. I'm not finished. Keep that mind clear ;). Now for the details.&lt;/P&gt;
&lt;P&gt;VS.NET 2003 &lt;STRONG&gt;will not&lt;/STRONG&gt; compile to 1.0. Ever. Nothing you could do will ever change it. Now, what you &lt;STRONG&gt;can&lt;/STRONG&gt; do is set up a configuration file that makes the assembly attempt to run on 1.0, but it will still be compiled to 1.1.&lt;/P&gt;
&lt;P&gt;Think of VS.NET and the Framework like conjoined twins. It's very difficult to separate the two (actually impossible). Each version of VS.NET is tied to it's corresponding version of the Framework, and they cannot be separated. VS.NET 2002 &lt;STRONG&gt;will not&lt;/STRONG&gt; compile to 1.1, even if you've installed the 1.1 Framework redistributable. &lt;/P&gt;
&lt;P&gt;If you want to still use VS.NET 2002, &lt;STRONG&gt;do not under any circumstances&lt;/STRONG&gt; uninstall Framework 1.0. I cannot emphasize this enough. This &lt;EM&gt;&lt;STRONG&gt;will&lt;/STRONG&gt; &lt;/EM&gt;hose your system.&lt;/P&gt;
&lt;P&gt;Who better than &lt;A href="http://www.3leaf.com/default/articles/ea/SBS.aspx"&gt;Early and Adopter to reinforce this notion&lt;/A&gt;. Read on, cutting edge developers, read on.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5348" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rmclaws/archive/tags/VS.NET+2003/default.aspx">VS.NET 2003</category><category domain="http://weblogs.asp.net/rmclaws/archive/tags/.NET+Framework+1.1/default.aspx">.NET Framework 1.1</category></item><item><title>More VS.NET 2003/ Framework 1.1 Info</title><link>http://weblogs.asp.net/rmclaws/archive/2003/04/10/5344.aspx</link><pubDate>Thu, 10 Apr 2003 22:28:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5344</guid><dc:creator>interscape</dc:creator><author>interscape</author><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/rmclaws/rsscomments.aspx?PostID=5344</wfw:commentRss><comments>http://weblogs.asp.net/rmclaws/archive/2003/04/10/5344.aspx#comments</comments><description>&lt;P&gt;I've seen post all over the net about people nervous about installing VS.NET 2003. Having worked with it for several months now,  let me allay your fears.&lt;/P&gt;
&lt;P&gt;First off, put it out of your head that this is an upgrade. Upgrade infers replacing the current software. As with the framework itself, VS.NET 2003 is installed next to VS.NET 2002, which can also be installed next to VS7, VS6 et al. The two will cohabitate in perfect harmony (they sleep in the same bed, but VS.NET 2002 stays on top of the sheets, while 2003 like lay under the covers) with nary an argument between them.&lt;/P&gt;
&lt;P&gt;Further, there should be no reason why the rest of you don't install the &lt;A href="http://www.microsoft.com/netframework"&gt;.NET Framework 1.1&lt;/A&gt; immediately. It will not hose your system, and lots of people (including myself) will be distributing 1.1-compiled apps in the very near future. Just so that you know, I have it on extremely good authority that the ASP.NET Forums are compiled to 1.1.&lt;/P&gt;
&lt;P&gt;Here's where you should be afraid. ASP.NET Component Developers: Welcome to Assembly Hell. Assembly Hell is the replacement for DLL Hell, the ol' COM buddy of ours. Assembly Hell occurs because the lack of an Application Assembly Cache when dealing with version dependancies. When dealing with an app that references 2 different third-party assemblies that in turn individually reference two different versions of the same assembly (ie a licensing component), the older version may overwrite the new version, cause a dependency error. The depths of this hell increase further because we are now going to be required to carry multiple versions of the same product for the forseeable future. Arrgh.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5344" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rmclaws/archive/tags/VS.NET+2003/default.aspx">VS.NET 2003</category><category domain="http://weblogs.asp.net/rmclaws/archive/tags/.NET+Framework+1.1/default.aspx">.NET Framework 1.1</category></item><item><title>Something to note about .NET 1.1</title><link>http://weblogs.asp.net/rmclaws/archive/2003/04/10/5330.aspx</link><pubDate>Thu, 10 Apr 2003 18:53:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5330</guid><dc:creator>interscape</dc:creator><author>interscape</author><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/rmclaws/rsscomments.aspx?PostID=5330</wfw:commentRss><comments>http://weblogs.asp.net/rmclaws/archive/2003/04/10/5330.aspx#comments</comments><description>&lt;P&gt;Just to let you guys know, the build numbers haven't changed between the Framework 1.1 Final Beta and the Release. (v1.1.4322). I'm going to assume that this means that &lt;A href="http://dotnetweblogs.com/pwilson/posts/5314.aspx"&gt;Paul Wilson's bug&lt;/A&gt; goes unfixed in the final release, but I'll let &lt;A href="http://www.dotnetweblogs.com/rhoward"&gt;Rob Howard&lt;/A&gt; or &lt;A href="http://dotnetweblogs.com/ScottGu/"&gt;Scott Guthrie&lt;/A&gt; answer that for me.&lt;/P&gt;
&lt;P&gt;As for me, the final bits are on their way now. Having worked with VS.NET 2003 since the final beta came out, it will be nice to have the real deal out. I won't touch VS.NET 2002 now unless I have to. People who haven't adopted .NET yet now have no reason not to... it's not a first-generation product anymore. &lt;/P&gt;
&lt;P&gt;The world has moved on. Come join us ;).&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5330" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rmclaws/archive/tags/VS.NET+2003/default.aspx">VS.NET 2003</category><category domain="http://weblogs.asp.net/rmclaws/archive/tags/.NET+Framework+1.1/default.aspx">.NET Framework 1.1</category></item></channel></rss>