Solved

MissingManifestResourceException when running Windows Service /  C# (VS 2003)

Posted on 2007-04-10
3
447 Views
Last Modified: 2013-12-17
I have a simple Windows Service written in C# and I would like to maintain error messages in a Resource File.

I added the resource file by Right-Clicking on the project name in the Solution Explorer and selecting Add New Item -> Assemly Resource File, and I gave it the name "MainResource".  The extension .resx was then added to the file name.

I then wrote a class called "ResourceHelper".

The entire code for ResourceHelper is as follows:
/************************************************************************************************/
using System;
using System.Resources;
using System.Reflection;

namespace crodia2batchprocess_ws.Resources
{
      /// <summary>
      /// Summary description for ResourceHelper.
      /// </summary>
      public class ResourceHelper
      {
            public ResourceHelper()
            {
                  //
                  // TODO: Add constructor logic here
                  //
            }

            public static string GetMessage(int MessageNumber)
            {
         
                  String message;
                  String strNumber;
                  String resourceCode;

                  strNumber = Convert.ToString(MessageNumber);
                  
                  //messages are defined in the resource file as "msgNNNN"
                  //msgNumber = "msg" + MessageNumber.ToString.
                  //48 = ASCII 0
                  //Example: message number 123 would be filed using resource code "msg0123"
                  resourceCode = "msg" + strNumber.PadLeft(4, (char)48);
                                                                                                        
                  Assembly asm = Assembly.GetExecutingAssembly();
   
                  //ResourceManager rm = new ResourceManager("MainResource.resx", asm);
                  ResourceManager rm = new ResourceManager("MainResource", asm);
           
                  message = (string) rm.GetObject(resourceCode);

                  return message;

            }

      }
}
/************************************************************************************************/

The project compiles without any errors.

An example of where I make a call to the above method from my Windows Service code is as follows:


public Crodia2BatchProcess()
      {
            // This call is required by the Windows.Forms Component Designer.
            InitializeComponent();

            // TODO: Add any initialization after the InitComponent call
            // Just check if the settings file exists. If so, the service will go to
            // OnStart and load the settings file.
            if (!File.Exists(GlobalValues.AppSettingsFileName))
            {      
      
                  EventLog.WriteEntry(ResourceHelper.GetMessage(1), EventLogEntryType.Information);

                  this.OnStop();                                    

            }      // !File.Exists
            // Else the service will go straight to OnStart
      }


I installed the service successful using InstallUtil <servicename.exe>

When I attempt to start the service, I deliberately make sure that my file defined under AppSettingsFileName does not exist in order to throw the exception trapped above which I would then like to access the message in the Resource file using the GetMessage method.

When I start the service, I get a Window telling me that a MissingManifestResourceException has occurred...


Any ides of where I'm going wrong?  

Many thanks.

0
Comment
Question by:ersldublin
  • 2
3 Comments
 
LVL 96

Expert Comment

by:Bob Learned
ID: 18883600
What is the 'Build Action' for the .resx file?

Bob
0
 

Author Comment

by:ersldublin
ID: 18888069
Embedded Resource
0
 
LVL 96

Accepted Solution

by:
Bob Learned earned 250 total points
ID: 18888328
Actually, the file names for the .resources files should be fully qualified with the LCID for the language you are working with:

ResourceManager class:
http://msdn2.microsoft.com/en-us/library/system.resources.resourcemanager.aspx

Examples:
MyResources.ja-JP.resources
MyResources.zh-CHS.resources
MyResources.fr-BE.resources

Bob
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

We have adopted the strategy to use Computers in Student Labs as the bulletin boards. The same target can be achieved by using a Login Notice feature in Group policy but it’s not as attractive as graphical wallpapers with message which grabs the att…
Sometimes people don't understand why download speed shows differently for Windows than Linux.Specially, this article covers and shows the solution for throughput difference for Windows than a Linux machine. For this, I arranged a test scenario.I…
THe viewer will learn how to use NetBeans IDE 8.0 for Windows to perform CRUD operations on a MySql database.
The viewer will learn how to use and create new code templates in NetBeans IDE 8.0 for Windows.

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now