2009-06-29 9 views
0

私持ってExceuting議会に前のパスを取得する方法

Cにあるいくつかのファイル:debudのfilderにassenblyで実行

と現在のFILE.TXT \ MyAppに\

C:\ MyAppの\デバッグ\

\ binに、私は、実行時に上記の "file.txtは" のアドレスを取得したい。..

私は

これを試してみました。

Assembly.GetExecutingAssembly()場所

それは私に Cを与える:\ MyAppの\ binに\デバッグ\ MYAPP.EXE

は、どのように私は "file.txtを" のアドレスを取得することができます

答えて

1

"Debug"フォルダ(および "Release"フォルダ)は、プロジェクトのビルドの実際の出力です。 file.txtをプロジェクトに含めておらず、それを "出力ディレクトリにコピー"としてマークした場合、ビルド出力の一部としてカウントされず、アプリケーションはロードしようとしません。

基本的には、「出力ディレクトリにコピーする」を「常にコピーする」または「新しい場合はコピーする」に設定してそのまま使用してください。"file.txt"

1

をすることができますファイルとコンパイルされたアプリケーションは関係がないためです。 MyApp.exeを別の場所に移動した場合はどうなりますか?

あなたは2つのオプションがあります:

  1. は、コンテンツファイル(それは出力でかつMYAPP.EXEと同じフォルダに含まれます)
  2. 使用形態として、プロジェクトにFILE.TXT含めます - ユーザーオプションでファイルの場所を指定できるようにします。たとえば、これにはAppSettingsを使用できます。

まあ、技術的にはあなたが常に現在のディレクトリの親に移動することができるので、することができます(「MyAppPath \ ..」)、それは本当にただ悪いアイデアだ...

0

あなたの実行可能なフォルダあなたがあれば、あなたはもちろん、次の

string fileTxtPath = AppDomain.CurrentDomain.BaseDirectory + "..\\file.txt"; 

を行うことができます望む結果を得るために

AppDomain.CurrentDomain.BaseDirectory 

:パスを取得することができますプロジェクトに関連するファイルがある場合は、実行可能ファイルと同じフォルダにファイルを含める必要があります。 Visual Studioから右クリックしてプロパティに移動し、[Copy to Output Directory]に[Copy Always]オプションを選択します。

関連する問題