Click here to Skip to main content
15,071,262 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
hi codeproject members

is there anyway calling the files in a dll and such as a third party exe.

i mainly want it so i can store all my files in a separate location and be able to call the file direct from the dll it self.
is this possible .

What I have tried:

i tried many sites but can see the option am looking for.
Posted
Updated 13-Feb-17 23:03pm

1 solution

Yes, it's possible:
C#
string GetResourceFile(string assemblyPath, string nameSpace, string fileName)
    {
    Assembly assembly = Assembly.LoadFrom(assemblyPath);
    string resourceName = nameSpace + "." + fileName;
    string resource = null;
    using (Stream stream = assembly.GetManifestResourceStream(resourceName))
        {
        using (StreamReader reader = new StreamReader(stream))
            {
            resource = reader.ReadToEnd();
            }
        }
    return resource;
    }

For example, if MyAssembly has a folder "Resources", containing a folder "TextFiles", containg an embedded resource text file "RevisionHistory.txt":
C#
GetResourceFile(@"D:\Testing\MyAssembly.dll", "MyAssembly.Resources.TextFiles", "RevisionHistory.txt");
   
Comments
W Balboos, GHB 14-Feb-17 7:18am
   
Wow - where did you learn all that stuff?
OriginalGriff 14-Feb-17 8:01am
   
I embed a "ToDo.txt" and "RevisionHistory.txt" file in each of my assemblies so I can refer to the history file in the "About" form, and update the ToDo from outside VS.
This allows me to include "sub histories" for component assemblies.
oxzy's Modz uk 14-Feb-17 10:24am
   
is there any chance seeing a open source so i can see how it works ?
OriginalGriff 14-Feb-17 10:33am
   
:laugh:
You've got the open source! It's all in text in the solution. All the other stuff is .NET framework code, which you can view via the Reference Sources.
oxzy's Modz uk 14-Feb-17 10:38am
   
the problem i am having is where to place it , inside the main exe class or inside the dll.
OriginalGriff 14-Feb-17 10:43am
   
Wherever it it that you want to read info from a different assembly.
Getting it from the same assembly is trivial, and doesn't need any "real" code:

string allTheText = Properties.Resources.RevisionHistory;

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900