<feed 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="http://www.w3.org/2005/Atom" xml:lang="en-US">
    <title>Dave Savage</title>
    <link rel="self" type="application/xml" href="http://itwebmonkey.com/blog/Atom.aspx" />
    <subtitle type="html">Egads, what sorcerery is this?!</subtitle>
    <id>http://itwebmonkey.com/blog/Default.aspx</id>
    <author>
        <name>Dave Savage</name>
        <uri>http://itwebmonkey.com/blog/Default.aspx</uri>
    </author>
    <generator uri="http://subtextproject.com" version="Subtext Version 1.9.5.176">Subtext</generator>
    <updated>2008-08-19T16:52:17Z</updated>
    <entry>
        <title>Firefox Server Switcher - Test your apps faster</title>
        <link rel="self" type="text/html" href="http://itwebmonkey.com/blog/archive/2008/08/19/firefox-server-switcher---test-your-apps-faster.aspx" />
        <id>http://itwebmonkey.com/blog/archive/2008/08/19/firefox-server-switcher---test-your-apps-faster.aspx</id>
        <published>2008-08-19T16:48:18-04:00:00</published>
        <updated>2008-08-19T16:52:17Z</updated>
        <content type="html">This is a great little add-on for Firefox  I discovered the other day.  I really wish this was more publicized.  I can't remember how many countless times I have to type, re-type, and re-re-type a URL when testing a app through a release management cycle.  &lt;br /&gt;
&lt;br /&gt;
While the utility does not give you the ability to toggle n-environments (which would be a great little added bonus), it does give you a nice, 1-click, way to switch from localhost to your dev server or vice versa&lt;br /&gt;
&lt;br /&gt;
Simply go into &lt;span style="font-weight: bold;"&gt;Tools&lt;/span&gt; -&amp;gt; &lt;span style="font-weight: bold;"&gt;Add-Ons&lt;/span&gt; and download &lt;span style="font-weight: bold;"&gt;Server Switcher&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
After installing you can setup your projects through the add-on configuration wizard.  &lt;br /&gt;
Pretty neat.&lt;br /&gt;
&lt;br /&gt;
Wish IE had something like this *wink wink nudge nudge* &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fitwebmonkey.com%2fblog%2farchive%2f2008%2f08%2f19%2ffirefox-server-switcher---test-your-apps-faster.aspx"&gt;&lt;img border="0" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fitwebmonkey.com%2fblog%2farchive%2f2008%2f08%2f19%2ffirefox-server-switcher---test-your-apps-faster.aspx" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://itwebmonkey.com/blog/aggbug/27.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://itwebmonkey.com/blog/comments/27.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://itwebmonkey.com/blog/comments/commentRss/27.aspx</wfw:commentRss>
        <trackback:ping>http://itwebmonkey.com/blog/services/trackbacks/27.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Outlook Read Receipts Are The Devil!</title>
        <link rel="self" type="text/html" href="http://itwebmonkey.com/blog/archive/2008/08/11/outlook-read-receipts-are-the-devil.aspx" />
        <id>http://itwebmonkey.com/blog/archive/2008/08/11/outlook-read-receipts-are-the-devil.aspx</id>
        <published>2008-08-11T10:54:01-04:00:00</published>
        <updated>2008-08-11T10:56:45Z</updated>
        <content type="html">&lt;h3&gt;Rant:&lt;/h3&gt;
I will start by saying that I love Outlook and this entry is not a bash on Outlook.  What I have to say concerns the overuse of the "read receipt" feature and how it drives me crazy.  Every time i receive one of them I ask myself "did they really need to use a read receipt on that"?  &lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Overuse or Miss-Use?&lt;/h3&gt;
&lt;span style="font-weight: bold;"&gt;The problem, to me, isn't that the feature exists; it's that users don't know when to stop using it! &lt;/span&gt; There are people who use it on every single email they send out.  How do they even know I read the email?  Maybe I just clicked it.  Maybe I just skimmed through it and did not read the whole thing.  I would not hesitate to skim or skip if someone sent me yet another installment of &lt;a target="_blank" href="http://longestbook.wordpress.com/2008/06/30/longest-book-in-the-world-fact-4/"&gt;The Blah Story&lt;/a&gt;.  &lt;br /&gt;
&lt;br /&gt;
Let's all do the world a favor and stop using them.&lt;br /&gt;
=)
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fitwebmonkey.com%2fblog%2farchive%2f2008%2f08%2f11%2foutlook-read-receipts-are-the-devil.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fitwebmonkey.com%2fblog%2farchive%2f2008%2f08%2f11%2foutlook-read-receipts-are-the-devil.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://itwebmonkey.com/blog/aggbug/26.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://itwebmonkey.com/blog/comments/26.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://itwebmonkey.com/blog/comments/commentRss/26.aspx</wfw:commentRss>
        <trackback:ping>http://itwebmonkey.com/blog/services/trackbacks/26.aspx</trackback:ping>
    </entry>
    <entry>
        <title>SubSonic - Build a dynamic schema page</title>
        <link rel="self" type="text/html" href="http://itwebmonkey.com/blog/archive/2008/07/18/subsonic---build-a-dynamic-schema-page.aspx" />
        <id>http://itwebmonkey.com/blog/archive/2008/07/18/subsonic---build-a-dynamic-schema-page.aspx</id>
        <published>2008-07-18T16:58:37-04:00:00</published>
        <updated>2008-07-18T17:01:06Z</updated>
        <content type="html">One of things I cannot get over is the sheer power and capability that the SubSonic project brings to any application you include it in.  Today I got the chance to put even more of it's capability into practice within my one of my new web applications.&lt;br /&gt;
