web-dev-qa-db-ja.com

アプリケーションパスを取得する方法

私は使っている

string path = AppDomain.CurrentDomain.BaseDirectory;アプリケーションパスを取得しますが、これにより次のようになります。

C:\Projects\XYZ\ABC\bin\Debug

bin\Debugは必要ありません。これを実現する方法はありますか?

9
user339160

AppDomain.CurrentDomain.BaseDirectory プロパティは、アセンブリリゾルバーがアセンブリのプローブに使用するベースディレクトリを取得します。

したがって、100%正常に機能しています。アプリケーションをビルドする場合は、別のフォルダーまたはドライブの別の場所にカットアンドペーストします。これらの変更は、このプロパティに反映されます。

また、この部分は必要ないとおっしゃいましたbin\Debug、それであなたはその前に何が欲しいですか?具体的にお願いします。

12

あなたが欲しいものを手に入れるために:

var enviroment = System.Environment.CurrentDirectory;
string projectDirectory = Directory.GetParent(enviroment).Parent.FullName;
3
Fredy
string LPath;
string Location = AppDomain.CurrentDomain.BaseDirectory + "Reports\\rptEmployInfoStat.rpt";
int index;
index = Location.IndexOf("bin");
if (index > 0)
{
     LPath = Location.Remove(index, 10);
}
else
{
     LPath = Location;
}
rd.Load(@LPath);
2
gm arif

(私が理解したように)アプリケーションの実行可能パスを把握したい場合:

string path = Application.ExecutablePath;
2
user586399

IDE内でプログラムを実行しているので、この種のパスを取得するのはそのためです。アプリをビルドして外部で実行してみてくださいIDE-メソッドが正しく機能することがわかります。

編集:取得するのは、IDEが$ PROJECT_DIR\bin\Debugにあるアプリのデバッグビルドを実行するためです。

1
iehrlich

正直なところ、これはベストプラクティスではありませんが、これにより、必要なものが得られます。

string dir = System.IO.Directory.GetCurrentDirectory().Replace("\\bin\\Debug", "");
1
Theotonio

私はこれを使用しています:

String appSettingsPath = Directory.GetCurrentDirectory();

        if (!File.Exists(Path.Combine(appSettingsPath, "appsettings.json")))
            appSettingsPath = Path.GetDirectoryName(Path.GetDirectoryName(appSettingsPath));
0
HarryP