C#: Embedded files

I have been racking my brain to solve this problem. I have two C# application.

1: CSharpUtilityBelt (Class Library built into a DLL)
2: ConsoleApplication1 (Built into an EXE)

In the class library I have added a XML file and set it to embedded resource. Then in ConsoleApplication1 I referenced CSharpUtilityBelt. I have been looking for ways to get to the embedded resource, here is what I found.

"Do you want the data in the file or the filename? I use the following to
access the contents of an embedded file:

Stream stream =
Assembly.GetExecutingAssembly().GetManifestResourc eStream(name);

Note that the name needs to include the default namespace for the[/color][/color]
project.[color=blue][color=green]
e.g. If the default namespace was My.Namespace and the file with its[/color][/color]
build[color=blue][color=green]
action set to "Embedded Resource" was called TextFile1.txt then you'd[/color][/color]
need[color=blue][color=green]
to pass "My.Namespace.TextFile1.txt" to GetManifestResourceStream().

You can check what the name to use for a built assembly by loading the
assembly into ildasm.exe, opening the manifest, and looking for the[/color]
relevant[color=green]
.mresource entry.

 e.g.


 .mresource public My.Namespace.TextFile1.txt
{
}"

Here is my code in ConsoleApplication1:

System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(ConsoleApplication1.TestXMLFile.xml);

I tried the namespace ConsoleApplication1.TestXMLFile.xml and CSharpUtilityBelt.TestXMLFile.xml. Eitehr way I get the error "The type or namespace name 'TestXMLFile' does not exist in the namespace 'ConsoleApplication1' (are you missing an assembly reference?)". I do not know what to do next.
LVL 3
Mister_SpockAsked:
Who is Participating?
 
joriszwaenepoelConnect With a Mentor Commented:
You should move the code

System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("CSharpUtilityBelt.TestXMLFile.xml");

to a function inside the dll.  
Then GetExecutingAssembly should return the DLL assembly (since that one is executing at that moment).
Note that the name of the manifest resource is case sensitive.
0
 
joriszwaenepoelCommented:
Since the XML file is embedded in de dll, I think you need to get it from within the dll as well.
You say you do it from your ConsoleApplication1, so GetExecutingAssembly will return the assembly for the Console Application and not the dll-assembly.

Can you try to move that code to a function in the dll, and then call that function from the Console application?
0
 
Mister_SpockAuthor Commented:
How do I get the DLL Assembly though, I've tried both namespaces with no luck.
0
 
Mister_SpockAuthor Commented:
500 points is not enough....thank you very much.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.