0

プロジェクト フォルダーの外に XML ファイルがあり、コードからアクセスして、プロジェクトのディレクトリへの相対パスを配置する任意のマシンでコードを実行したいと考えています。

例として、現在のディレクトリがフォルダー A にあり、アクセスしたいファイルが A の隣のフォルダー B にあるとします。

4

1 に答える 1

4

XMLファイルが常にアプリケーションフォルダ内にある場合は、使用できます。

Environment.CurrentDirectory

作業パスは、必ずしも実行可能ファイルが配置されている場所であるとは限りません。確実に、MSDNから取得した次のコードを使用できます。

string path;
path = System.IO.Path.GetDirectoryName( 
      System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase );

それ以外の場合は、.eg MyDocumentsなどのMicrosoftの特別なフォルダの一部である場合は、使用できます。

Environment.SpecialFolder.MyDocuments

このように使用します。

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
                                           "myfile.xml")

出力は、現在のユーザーのマイドキュメントフォルダにあるmyfile.xmlへのパスになります。私の場合、それは私に与えるでしょうC:\Users\eandersson\Documents\myfile.xml

Path.Combineは、複数のディスクパスを1つに結合できるため、ここで非常に役立ちます。

編集コメントによって要求された追加情報。

最善のアプローチは、 Directory.GetParentを使用することだと思います。

Directory.GetParent(Environment.CurrentDirectory).FullName

そして、このようなことをします。

Path.Combine(Directory.GetParent(Environment.CurrentDirectory).FullName, "PathB", "myfile.xml")

これにより、プロジェクトフォルダと同じ場所でPathBが検索されます。

C:\MyProjects\PathA\MyExecutable.exe
C:\MyProjects\PathB\myfile.xml

MyExecutable.exeその場所から実行しているとしましょう。上記のコードは、ファイルを含むPathB内の2番目の場所を自動的に返す必要がありますmyfile.xml

于 2013-02-10T11:15:30.387 に答える