私は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"
プロジェクトを別のコンピューターに持ち込むことができ、それが機能するため、これは多くの時間を節約しますが、ここではそれを行う方法がわかりません、誰もが知っていますか?
アプリケーション環境フォルダ内のパス「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
が存在する場所と同じパスである必要はありませんが、特に指定されない限り、ほとんどの場合、存在するはずです。
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3")
ベースディレクトリ+あなたのファイル名
私は同様の問題に直面していたので、プロジェクトにファイルがあり、FSからのファイルの読み込みを処理し、何らかの方法で処理する必要があるクラスをテストしたかったのです。 :
test.txt
_をテストプロジェクトに追加しましたalt-enter
_(ファイルプロパティ)をヒットしますBuildAction
をContent
に設定し、_Copy to Output Directory
_を_Copy if newer
_に設定しました。_Copy always
_も同様に設定したでしょうそれから私のテストではPath.Combine(Environment.CurrentDirectory, "test.txt")
しなければなりませんでした。プロジェクトがコンパイルされるたびに、ファイル(およびフォルダー内にある場合はそのすべての親パス)を_bin\Debug
_(または使用している構成)フォルダーにコピーします。
これが誰かを助けることを願っています