3

基本的な質問:

入力して、独自のディレクトリから実行すると正常に動作するC#Windowsアプリケーションがあります

program1.exe

しかし、次のようなフルパスを指定して別のディレクトリから実行すると

d:/progs/myprog/program1.exe

クラッシュします。そして、私は本当にこのようにする必要があります:)

同じディレクトリにあるプログラムによるいくつかのファイルの読み取りに関連していると思います。私の疑わしい行は次のとおりです。

using (XmlReader OdczytywaczXML = XmlReader.Create(@"config.xml"))

それが問題になる可能性はありますか?ファイルをコピーするだけでプログラムがどこでも動作するようにしたいので、ファイルへのフル パスを指定したくありません。

ああ、デバッグ中にそのような状態(別のディレクトリから実行)をシミュレートする方法がわかりません-可能ですか?

4

3 に答える 3

5

この場合、プログラムの場所を検出し、完全なパスを作成する必要があります。config.xml次に例を示します。

var filePath = Path.Combine(
    Path.GetDirectoryName(Assembly.GetEntryAssembly().Location),
    @"config.xml");

条件をシミュレートするには、プロジェクト プロパティの [デバッグ] ページに移動し、Working Directory.

于 2013-11-13T16:16:33.083 に答える
2

これは確かに問題です。その行にディレクトリ情報を追加できます。Application.StartupPathたとえば、WinFormsで使用できます。

一般的に使用できますSystem.Reflection.Assembly.GetExecutingAssembly().Location

于 2013-11-13T16:15:55.753 に答える