我正在使用第三方网站发布我用.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”。有没有办法实现这一点,或者我必须接受不可避免的并写我自己的网站?
答案 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;
。