1

コードの実行時に表示されるエラーは次のとおりです: 'ArgumentException was unhandled. パスに不正な文字があります。

次のコードを使用して、.xml ファイルにアクセスしています。

string appPath = Path.GetDirectoryName(System.Environment.CommandLine);
FileInfo fi = new FileInfo(appPath + @"\Books.xml");

WinForm ではなく、コンソール アプリケーションに対してこれを行っています。私はしばらくの間、SOを検索するだけでなく、徹底的にグーグルで検索してきました。

これは宿題プロジェクトの一部です。ただし、これは私が遭遇している唯一の問題です。

4

4 に答える 4

3
string appPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
FileInfo fi = new FileInfo(Path.Combine(appPath, "Books.xml"));
于 2012-10-05T19:41:24.763 に答える
1

System.Environment.CommandLineはパスを返しません。アプリケーションを実行するために実行されたコマンド ラインの値を返します。

Assembly.GetExecutingAssembly().Location代わりに (Furqan Safdar が彼の回答に投稿したように)を使用する必要があるでしょう。

于 2012-10-05T19:38:34.673 に答える
0

CommandLine によって返される EXE パスの形式は風変わりなので、次のようにする必要があります。

string appPath = Path.GetDirectoryName(System.Environment.CommandLine.Trim('"', ' '));

それはうまくいくはずです。

于 2012-10-05T19:43:16.777 に答える
0

次のコードを使用して、アプリケーション ディレクトリを取得します。

var rootDirectory = AppDomain.Current.BaseDirectory;

幸運を!

于 2012-10-05T19:53:30.043 に答える