将.dll加载为字符串
我有一个函数需要获取路径来运行它们的dll文件。 为了更方便地使用我的应用程序,我不想让用户键入dll文件的路径。 我已经将dll文件添加为资源,但是我的方法需要以字符串的形式获取.dll文件的路径。 如何获得我的dll文件的字符串称为“test2.dll”? 我发现的所有内容都是关于程序本身使用.dll文件中的函数,但并未加载包含.dll的路径。
string assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
你可以试试这个
Assembly.GetExecutingAssembly().Location
会给你执行程序集的补丁,然后:
System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
这里是更多的信息
如果我理解你,这听起来像你有一个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
}
链接地址: http://www.djcxy.com/p/44491.html