&lt;br /&gt;
The Scenario: I need to build a dynamic page that lists my database tables and/or views and spits them out on the page.  &lt;br /&gt;
&lt;br /&gt;
The Solution:&lt;br /&gt;
Using a little bit of reflection with SubSonic, we can actually accomplish this very easily.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;1. Start with the following line of code:&lt;/span&gt;&lt;br /&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-weight: bold; color: rgb(128, 0, 0);"&gt;Dim t As New SubSonic.TableSchema.Table(SubSonic.DataService.Providers("MyDataProviderName"))&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
Replace the &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;MyDataProviderName&lt;/span&gt;&lt;/span&gt; string with the name you provided in the web.config for your database provide.  This can be found here:&lt;br /&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&amp;lt;SubSonicService defaultProvider="&lt;span style="font-weight: bold;"&gt;MyDataProviderName&lt;/span&gt;"&amp;gt;&lt;/span&gt;&lt;br style="color: rgb(0, 0, 128);" /&gt;
&lt;span style="color: rgb(0, 0, 128);"&gt;        &amp;lt;providers&amp;gt;&lt;/span&gt;&lt;br style="color: rgb(0, 0, 128);" /&gt;
&lt;span style="color: rgb(0, 0, 128);"&gt;            &amp;lt;clear/&amp;gt;&lt;/span&gt;&lt;br style="color: rgb(0, 0, 128);" /&gt;
&lt;span style="color: rgb(0, 0, 128);"&gt;            &amp;lt;add name="&lt;span style="font-weight: bold;"&gt;MyDataProviderName&lt;/span&gt;" type="SubSonic.SqlDataProvider, SubSonic" &lt;/span&gt;....&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;2. Place the code line from step one into the following loop:&lt;/span&gt;&lt;br /&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;For Each fi As FieldInfo In GetType(&lt;span style="font-weight: bold;"&gt;MyDataClassLibrary&lt;/span&gt;.&lt;span style="font-weight: bold;"&gt;MyNamespace&lt;/span&gt;.Tables).GetFields&lt;/span&gt;&lt;br style="color: rgb(153, 51, 0);" /&gt;
&lt;span style="color: rgb(153, 51, 0);"&gt;            Select Case fi.Name.ToLower&lt;/span&gt;&lt;br style="color: rgb(153, 51, 0);" /&gt;
&lt;span style="color: rgb(153, 51, 0);"&gt;                Case "x", "tostring"&lt;/span&gt;&lt;br style="color: rgb(153, 51, 0);" /&gt;
&lt;span style="color: rgb(153, 51, 0);"&gt;                    '--- This is used to escape unwanted table names or values.&lt;/span&gt;&lt;br style="color: rgb(153, 51, 0);" /&gt;
&lt;span style="color: rgb(153, 51, 0);"&gt;                Case Else&lt;/span&gt;&lt;br style="color: rgb(153, 51, 0);" /&gt;
&lt;span style="color: rgb(153, 51, 0);"&gt;                    Dim tNode As New TreeNode(fi.Name)&lt;/span&gt;&lt;br style="color: rgb(153, 51, 0);" /&gt;
&lt;span style="color: rgb(153, 51, 0);"&gt;                    &lt;span style="font-weight: bold;"&gt;Dim t As New SubSonic.TableSchema.Table(SubSonic.DataService.Providers("&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;MyDataProviderName&lt;/span&gt;&lt;span style="color: rgb(153, 51, 0); font-weight: bold;"&gt;"))&lt;/span&gt;&lt;br style="color: rgb(153, 51, 0);" /&gt;
&lt;span style="color: rgb(153, 51, 0);"&gt;                    AddColumnNodes(tNode, &lt;span style="font-weight: bold;"&gt;fi.GetValue(t)&lt;/span&gt;)&lt;/span&gt;&lt;br style="color: rgb(153, 51, 0);" /&gt;
&lt;span style="color: rgb(153, 51, 0);"&gt;                    dNode.Nodes.Add(tNode)&lt;/span&gt;&lt;br style="color: rgb(153, 51, 0);" /&gt;
&lt;span style="color: rgb(153, 51, 0);"&gt;            End Select&lt;/span&gt;&lt;br style="color: rgb(153, 51, 0);" /&gt;
&lt;span style="color: rgb(153, 51, 0);"&gt;     Next&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
In the above code, I am actually building a tree view with the data.  The important lines of code are the ones in bold, which highlight how you get around SubSonic's "remapping" of the database names.&lt;br /&gt;
&lt;br /&gt;
Take a look in your &lt;span style="font-weight: bold;"&gt;Tables&lt;/span&gt; namespace and you will notice the following:&lt;br /&gt;
&lt;div style="margin-left: 40px; color: rgb(128, 0, 0);"&gt;Public Partial Structure Tables&lt;br /&gt;
        Dim x As Integer&lt;br /&gt;
        &lt;br /&gt;
        Public Shared  &lt;span style="font-weight: bold;"&gt;MyTableOne &lt;/span&gt;As String = &lt;span style="font-weight: bold;"&gt;"my_table_one"&lt;/span&gt;&lt;br /&gt;
        &lt;br /&gt;
        Public Shared  MyTableTwo As String = "my_table_two"&lt;br /&gt;
        &lt;br /&gt;
        Public Shared  MyTableThree As String = "my_table_three"&lt;br /&gt;
        &lt;br /&gt;
       ...&lt;br /&gt;
        &lt;br /&gt;
