58

私は 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"

プロジェクトを別のコンピューターに移動して動作させることができるため、これにより多くの時間を節約できますが、ここではその方法がわかりません。誰か知っていますか?

4

3 に答える 3

77

次のようにして、アプリケーション環境フォルダー内のパス「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.CombineEnvironment.CurrentDirectory私の例で使用します。これらは非常に便利で、アプリケーションの現在の場所に基づいてパスを作成できます。Path.Combine2つ以上の文字列を組み合わせて場所を作成し、Environment.CurrentDirectoryアプリケーションの作業ディレクトリを提供します。

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

于 2012-09-09T08:52:36.760 に答える
37
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3")

ベースディレクトリ + ファイル名

于 2012-09-09T01:33:16.487 に答える
13

私は同様の問題に直面していました。プロジェクトにファイルがあり、FS からのファイルのロードを処理し、それらを何らかの方法で処理する必要があるクラスをテストしたいと考えていました。私がしたことは:

  • test.txt私のテストプロジェクトにファイルを追加しました
  • ソリューション エクスプローラーのヒットalt-enter(ファイル プロパティ)
  • そこに と を設定しましBuildActionた。ContentCopy to Output DirectoryCopy if newerCopy always

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

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

于 2016-06-15T15:42:57.997 に答える