oxzy's Modz uk Ответов: 1

Как встроить файлы и exe в DLL файл


привет члены codeproject

есть ли в любом случае вызов файлов в dll и таких, как сторонний exe-файл.

я в основном хочу, чтобы он хранил все мои файлы в отдельном месте и мог вызывать файл непосредственно из библиотеки dll.
возможно ли это?

Что я уже пробовал:

я перепробовал много сайтов, но вижу тот вариант, который ищу.

1 Ответов

Рейтинг:
1

OriginalGriff

Да, это возможно:

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;
    }

Например, если в сборке есть папка "ресурсы", содержащий папку "текстовые файлы", содержащие внедренный текстовый файл ресурсов "RevisionHistory.txt":
GetResourceFile(@"D:\Testing\MyAssembly.dll", "MyAssembly.Resources.TextFiles", "RevisionHistory.txt");


W∴ Balboos, GHB

Ух ты, где ты всему этому научился?

OriginalGriff

Я встраиваю а "ToDo.txt" и "RevisionHistory.txt" файл в каждой из моих сборок, чтобы я мог ссылаться на файл истории в форме "о программе" и обновлять ToDo извне VS.
Это позволяет мне включать "подистории" для сборок компонентов.

oxzy's Modz uk

есть ли шанс увидеть открытый исходный код, чтобы я мог увидеть, как он работает ?

OriginalGriff

:смеяться:
У вас есть открытый исходный код! Все это есть в тексте решения. Все остальное - это код .NET framework, который вы можете просмотреть через справочные источники.

oxzy's Modz uk

проблема , с которой я сталкиваюсь, заключается в том, где его разместить: внутри основного класса exe или внутри библиотеки dll.

OriginalGriff

Где бы это ни было, вы хотите прочитать информацию из другой сборки.
Получение его из одной и той же сборки тривиально и не требует никакого "реального" кода:

строка allTheText = свойства.Ресурсы.RevisionHistory;