End Structure&lt;/div&gt;
&lt;br /&gt;
This means we need an object to exctract the field value from, which is where the following line of code comes from:&lt;br /&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;AddColumnNodes(tNode, &lt;span style="font-weight: bold;"&gt;fi.GetValue(t)&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;3. Now we just need a function to add column nodes to the table node.&lt;/span&gt;&lt;br /&gt;
Considder the following code:&lt;br /&gt;
&lt;div style="margin-left: 40px; color: rgb(128, 0, 0);"&gt;Private Sub LoadTableNode(ByRef rootNode As TreeNode, ByVal TableName As String)&lt;br /&gt;
        Dim q As New SubSonic.Query(TableName)&lt;br /&gt;
        For Each c As SubSonic.TableSchema.TableColumn In q.Schema.Columns&lt;br /&gt;
            Dim strNodeName As String = c.ColumnName&lt;br /&gt;
            strNodeName &amp;amp;= " " &amp;amp; c.DataType.ToString&lt;br /&gt;
            strNodeName &amp;amp;= "(" &amp;amp; c.MaxLength &amp;amp; ")"&lt;br /&gt;
            Dim cNode As New TreeNode(strNodeName)&lt;br /&gt;
            rootNode.Nodes.Add(cNode)&lt;br /&gt;
        Next&lt;br /&gt;
End Sub&lt;/div&gt;
&lt;br /&gt;
I am sure there are better ways to get at this information but this should give you the idea.
&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fitwebmonkey.com%2fblog%2farchive%2f2008%2f07%2f18%2fsubsonic---build-a-dynamic-schema-page.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fitwebmonkey.com%2fblog%2farchive%2f2008%2f07%2f18%2fsubsonic---build-a-dynamic-schema-page.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://itwebmonkey.com/blog/aggbug/25.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://itwebmonkey.com/blog/comments/25.aspx</wfw:comment>
        <slash:comments>3</slash:comments>
        <wfw:commentRss>http://itwebmonkey.com/blog/comments/commentRss/25.aspx</wfw:commentRss>
        <trackback:ping>http://itwebmonkey.com/blog/services/trackbacks/25.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Re: MySQL versus SQL Server</title>
        <link rel="self" type="text/html" href="http://itwebmonkey.com/blog/archive/2008/07/14/re-mysql-versus-sql-server.aspx" />
        <id>http://itwebmonkey.com/blog/archive/2008/07/14/re-mysql-versus-sql-server.aspx</id>
        <published>2008-07-14T11:40:12-04:00:00</published>
        <updated>2008-07-14T11:42:08Z</updated>
        <content type="html">One of my favorite tasks on a Monday morning is to cruise a couple blogs and get me in a good mindset for the week.  I couldn't help but read the article on the &lt;a target="_blank" href="http://blogs.msdn.com/fasttrackreview/archive/2008/07/10/mysql-versus-sql-server.aspx?CommentPosted=true#commentmessage"&gt;ISV blog&lt;/a&gt; about MySQL and SQLServer.  The point of the article is that MSSQL Express has come a long way from where SQLServer used to be, which includes some of the reasons why people &lt;span style="font-weight: bold;"&gt;could&lt;/span&gt; switch from using MySQL to MSSQL.  &lt;br /&gt;
&lt;br /&gt;
As I read the article, I could not help but think that if Microsoft wants developers to use SQL Express for deployable solutions, they must be sorely out of touch.  My original interpretation of SQL Express is that it was for developing applications for SQL Server without requiring a dedicated SQL Server machine or the licensing hassles.&lt;br /&gt;
&lt;br /&gt;
Why compare that to MySQL?  It's not even fair.  &lt;span style="font-weight: bold;"&gt;The 4GB space restriction is the single reason why MySQL still makes a better solution to building one-off web sites or non-commercial web applications&lt;/span&gt;.  &lt;br /&gt;
&lt;br /&gt;
The reality is that applications today demand a scalable data solution.  The amount of data we are handling in our applications is growing rapidly every year.  &lt;span style="font-weight: bold;"&gt;As we gain more capability, we gain more demand&lt;/span&gt;.  Space is becoming one of the biggest demands; this is why companies have been rolling out larger and larger storage devices.&lt;br /&gt;
&lt;br /&gt;
How could I roll-out a solution to manage High Definition media data with SQL Express?&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Why don't they use the IIS model?&lt;/span&gt;&lt;br /&gt;
If you are not familiar, IIS takes this approach?  In Windows XP you are limited to 1 web site, which means only one domain can be hosted at a time.  &lt;br /&gt;
&lt;br /&gt;
SQL Express should take the same approach by limiting you to one database, one or two user accounts, and not limiting you to 4GB of space.  Then I would have a reason to switch from MySQL. &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fitwebmonkey.com%2fblog%2farchive%2f2008%2f07%2f14%2fre-mysql-versus-sql-server.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fitwebmonkey.com%2fblog%2farchive%2f2008%2f07%2f14%2fre-mysql-versus-sql-server.aspx" /&gt;&lt;/a&gt;&lt;img src="http://itwebmonkey.com/blog/aggbug/24.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://itwebmonkey.com/blog/comments/24.aspx</wfw:comment>
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://itwebmonkey.com/blog/comments/commentRss/24.aspx</wfw:commentRss>
        <trackback:ping>http://itwebmonkey.com/blog/services/trackbacks/24.aspx</trackback:ping>
    </entry>
    <entry>
        <title>SubSonic &amp; Oracle - Play Nice!</title>
        <link rel="self" type="text/html" href="http://itwebmonkey.com/blog/archive/2008/04/30/subsonic--oracle---play-nice.aspx" />
        <id>http://itwebmonkey.com/blog/archive/2008/04/30/subsonic--oracle---play-nice.aspx</id>
        <published>2008-04-30T11:21:59-04:00:00</published>
        <updated>2008-04-30T11:27:04Z</updated>
        <content type="html">I've recently been working with SubSonic and Oracle.  One of the troubles I am dealing with is that by default, SubSonic requires your user to own the schema in order to generate classes for this.  This is because when it generates code it uses the USER_* objects to generate them.&lt;br /&gt;
&lt;br /&gt;
This is a good practice but what happens when you don't own the schema? &lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;What if...&lt;br /&gt;
&lt;/h3&gt;
Let's say you have been tasked out with allowing your application to query an HR database for user-specific information.  Your company, like most companies, is very restrictive on who has access to that HR data.  So, the DBA's create a view for you with just the information you need as well as an account to use when accessing it.&lt;br /&gt;
&lt;br /&gt;
Now, this presents an issue because the account you have been given does not own the schema.  This puts you in a bind because you will find that when you try to generate objects with SubSonic, nothing will get generated.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Let's get this working right....&lt;/h3&gt;
The quick fix to this is to open up and modify SubSonic.  &lt;br /&gt;
&lt;ol&gt;
    &lt;li&gt;Open the solution.&lt;/li&gt;
    &lt;li&gt;In main &lt;span style="font-weight: bold;"&gt;SubSonic &lt;/span&gt;class, under the &lt;span style="font-weight: bold;"&gt;DataProviders &lt;/span&gt;folder, open the &lt;span style="font-weight: bold;"&gt;OracleDataProvider.cs&lt;/span&gt; file.&lt;/li&gt;
    &lt;li&gt;Scroll down to about line &lt;span style="font-weight: bold;"&gt;486&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;Update the "Schema Bits" region to the following&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="margin-left: 40px; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;
&lt;div&gt;&lt;font size="2"&gt;#region Schema Bits&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;         private const string MANY_TO_MANY_LIST = "SELECT b.table_name FROM all_constraints a, all_cons_columns b " +&lt;/div&gt;
&lt;div&gt;                                                   "WHERE a.table_name = :tableName " + &lt;/div&gt;
&lt;div&gt;                                                   "AND a.constraint_type = 'R' " + &lt;/div&gt;
&lt;div&gt;                                                   "AND a.r_constraint_name = b.constraint_name " +&lt;/div&gt;
&lt;div&gt;                                                   "AND b.table_name like '%' + :mapSuffix";&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;         const string TABLE_COLUMN_SQL = "SELECT user, a.table_name, a.column_name, a.column_id, a.data_default, " +&lt;/div&gt;
&lt;div&gt;                                         "       a.nullable, a.data_type, a.char_length, a.data_precision, a.data_scale " +&lt;/div&gt;
&lt;div&gt;                                         "  FROM all_tab_columns a " +&lt;/div&gt;
&lt;div&gt;                                         " WHERE a.table_name = :tableName";&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;         const string SP_PARAM_SQL = @"SELECT a.object_name, a.object_type, b.position, b.in_out, &lt;/div&gt;
&lt;div&gt;                                     b.argument_name, b.data_type, b.char_length, b.data_precision, b.data_scale &lt;/div&gt;
&lt;div&gt;                                     FROM all_objects a, all_arguments b &lt;/div&gt;
&lt;div&gt;                                     WHERE a.object_type IN ('PROCEDURE', 'FUNCTION', 'PACKAGE') &lt;/div&gt;
&lt;div&gt;                                     AND a.object_id = b.object_id &lt;/div&gt;
&lt;div&gt;                                     AND a.object_name = :objectName";&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;         const string SP_SQL = @"SELECT a.object_name, a.object_type, a.created, a.last_ddl_time &lt;/div&gt;
&lt;div&gt;     `                           FROM all_objects a &lt;/div&gt;
&lt;div&gt;                                 WHERE a.object_type IN ('PROCEDURE', 'FUNCTION', 'PACKAGE') ";&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;         const string TABLE_SQL = "SELECT a.table_name AS Name FROM all_tables a";&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;         const string VIEW_SQL = "SELECT a.view_name AS Name FROM all_views a";&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;         const string INDEX_SQL =    "SELECT b.table_name, b.column_name, " +&lt;/div&gt;
&lt;div&gt;                                     "       DECODE (a.constraint_type, " +&lt;/div&gt;
&lt;div&gt;                                     "               'R', 'FOREIGN KEY', " +&lt;/div&gt;
&lt;div&gt;                                     "               'P', 'PRIMARY KEY', " +&lt;/div&gt;
&lt;div&gt;                                     "               'UNKNOWN' " +&lt;/div&gt;
&lt;div&gt;                                     "              ) constraint_type " +&lt;/div&gt;
&lt;div&gt;                                     "  FROM all_constraints a, all_cons_columns b " +&lt;/div&gt;
&lt;div&gt;                                     " WHERE a.constraint_name = b.constraint_name " +&lt;/div&gt;
&lt;div&gt;                                     "   AND a.constraint_type IN ('R', 'P') " +&lt;/div&gt;
&lt;div&gt;                                     "   AND b.table_name = :tableName ";&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;         const string GET_TABLE_SQL =    "SELECT b.table_name " +&lt;/div&gt;
&lt;div&gt;                                         "  FROM all_constraints a, all_cons_columns b " +&lt;/div&gt;
&lt;div&gt;                                         " WHERE a.constraint_name = b.constraint_name " +&lt;/div&gt;
&lt;div&gt;                                         "   AND a.constraint_type IN ('R', 'P') " +&lt;/div&gt;
&lt;div&gt;                                         "   AND b.column_name = :columnName " +&lt;/div&gt;
&lt;div&gt;                                         "   AND a.constraint_type = 'P' ";&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;         const string GET_FOREIGN_KEY_SQL =  "SELECT d.table_name " +&lt;/div&gt;
&lt;div&gt;                                             "  FROM all_cons_columns c, all_cons_columns d, all_constraints e " +&lt;/div&gt;
&lt;div&gt;                                             " WHERE d.constraint_name = e.r_constraint_name " +&lt;/div&gt;
&lt;div&gt;                                             "   AND c.constraint_name = e.constraint_name " +&lt;/div&gt;
&lt;div&gt;                                             "   AND d.column_name = :columnName " +&lt;/div&gt;
&lt;div&gt;                                             "   AND e.table_name = :tableName ";&lt;/div&gt;
&lt;div&gt;         &lt;/div&gt;
&lt;div&gt;         const string GET_PRIMARY_KEY_SQL =  "SELECT e.table_name AS TableName, c.column_name AS ColumnName " +&lt;/div&gt;
&lt;div&gt;                                             "  FROM all_cons_columns c, all_cons_columns d, all_constraints e " +&lt;/div&gt;
&lt;div&gt;                                             " WHERE d.constraint_name = e.r_constraint_name " +&lt;/div&gt;
&lt;div&gt;                                             "   AND c.constraint_name = e.constraint_name " +&lt;/div&gt;
&lt;div&gt;                                             "   AND d.table_name = :tableName ";&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;         #endregion&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt; &lt;/h3&gt;
&lt;h3&gt;So, what's the deal...&lt;/h3&gt;
All we needed to change was the "From" sections to indicate that we want to query &lt;span style="font-weight: bold;"&gt;ALL&lt;/span&gt; objects and not just the &lt;span style="font-weight: bold;"&gt;USER &lt;/span&gt;objects.  You may need to work with your DBA's in order to get this additional level of access however, it will allow you get around the issues with schema ownership in oracle.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Oh, by the way...&lt;/h3&gt;
You will also want to make sure you use the &lt;span style="font-weight: bold;"&gt;IncludeTableList &lt;/span&gt;or &lt;span style="font-weight: bold;"&gt;ExcludeTableList&lt;/span&gt; options within your config to narrow down your objects.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt; &lt;/h3&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fitwebmonkey.com%2fblog%2farchive%2f2008%2f04%2f30%2fsubsonic--oracle---play-nice.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fitwebmonkey.com%2fblog%2farchive%2f2008%2f04%2f30%2fsubsonic--oracle---play-nice.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://itwebmonkey.com/blog/aggbug/23.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://itwebmonkey.com/blog/comments/23.aspx</wfw:comment>
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://itwebmonkey.com/blog/comments/commentRss/23.aspx</wfw:commentRss>
        <trackback:ping>http://itwebmonkey.com/blog/services/trackbacks/23.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Schrödinger's cat</title>
        <link rel="self" type="text/html" href="http://itwebmonkey.com/blog/archive/2008/03/16/schrodingers-cat.aspx" />
        <id>http://itwebmonkey.com/blog/archive/2008/03/16/schrodingers-cat.aspx</id>
        <published>2008-03-16T00:23:45-04:00:00</published>
        <updated>2008-03-16T00:27:40Z</updated>
        <content type="html">&lt;p dir="ltr"&gt;As taken from &lt;strong&gt;The Pragmatic Programmer (Hunt &amp;amp; Thomas)&lt;/strong&gt;:&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;Suppose you have a cat in a closed box, along with a radioactive particle.  The particle has exactly 50% chance of fissioning into two.  If it does, the cat will die.  If it doesn't the cat will be okay.  So, is the cat dead or alive?  &lt;br /&gt;
&lt;span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;/span&gt;According to &lt;font face="Arial"&gt;Schrödinger&lt;/font&gt;, the correct answer is &lt;em&gt;both.&lt;/em&gt;  Every time a sub-nuclear reaction takes place that has two possible outcomes, the universe is cloned.  In one, the even occurred, in the other it didn't.  The cat's alive in one, and dead in another.  Only when you open the box do you know which universe&lt;em&gt; you&lt;/em&gt; are in.  &lt;br /&gt;
&lt;span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;Think of code evolution along the same lines as a box full of &lt;font face="Arial"&gt;Schrödinger's &lt;/font&gt;cats: every decision results in a different version of the future.  How many possible futures can your code support?  Which ones are more likely?  How hard will it be to support them when the time comes?&lt;br /&gt;
&lt;span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;/span&gt;Dare you open the box?&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;img src="http://itwebmonkey.com/blog/aggbug/22.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://itwebmonkey.com/blog/comments/22.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://itwebmonkey.com/blog/comments/commentRss/22.aspx</wfw:commentRss>
        <trackback:ping>http://itwebmonkey.com/blog/services/trackbacks/22.aspx</trackback:ping>
    </entry>
    <entry>
        <title>System.Web.Security.MemoryLeakProvider</title>
        <link rel="self" type="text/html" href="http://itwebmonkey.com/blog/archive/2007/12/11/system.web.security.memoryleakprovider.aspx" />
        <id>http://itwebmonkey.com/blog/archive/2007/12/11/system.web.security.memoryleakprovider.aspx</id>
        <published>2007-12-11T16:28:44-05:00:00</published>
        <updated>2007-12-11T16:30:20Z</updated>
        <content type="html">&lt;span style="font-weight: bold;"&gt;System.Web.Security.MemoryLeakProvider&lt;br /&gt;
&lt;/span&gt;Have you enabled yours yet?  I have and boy what a waste of time this bugger was.  &lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Symptoms:&lt;br /&gt;
&lt;/span&gt;Enabling the ASP.NET membership provider via web.config...&lt;br /&gt;
&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;&amp;lt;roleManager enabled="true"...&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;resulted in some very bad behavior in memory.  On my default page (like many pages), I had some code that simply checked that the user was logged in and if they had a couple "&lt;span style="font-style: italic;"&gt;flags&lt;/span&gt;" set in their profile.  However, when the application went through QA we saw memory spiking through the roof.&lt;br /&gt;
&lt;br /&gt;
I immediately thought - open data readers or connection objects.  I was wrong, especially when I stumbled onto this article:&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt; &lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/07/WebAppFollies/" target="_blank"&gt;http://msdn.microsoft.com/msdnmag/issues/06/07/WebAppFollies/&lt;/a&gt;.&lt;br /&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-style: italic; font-weight: bold;" class="clsSubhead"&gt;
&lt;h3&gt;Uncached Roles&lt;/h3&gt;
&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;/div&gt;
&lt;p style="font-style: italic; margin-left: 40px;"&gt;The following statement is frequently found in the web.config files of ASP.NET 2.0 applications and in samples introducing the ASP.NET 2.0 role manager: &lt;/p&gt;
&lt;pre style="font-style: italic; margin-left: 40px;" class="clsCode"&gt;&lt;span style="font-weight: bold;"&gt;&amp;lt;roleManager enabled="true" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-style: italic;"&gt; As presented, however, this statement can have a demonstrably negative impact on performance. Do you know why?&lt;/span&gt;&lt;/div&gt;
&lt;p style="font-style: italic; margin-left: 40px;"&gt;By default, the ASP.NET 2.0 role manager doesn’t cache roles data. Instead, it consults the roles data store each time it needs to determine which roles, if any, a user belongs to. This means that once a user is authenticated, any page that utilizes role data—for example, pages that use site maps with security trimming enabled, and pages to which access is restricted using role-based URL directives in web.config—causes the role manager to query the roles data store. If roles are stored in a database, that’s one more database access per request that you can easily do without. The solution is to configure the role manager to cache roles data in cookies: &lt;/p&gt;
&lt;pre style="font-style: italic; margin-left: 40px;" class="clsCode"&gt;&lt;span style="font-weight: bold;"&gt;&amp;lt;roleManager enabled="true" cacheRolesInCookie="true" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-style: italic;"&gt;You can use other &amp;lt;roleManager&amp;gt; attributes to control the characteristics of role cookies—for example, how long the cookies should remain valid (and consequently how frequently the role manager will go back to the roles database). Role cookies are signed and encrypted by default, so the security risk, while not zero, is mitigated.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fitwebmonkey.com%2fblog%2farchive%2f2007%2f12%2f11%2fsystem.web.security.memoryleakprovider.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fitwebmonkey.com%2fblog%2farchive%2f2007%2f12%2f11%2fsystem.web.security.memoryleakprovider.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://itwebmonkey.com/blog/aggbug/19.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://itwebmonkey.com/blog/comments/19.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://itwebmonkey.com/blog/comments/commentRss/19.aspx</wfw:commentRss>
        <trackback:ping>http://itwebmonkey.com/blog/services/trackbacks/19.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Are programmers at a greater risk of cancer?</title>
        <link rel="self" type="text/html" href="http://itwebmonkey.com/blog/archive/2007/12/06/are-programmers-at-a-greater-risk-of-cancer.aspx" />
        <id>http://itwebmonkey.com/blog/archive/2007/12/06/are-programmers-at-a-greater-risk-of-cancer.aspx</id>
        <published>2007-12-06T08:53:28-05:00:00</published>
        <updated>2007-12-06T08:53:28Z</updated>
        <content type="html">Have you ever just sat there and thought "gee Dave, I've been looking at a computer screen for 12 hours straight.  Why do my eyes hurt?"&lt;br /&gt;
&lt;br /&gt;
So, the thought occurred to me this morning that perhaps programmers, or just anyone who uses the computer for hours on end every day, is causing a great deal of stress on their eyes.  I'm not a doctor but from everything you hear with other types cancer, stressful external influences on the body tend to have negative long term effects.&lt;br /&gt;
&lt;br /&gt;
Does this mean that using the computer all day every day raises your risk of developing a cancer variant of the eye;  such as &lt;a target="_blank" href="http://www.webmd.com/cancer/tc/ncicdr0000258015-general-information-about-intraocular-eye-melanoma"&gt;Intraocular Melanoma&lt;/a&gt;.  &lt;br /&gt;
&lt;br /&gt;&lt;img src="http://itwebmonkey.com/blog/aggbug/18.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://itwebmonkey.com/blog/comments/18.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://itwebmonkey.com/blog/comments/commentRss/18.aspx</wfw:commentRss>
        <trackback:ping>http://itwebmonkey.com/blog/services/trackbacks/18.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Software Development - It's like ice cream, only better</title>
        <link rel="self" type="text/html" href="http://itwebmonkey.com/blog/archive/2007/11/26/software-development---its-like-ice-cream-only-better.aspx" />
        <id>http://itwebmonkey.com/blog/archive/2007/11/26/software-development---its-like-ice-cream-only-better.aspx</id>
        <published>2007-11-26T09:18:40-05:00:00</published>
        <updated>2007-11-26T09:25:14Z</updated>
        <content type="html">Yes, this is &lt;a href="http://en.wikipedia.org/wiki/Web_monkey" target="_blank"&gt;yet&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Software_developer" target="_blank"&gt;another&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Software_engineering" target="_blank"&gt;software development&lt;/a&gt; analogy.  Sue me.&lt;br /&gt;
&lt;br /&gt;
So, software development is like ice cream.  Ice cream has many flavors, chocolate happens to be one of my particular favorites.  I'm also not the only one either, many people like chocolate ice cream.   In fact, a LOT of people like chocolate ice cream.  But there are those &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;other&lt;/span&gt;&lt;/span&gt; people who don't.  Those who seek to destroy the chocolate ice cream-loving people and replace chocolate with...vanilla.  Or perhaps mint chocolate chip, cookies and cream, butter pecan, or maybe even cookie dough.  You could probably categorize everyone based on their favorite flavor of ice cream.  Sure, not everyone likes just &lt;span style="font-weight: bold;"&gt;one&lt;/span&gt; flavor however; most people can get down to one or two flavors they really like.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;The analogy.&lt;/span&gt;&lt;br /&gt;
Take a second and think about your day-to-day practice as a software developer.  You probably work with other developers at some level or at least make use of code from other developers on your projects.  You also know that, syntax aside, the code is always different.  Joe's code looks like Joe's code and no other developer in the world has code that is exactly like Joe's.&lt;br /&gt;
&lt;br /&gt;
Like ice cream, everyone develops code that has it's own flavor.  With these flavors, developers seem to pool towards their own unique style.  For example, vanilla ice cream might represent &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Test_driven_development"&gt;test driven development&lt;/a&gt;.  On the flip side, chocolate ice cream might represent bug driven development, TDD's evil half sister.  &lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Mixing it up.&lt;/span&gt;&lt;br /&gt;
We know that chocolate and vanilla are two of the base flavors used when creating other flavors.  For example, we might be doing TDD (vanilla) with a project written in .NET (chocolate chips) using &lt;a target="_blank" href="http://www.subsonicproject.com/default.aspx"&gt;SubSonic&lt;/a&gt; (mint).  I happen to be a big fan of Mint Chocolate Chip ice cream and I know that a lot of other people are as well.  Not everyone however; as some people like to just stick with Chocolate Chip TDD .NET development.&lt;br /&gt;
&lt;br /&gt;
Furthermore, we can relate this theory to software development teams.  A team of developers has pockets within it, no matter how big or small.  The lead developer (or architect) says &lt;span style="font-weight: bold;"&gt;"We will be eating Mint Chocolate Chip ice cream for this project."&lt;/span&gt;  A lot of the other team members quiver as they are not fans of the &lt;span style="font-weight: bold;"&gt;Mint Chocolate Chip&lt;/span&gt; development practice.  So, even though you are developing in Mint Chocolate Chip, some elements of butter pecan start to work their way in.  Then some chocolate ice cream starts to show up as well as maybe some orange dream.  &lt;br /&gt;
&lt;br /&gt;
Often, at the end of the day you end up with a medley of flavors that very few people like and very few people will even bother to try.  Sometimes it's brilliance, other times it's a complete disaster but your software product's flavor (it's appeal to the customer) is always a result of the team's taste.  &lt;br /&gt;
&lt;br /&gt;
I will leave it up to you to figure out the rest.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fwww.itwebmonkey.com%2fblog%2farchive%2f2007%2f11%2f26%2fsoftware-development---its-like-ice-cream-only-better.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.itwebmonkey.com%2fblog%2farchive%2f2007%2f11%2f26%2fsoftware-development---its-like-ice-cream-only-better.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://itwebmonkey.com/blog/aggbug/16.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://itwebmonkey.com/blog/comments/16.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://itwebmonkey.com/blog/comments/commentRss/16.aspx</wfw:commentRss>
        <trackback:ping>http://itwebmonkey.com/blog/services/trackbacks/16.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Visual Studio, References, and You</title>
        <link rel="self" type="text/html" href="http://itwebmonkey.com/blog/archive/2007/11/06/visual-studio-references-and-you.aspx" />
        <id>http://itwebmonkey.com/blog/archive/2007/11/06/visual-studio-references-and-you.aspx</id>
        <published>2007-11-06T21:54:50-05:00:00</published>
        <updated>2007-11-06T21:58:11Z</updated>
        <content type="html">One of the things that always dogged me for a while with Visual Studio (Both 2003 and 2005) was how references were handled.  Until recently it was one of those mysteries that no one ever really mentioned or spoke openly about.  Like a sore topic you never bring up, you really have to be looking for specific stuff to find the answers to the riddle.&lt;br /&gt;
&lt;br /&gt;
It dawns on you when you realize how simple it is.  The rest of this article is not about how it actually works rather, how to make your life easier when working with references.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;
&lt;h3&gt;An ASP.NET Scenario&lt;/h3&gt;
&lt;br /&gt;
&lt;/span&gt;In a typical asp.net application you may have one or more references to additional non-framework libraries (dll's).  That thought is simple enough however, the reality is not always that simple.  As you know, these references are resolved within a refresh file.  A typical refresh file has a path to the reference as in this example:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;span style="background-color: rgb(255, 255, 153);"&gt;C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025\AJAXExtensionsToolbox.dll&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Now, this is fine until you try and deploy this to a remote computer or a web server.  Furthermore, it becomes an even bigger headache when you talk about deploying the application from another computer other than your own; such as a build server.  Obviously on the build server, having all of the possible components installed is not always viable.  Nor is having them installed in the same places on all of your servers or computers.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;
&lt;h3&gt;Build and Deployment Management&lt;/h3&gt;
&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;At the onset of a new project, an idea of what the final state of your application's existence should be in mind.  Correcting the above issue early is key to eliminating the headaches.  What we do in applications is place any references used in the application into a folder that is brought down with any version.  That ensures that we can reference our dll's from a reliable location within our application each time we build it.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;
&lt;h3&gt;Managing The Refresh Files&lt;/h3&gt;
&lt;br /&gt;
&lt;/span&gt;The next aspect of controlling the references is to make sure that your references are pointed to your reference folder and not the installation path of your component.  You can adjust these either by using the Visual Studio GUI or by editing the refresh file manually.  In this case, your reference from the example above now becomes:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;span style="background-color: rgb(255, 255, 153);"&gt;..\..\..\lib\&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 153);"&gt;AJAXExtensionsToolbox&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 153);"&gt;.dll&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
It's not rocket science but it is a bit frustrating to deal with if you never have dealt with it before.  One of the common problems that comes up is that often times our tools have snap-ins for the Visual Studio toolbox.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;
&lt;h3&gt;Be Careful Of The Toolbox&lt;/h3&gt;
&lt;br /&gt;
&lt;/span&gt;When you drag and drop items from the toolbox in Visual Studio, it will automatically update the references in your application as well as the &lt;span style="font-weight: bold;"&gt;.refresh&lt;/span&gt; files which map to your references.  This means it will revert any work you have done to resolve conflicts on other computers.  &lt;br /&gt;
&lt;br /&gt;
There is no easy way around this.  You can trick the system by setting all of your &lt;span style="font-weight: bold;"&gt;.refresh&lt;/span&gt; files to &lt;span style="font-weight: bold;"&gt;read only&lt;/span&gt;.  In cases of applications under source control, this is often done for you, such as under Source Safe.  However, you will still be prompted to check out the .refresh files automatically and all cases I just tell it to cancel the operation.  It, of course, barks at you but it is a lot lesser than having it screw up all of your references.&lt;br /&gt;
&lt;br /&gt;
I hope that in future version of Visual Studio a better solution can be found.&lt;br /&gt;
But I won't hold my breath.
&lt;br /&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fitwebmonkey.com%2fblog%2farchive%2f2007%2f11%2f06%2fvisual-studio-references-and-you.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fitwebmonkey.com%2fblog%2farchive%2f2007%2f11%2f06%2fvisual-studio-references-and-you.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;
&lt;img src="http://itwebmonkey.com/blog/aggbug/15.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://itwebmonkey.com/blog/comments/15.aspx</wfw:comment>
        <slash:comments>8</slash:comments>
        <wfw:commentRss>http://itwebmonkey.com/blog/comments/commentRss/15.aspx</wfw:commentRss>
        <trackback:ping>http://itwebmonkey.com/blog/services/trackbacks/15.aspx</trackback:ping>
    </entry>
</feed>