A System.Resources.MissingManifestResourceException exception occurs when you try to access a localized resource (839861)
The information in this article applies to:
- Microsoft ASP.NET (included with the .NET Framework 1.1)
- Microsoft ASP.NET (included with the .NET Framework) 1.0
SYMPTOMSIn a Microsoft ASP.NET application, when you try to access a
localized resource, a System.Resources.MissingManifestResourceException
exception may occur, and your Web browser may display an error message that is
similar to the following error message: Server Error in '/MyApp'
Application.
Could not find any resources appropriate for the
specified culture (or the neutral culture) in the given assembly. Make sure
"MyApp.strings.resources" was correctly embedded or
linked into assembly "MyApp". baseName:
MyApp.strings locationInfo: <null> resource
file name: MyApp.strings.resources assembly:
MyApp,
Version=VersionNumber, Culture=neutral,
PublicKeyToken=null
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information about
the error and where it originated in the code.
Exception Details: System.Resources.MissingManifestResourceException: Could not find
any resources appropriate for the specified culture (or the neutral culture) in
the given assembly. Make sure
"MyApp.strings.resources" was correctly embedded or
linked into assembly "MyApp". baseName:
MyApp.strings locationInfo: <null> resource
file name: MyApp.strings.resources assembly:
MyApp,
Version=VersionNumber, Culture=neutral,
PublicKeyToken=null Notes- In the error message,
MyApp is a placeholder for the name of your ASP.NET
application.
- In the earlier error information,
VersionNumber is a placeholder for the version
number of the primary assembly for your application.
CAUSEThis problem occurs if you use a localized resource that
exists in a satellite assembly that you created by using a .resources file that
has an inappropriate file name. This problem typically occurs if you manually
create a satellite assembly.
To manually create a satellite assembly,
you must first run the Resource File Generator (Resgen.exe), and then you must run the
Assembly Linker (Al.exe). When you run Resgen.exe, if you do not specify the
file name of the output file while you convert an XML-based resource format
(.resx) file to a .resources file, Resgen.exe creates a .resources file that
has the same file name as the input file. If the file name of your XML-based
resource format file does not start with the namespace name of your
application, the file name of the .resources file will not contain this
namespace name either. You may run Al.exe to create a satellite assembly that
contains the localized resources that exist in the .resources file. However,
when you try to access a localized resource that exists in the satellite
assembly, the behavior that is mentioned in the "Symptoms" section
occurs.WORKAROUNDTo work around this problem, specify the file name of the
.resources file when you run Resgen.exe. While you specify the file name of the
.resources file, make sure that the file name starts with the namespace name of
your application. For example, run the following command at the Microsoft
Visual Studio .NET command prompt to create a .resources file that has the
namespace name of your application at the beginning of the file
name: Resgen
strings.CultureIdentifier.resx
MyApp.strings.CultureIdentifier.resources Notes- In this example, CultureIdentifier is a placeholder for an identifier
(such as "ja") that you can use to specify the culture for your
resources.
- In the earlier command, MyApp is
a placeholder for the namespace name of your application.
STATUS This
behavior is by design.REFERENCESFor more information, visit the following Microsoft
Developer Network (MSDN) Web sites:
Modification Type: | Major | Last Reviewed: | 4/26/2004 |
---|
Keywords: | kbLocalization kbResource kbSample kberrmsg kbcode kbprb KB839861 kbAudDeveloper |
---|
|