プログラムを実行するコンソールの現在の作業ディレクトリを取得して、プログラム引数として渡された相対パスを解決するにはどうすればよいですか?
私が自分のプログラムをここに置いたとしましょう:c:\tools\program.exe
しかし、私はさまざまな場所からそれを呼び出しています。私がここにいるとしましょう:C:\Users\Me\Documents\
そして私はこのコマンドを実行しますprogram.exe --src=somefile.txt --dest=subdir\otherfile.txt
Environment.CurrentDirectory
とSystem.Reflection.Assembly.GetExecutingAssembly().Location
戻りますが、に関連するパスをc:\tools
解決できるようにしたいと思います。somefile.txt
subdir\oterfile.txt
C:\Users\Me\Documents\
======更新======
ご協力ありがとうございました。期待通りに動作しているようです
Environment.CurrentDirectory
。私の場合、問題の原因はXenocodeのPostbuildツール(現在はSpoon Virtual Application Studioと呼ばれています)であり、すべてのプログラムのファイル(dll、構成などを含む)を1つの実行可能ファイルに「パック」するために使用することがあります。Environment
これは非常に便利ですが、この場合、「仮想化」機能がプログラムの変数を台無しにしました。私はなんとかその問題を解決することができました。