3

通常、コマンド ライン パラメーターをダイジェストできる C# でアプリケーションをビルドする場合、これらのパラメーターがファイル パス文字列である場合、相対パスと絶対パスを使用してコンピューター上の特定のファイルを参照し、それをプログラムで使用することを選択できます。 .

私の最後のプロジェクトでは、コマンド プロンプトから相対パスを指定すると、アプリケーションが動作しません。しかし、VS 2010 のデバッグ モードでは、相対パスをダイジェストします。コマンド プロンプトから実行するには、絶対パスが必要です。

4

2 に答える 2

4

作業ディレクトリを設定する必要があります。参照:Directory.SetCurrentDirectoryメソッド

System.IO.Directory.SetCurrentDirectory( System.AppDomain.CurrentDomain.BaseDirectory );

デバッグビルドでは、現在のディレクトリはデフォルトでdebug\binに設定されています。

デバッグ中のプログラムの作業ディレクトリを指定します。Visual C#では、作業ディレクトリは、アプリケーションがデフォルトで\ bin\debugから起動されるディレクトリです。

http://msdn.microsoft.com/en-us/library/2kf0yb05.aspx

Assembly.GetEntryAssembly()またはAssembly.GetExecutingAssembly()を使用してから、LocationプロパティまたはCodeBaseプロパティのいずれかを使用して、アセンブリのパスを取得することもできます。

于 2012-08-10T14:07:37.003 に答える
2

次のように、相対パスを自分で絶対パスに変えることができます。

if (!Path.IsPathRooted(path))
    path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + path;

または、現在のディレクトリを実行可能パスに変更します。

string exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Directory.SetCurrentDirectory(exePath);
于 2012-08-10T14:17:10.123 に答える