0

我正在使用第 3 方网站来启动我用 .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”。有什么办法可以做到这一点,还是我必须接受不可避免的事情并编写自己的网站?

4

2 回答 2

1

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

C:\windows\system32\something.dll

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

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

有关更多详细信息,请参阅此 SO 链接:Server.MapPath(".")、Server.MapPath("~")、Server.MapPath(@"\")、Server.MapPath("/")。有什么区别?

于 2012-08-16T17:43:01.320 回答
0

我可能误解了您(请参阅问题下方的评论),但如果您只想要目录,请尝试以下操作(path您最初尝试的结果之一在哪里):

var yourDir = Path.GetDirectoryName(path)

注意:这需要您包含System.IO;.

于 2012-08-16T15:56:39.190 回答