web-dev-qa-db-ja.com

プロジェクトファイルのファイルパス?

私はC#でメディアプレーヤーに取り組んでいますが、テストを行いたいときに問題があります。

次のパスで新しいオブジェクトソングを作成する必要があります。

@"C:\Users\Jesus Antonio\Desktop\JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3"

動作しますが、コンピューターを変更するときは、パス全体を書き換える必要があります。私のプロジェクトはJukeboxV2.0と呼ばれます

Javaでは、たとえばパスを書くことができることを覚えています

@"JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3"

プロジェクトを別のコンピューターに持ち込むことができ、それが機能するため、これは多くの時間を節約しますが、ここではそれを行う方法がわかりません、誰もが知っていますか?

37
OscarLeif

アプリケーション環境フォルダ内のパス「Data\ich_will.mp3」を取得するには、このようなことをします。

string fileName = "ich_will.mp3";
string path = Path.Combine(Environment.CurrentDirectory, @"Data\", fileName);

私の場合、次の結果が返されます。

C:\MyProjects\Music\MusicApp\bin\Debug\Data\ich_will.mp3

私が使う Path.CombineおよびEnvironment.CurrentDirectory私の例では。これらは非常に便利で、アプリケーションの現在の場所に基づいてパスを作成できます。 Path.Combineは2つ以上の文字列を組み合わせて場所を作成し、Environment.CurrentDirectoryは、アプリケーションの作業ディレクトリを提供します。

作業ディレクトリは、必ずしもexecutableが存在する場所と同じパスである必要はありませんが、特に指定されない限り、ほとんどの場合、存在するはずです。

53
eandersson
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3")

ベースディレクトリ+あなたのファイル名

24
jack.li

私は同様の問題に直面していたので、プロジェクトにファイルがあり、FSからのファイルの読み込みを処理し、何らかの方法で処理する必要があるクラスをテストしたかったのです。 :

  • ファイル_test.txt_をテストプロジェクトに追加しました
  • ソリューションエクスプローラーで_alt-enter_(ファイルプロパティ)をヒットします
  • そこでBuildActionContentに設定し、_Copy to Output Directory_を_Copy if newer_に設定しました。_Copy always_も同様に設定したでしょう

それから私のテストではPath.Combine(Environment.CurrentDirectory, "test.txt")しなければなりませんでした。プロジェクトがコンパイルされるたびに、ファイル(およびフォルダー内にある場合はそのすべての親パス)を_bin\Debug_(または使用している構成)フォルダーにコピーします。

これが誰かを助けることを願っています

5
Luiso