0

私の正確なファイルパスは次のとおりです。この .txt ファイルは、bin/debug にデプロイすることは想定されていません

string str = File.ReadAllText(@"C:\development\slnfolder\projfolder\myfile.txt");

ファイルにアクセスするためにフルパスをハードコードする必要がないように、コードを書くにはどうすればよいですか

次のように、上記のコード行でハード コーディング パスを回避しようとしています。

string file = @"myfile.txt";
string str = Path.GetFullPath(file);

しかし、strは次のようになり、ファイルを見つけることができません。

C:\development\slnfolder\projfolder\bin\debug\myfile.txt

4

4 に答える 4

2

myfile.txtVisual Studio ソリューションに含めて、そのプロパティに移動し、ビルド アクションを[常にコピー] に設定できます(以前のビルドから変更されていない場合にファイルのコピーを避けたい場合は、新しい場合は [コピー...])。

このようにして、ファイル全体をターゲット ディレクトリ (つまりbin\debug) に配置します。

于 2013-01-14T19:26:45.907 に答える
1

実行可能ファイルがそこから実行されているため、そこにマップする必要があります。bin/debug2 レベル上を読み取ろうとするのではなく、テキスト ファイルがフォルダーに移動されていることを確認することを強くお勧めします (プロパティにコピーする VS オプションがあります)。Visual Studio からアプリを実行するのではなく、アプリをデプロイすると、はるかに簡単になります。

于 2013-01-14T19:26:08.450 に答える
1

ハードコーディングを避けるには、次のことを行う必要があります。

  • それを「ソフトコード」します (つまり、製品の構成の一部にします)。そのために構成設定 APIを使用できます。
  • コマンド ラインでパラメータとして取得する (メソッドargに渡された のいずれかからディレクトリの場所を読み取るMain)、または
  • たとえば、data現在実行中のディレクトリのサブディレクトリであるディレクトリ内など、配置する場所に関する規則を作成します( から読み取ります@"..\data\myfile.txt")。

これらの方法の組み合わせをいつでも定義できます。たとえば、構成/コマンド ライン オプションが指定されていない場合は、「慣例による」場所を使用します。

于 2013-01-14T19:27:12.817 に答える
1

Visual Studio を使用している場合は、txt ファイルをプロジェクトに追加します。

  • プロパティを右クリック
  • ビルド アクションをnoneに設定する
  • 新しい場合はコピーする出力ディレクトリにコピーを設定します

これにより、txtファイルが常に実行可能ファイルと同じフォルダーにあることが保証されます

于 2013-01-14T19:26:57.667 に答える