私は使っている
string path = AppDomain.CurrentDomain.BaseDirectory;
アプリケーションパスを取得しますが、これにより次のようになります。
C:\Projects\XYZ\ABC\bin\Debug
bin\Debugは必要ありません。これを実現する方法はありますか?
AppDomain.CurrentDomain.BaseDirectory プロパティは、アセンブリリゾルバーがアセンブリのプローブに使用するベースディレクトリを取得します。
したがって、100%正常に機能しています。アプリケーションをビルドする場合は、別のフォルダーまたはドライブの別の場所にカットアンドペーストします。これらの変更は、このプロパティに反映されます。
また、この部分は必要ないとおっしゃいましたbin\Debug
、それであなたはその前に何が欲しいですか?具体的にお願いします。
あなたが欲しいものを手に入れるために:
var enviroment = System.Environment.CurrentDirectory;
string projectDirectory = Directory.GetParent(enviroment).Parent.FullName;
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);
(私が理解したように)アプリケーションの実行可能パスを把握したい場合:
string path = Application.ExecutablePath;
IDE内でプログラムを実行しているので、この種のパスを取得するのはそのためです。アプリをビルドして外部で実行してみてくださいIDE-メソッドが正しく機能することがわかります。
編集:取得するのは、IDEが$ PROJECT_DIR\bin\Debugにあるアプリのデバッグビルドを実行するためです。
正直なところ、これはベストプラクティスではありませんが、これにより、必要なものが得られます。
string dir = System.IO.Directory.GetCurrentDirectory().Replace("\\bin\\Debug", "");
私はこれを使用しています:
String appSettingsPath = Directory.GetCurrentDirectory();
if (!File.Exists(Path.Combine(appSettingsPath, "appsettings.json")))
appSettingsPath = Path.GetDirectoryName(Path.GetDirectoryName(appSettingsPath));