ASP.NET requires that the active ResourceProvider is available and can serve resources at compile time. This means if you compile your application and the resource provider is not available or misconfigured your application is not going to compile correctly for localization.

I repeat this important point:

ASP.NET REQUIRES THE RESOURCE PROVIDER TO BE AVAILABLE AND WORKING AT COMPILE TIME

If you fail to ensure the provider is configured at compile time ASP.NET will not find Implicit resource keys and so will not generate the appropriate code into each page to retrieve the resource keys and localization will be effectively disabled.

To this effect it's vitally important that DbResourceProvider is properly configured before you use it.

Keep in mind that when ASP.NET 2.0 compiles your application depends on the compilation model you choose. If you use stock projects with Pre-Compilation the compilation occurs at pre-compile time when you generate your project or use ASPNET_COMPILER.EXE. If you use InPlace compilation or Web Application Projects, your application and resources are compiled at runtime when the page is first executed.

The provider must also be available at runtime for localization to work obviously.

If you require a less brittle runtime environment for your final deployed application you can export your resources to ResX files after localization is complete. This will result in standard ResX resources that rely only on local file availability.

Note that you can still edit resources in the Resource Database even when using ResX files assuming the resource provider is configured properly in the DbResourceProvider configuration section. The Administration form uses direct database access and bypasses the stock .NET Resource Provider so you can still edit resources. However, you will not be able to see the updated resources reflected in your application unless you again switch providers.