0

サード パーティの Web サイトを使用して、.Net 4.0 で記述した DLL を起動しています。DLL は SQLite データベースと一緒に Web サイトにアップロードされ、Web サイトで表示できる結果を提供します。Web サイトで DLL と SQLite データベースが同じディレクトリに配置されることはわかっていますが、そのディレクトリがどこにあるのかわかりません。SQLite データベースを見つけることができるように、DLL がどこにあるかを認識する方法はありますか? 私は次のことを試しました...

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 Web サイトの物理的な場所を知りたい場合は、次のいずれかを試すことができます。

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 に答える