将.dll资源加载为字符串

时间:2014-12-16 16:27:12

标签: c# dll

我有一个需要获取dll文件路径的函数来运行它们。 为了更轻松地使用我的应用程序,我不想让用户输入dll文件的路径。我已经将dll文件添加为ressource但是我的方法需要将.dll文件的路径作为字符串。如何获取名为" test2.dll"的我的dll文件的字符串? 我发现的只是在程序本身中使用.dll文件中的函数,但没有加载包含.dll的路径。

2 个答案:

答案 0 :(得分:0)

string assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

你可以试试这个

Assembly.GetExecutingAssembly().Location

将为您提供执行程序集的补丁:

System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)

here is more information

答案 1 :(得分:0)

如果我理解你,听起来你的DLL文件是项目中的嵌入式资源,你希望能够提取该DLL然后从该DLL加载资源。这是一个例子。

首先,您需要将DLL解压缩到字节数组:

byte[] buffer;
var assembly = Assembly.GetExecutingAssembly();
using (var stream = assembly.GetManifestResourceStream("SomeNamespace.somefile.dll"))
{
    buffer = new byte[stream.Length];
    stream.Read(buffer, 0, buffer.Length);
}

现在,您已将此DLL文件包含在buffer字节数组中。接下来,我们需要将字节数组写入某个文件:

string file = Path.GetTempPath() + "\\somefile.dll";
File.WriteAllBytes(file, buffer);

现在,最后,您可以读入DLL并提取所需的任何资源:

var assembly = Assembly.Load(file);
using (var stream = assembly.GetManifestResourceStream("SomeNamespace.someresourcefile.png"))
{
    // Read in stream and do something with the resource
}