As reported a while back. Please send in more feedback either here, or in the forums. The product team is listening!

ASP.NET recently announced several changes to the naming of the special directories recognized by the runtime. The renamed directories affected were:

  • /Bin becomes /Application_Assemblies
  • /Code becomes /Application_Code
  • /WebReferences becomes /Application_WebReferences
  • /Data becomes /Application_Data
  • /Browsers becomes /Application_Browsers
  • /Resources becomes /Application_GlobalResources
  • /LocalResources becomes /Application_LocalResources
  • /Themes becomes /Application_Themes

The goal of the renaming was to avoid conflicts with custom directories used by existing applications. Based on our customer research, we found that the previously used names Code, Data, Resources, Themes etc had a high chance of colliding with identically named directories in applications running on previous versions of ASP.NET that were upgrading to ASP.NET 2.0. These conflicts caused significant problems with seamless backward compatibility which is one of the most important goals of ASP.NET 2.0.

In addition, ASP.NET 2.0 introduces many more special directories then previous versions, therefore the added prefix also serves to distinguish special directories used by the framework from user directories, and group them when displaying them in project explorer inside Visual Web Developer 2005. Finally, the ASP.NET 2.0 filter that enforces security of the contents in special directories also uses the prefix to reduce the runtime overhead of checking for protected directories on every request to the server. This increases the security of the platform while adding defense in depth.

During the decision making process, we evaluated a number of other naming alternatives when deciding on this change. We have found that schemes with appended or prepended reserved characters, like “_” or “$”, were likely to break other Microsoft and third party products that access the directory structure due to special handling of these characters. As a result, these options are not acceptable from a continuity standpoint. The single framework directory root for special directories was also considered, but it was rejected due to usability concerns of displaying and navigating these directories in Visual Web Developer. The Bin directory was renamed to Application_Assemblies in order to be consistent with the special directory naming convention in the long term, and avoid confusion for new users in ASP.NET 2.0 and beyond. The runtime will continue supporting the /Bin directory to avoid breaking ASP.NET 1.0/1.1 applications. Starting with ASP.NET 2.0, all applications are encouraged to use the new Application_Assemblies directory for storing compiled application assemblies. Visual Web Developer Express and Visual Studio 2005 will automatically migrate older applications using the /bin directory to the Application_Assemblies syntax when they are opened.

We are in the process of evaluating user feedback to these changes and want to hear from you – what are your thoughts? What do you need to be successful? Let us know how you feel while we continue to consider the impact of these changes. Our #1 goal is to provide the most usable, secure and performant solutions possible and your input will be invaluable in helping us make sure we are doing the right thing.