c#网站调用编译的dll,需要知道它自己的位置

时间:2012-08-16 15:46:47

标签: c# .net sqlite .net-4.0

我正在使用第三方网站发布我用.Net 4.0编写的DLL。 DLL将与SQLite数据库一起上传到网站,为我提供结果,然后我可以在网站上查看。我知道该网站会将我的DLL和SQLite数据库放在同一目录中,但我不知道该目录的位置。有没有办法让DLL识别它的位置,以便它可以找到SQLite数据库? 我试过以下......

string path = GetType().Assembly.GetModules(false)[0].FullyQualifiedName;  

string path = typeof(YourClass).Assembly.Location;  

System.Reflection.Assembly.GetExecutingAssembly().Location; 

但是所有这些都将目录显示为“C:\ WINDOWS \ system32 \< library> .dll”。有没有办法实现这一点,或者我必须接受不可避免的并写我自己的网站?

2 个答案:

答案 0 :(得分:1)

您尝试的所有上述方法都会为您提供dll程序集的物理位置,这在您的情况下正确反映:

C:\ Windows \ System32下\ something.dll

另一方面,如果您想知道当前引用您的程序集或库的ASP.NET网站的物理位置,您可以尝试以下方法之一:

Server.MapPath(".")
Server.MapPath("~")

有关详细信息,请参阅此SO链接:Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\"), Server.MapPath("/"). What is the difference?

答案 1 :(得分:0)

我可能误解了你(请参阅我在问题下面的评论),但如果您只是想要该目录,请尝试以下操作(其中path是您原始尝试之一的结果):

var yourDir = Path.GetDirectoryName(path)

注意:这需要您加入System.IO;