---
title: "Microsoft solves my RTM Bug (By Design..)"
url: "https://osherove.com/blog/2005/11/10/microsoft-solves-my-rtm-bug-by-design.md"
canonical: "https://osherove.com/blog/2005/11/10/microsoft-solves-my-rtm-bug-by-design.html"
published: "2005-11-10T17:09:00"
updated: "2005-11-10T17:09:00"
tags: [".Net 2.0"]
author: "Roy Osherove"
description: "Microsoft did a hell of a job following up on the obscure bug that I posted (I'm sure that the fact the post was published on eWeek , The Register and other places helped a bit in speeding things up..) . It involved…"
usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)."
license: "https://creativecommons.org/licenses/by/4.0/"
---

# Microsoft solves my RTM Bug (By Design..)

By Roy Osherove November 10, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0)

**Historical article** · Originally published November 10, 2005; technical details may be outdated.

Microsoft did a hell of a job following up on [the obscure bug that I posted](http://weblogs.asp.net/rosherove/archive/2005/11/04/429455.aspx) _(I'm sure that the fact the post was published on [eWeek](http://eweek.com/article2/0,1895,1882644,00.asp) , [The Register](http://theregister.co.uk/2005/11/09/microsoft_testers_criticism/) and [other places](http://minimsft.blogspot.com/2005/11/hey-shareholders-vs-2005-is-fantastic.html) helped a bit in speeding things up..)_. It involved lots of emails, my creating a mini-dump and FTPing it over, and sending the the full project code. But it worked.

**So what was it, Roy?**

It was a namespace thing. Before I give out the full answer I got, it's important to realize that even though this was something which is a "feature" rather than a bug (I screwed up namespace bindings for the compiler in my own code) it should not be this hard to understand what went wrong and how to fix this. Microsoft has promised that this specific issue and error ID will be address directly in a help topic online, which will be easily "findable" using the various search engines out there given the error description.

"Hi Roy, 

I took a look at your project and have found the problem. 

This code will repro the problem:

Namespace System.ComponentModel

End Namespace

Module Module1

    Sub Main()

        Dim x As System.Object

    End Sub

End Module

When you declare the namespace System.ComponentModel you are really defining the namespace Global.ConsoleApplication1.System.ComponentModel assuming your project’s rootnamespace is ConsoleApplication1.

Thus when the compiler try’s to bind to System.Object it will find and look inside of Global.ConsoleApplication1.System and it will now not find Object. Hence the error.

If you wants to bind to the real System.Object you will have to qualify with the Global keyword to get to the right System namespace:

            Dim x as Global.System.Object

However, are you sure that you want to be defining your own namespaces underneath the Rootnamespace that shadow .NET Framework namespaces?

**Perhaps your intention was to extend the .NET Framework namespaces. If that’s the case you need to set your Rootnamespace to blank in your project properties. This will also resolve your problem**."

I highlighted the last paragraph because that's exactly what I was trying to do.

This is also reproducible in C#. Like I said the main problem here was the discover-ability of the underlying problem and its solution. It shouldn't take a team of engineers (who actually built the thing) a couple of days to track down what the problem really is.

How do I know this is reproducible in C#? I asked. Here's the answer I got:

"Actually, the problem does exist in C#. This code will repro the problem:
namespace ConsoleApplication167

{

    namespace System

    {

    }

   class Program

    {

        static void Main(string\[\] args)

        {

            object x = new System.Object();           ß-- This line will give an error

        }

    }

}

            In VB a new class or module is implicity defined inside of the Root namespace. In C# they spit the explicit Namespace for the Root Namespace. Thus if the definition of Namespace System is placed outside of the explicit Namespace ConsoleApplication67 you are extending the “real”  system namespace. But (as in the example above) if it’s placed inside of the root namespace you end up with the same problem."

In the end, thanks to MS this was resolved. Good job hunting this down.

## More in .Net 2.0

[All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0)

- Nov 12, 2005

    ### [Test Driven .NET's new version supports all versions of VS 2005 including Express](https://osherove.com/blog/2005/11/12/test-driven-nets-new-version-supports-all-versions-of-vs-200.html)

- Nov 10, 2005

    ### [Cool Error Correction Dialog in VS 2005](https://osherove.com/blog/2005/11/10/cool-error-correction-dialog-in-vs-2005.html)

- Nov 9, 2005

    ### [I'll be speaking at IVCUG this month: New stuff in .NET and C# 2.0 + Deep LINQ Preview](https://osherove.com/blog/2005/11/9/ill-be-speaking-at-ivcug-this-month-new-stuff-in-net-and-c-2.html)

- Nov 9, 2005

    ### [A better BackgroundWorker : CancelImmediately and other goodies](https://osherove.com/blog/2005/11/9/a-better-backgroundworker-cancelimmediately-and-other-goodie.html)


---

## About the author

**Roy Osherove**: Senior Solutions Architect at AWS working on AI for production and AI-driven development; author of The Art of Unit Testing and Elastic Leadership, with about 20 years of consulting and training on unit testing, TDD, team leadership and continuous delivery.

### Sites

- [RobotPaper](https://robotpaper.ai/): This blog: AI patterns and anti-patterns, AI and coding agents, and engineering leadership.
- [osherove.com](https://osherove.com): Roy's personal site. Author of The Art of Unit Testing and Elastic Leadership; consulting and training on unit testing, TDD, team leadership and continuous delivery, plus about 20 years of blog posts.
- [The Art of Unit Testing](https://www.artofunittesting.com): The Art of Unit Testing, 3rd Edition (Manning): readable, maintainable, trustworthy unit tests, plus TDD workshops in C#, JavaScript, Java and Kotlin.
- [5whys.com](https://www.5whys.com): Roy's writing on software team leadership: self-organizing teams, surviving chaos, learning mode and the Elastic Leadership model.
- [Pipeline Driven](https://pipelinedriven.org): Continuous delivery and DevOps practices: build patterns, pipeline-friendly testing, DevOps metrics and enterprise DevOps.
- [Elastic Leadership](https://www.elasticleadership.com): Elastic Leadership, Roy's framework for software team leaders (survival, learning and self-organizing modes).

### Social

- X: https://x.com/royosherove
- LinkedIn: https://www.linkedin.com/in/osherove/

### Contact

- Contact form: https://forms.gle/jQSx5KoXvrVA1JCK7

### License

Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page). License: https://creativecommons.org/licenses/by/4.0/
