我有一个需要获取dll文件路径的函数来运行它们。 为了更轻松地使用我的应用程序,我不想让用户输入dll文件的路径。我已经将dll文件添加为ressource但是我的方法需要将.dll文件的路径作为字符串。如何获取名为" test2.dll"的我的dll文件的字符串? 我发现的只是在程序本身中使用.dll文件中的函数,但没有加载包含.dll的路径。
答案 0 :(得分:0)
string assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
你可以试试这个
Assembly.GetExecutingAssembly().Location
将为您提供执行程序集的补丁:
System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
答案 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
}