前提・実現したいこと
作業ディレクトを取得したく、上記のサイトを参考に手元の完了で実行した結果
C#
1using System; 2using System.IO; 3using System.Reflection; 4 5namespace namespace { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 Console.WriteLine(System.AppDomain.CurrentDomain.BaseDirectory); 11 Console.WriteLine(Directory.GetCurrentDirectory()); 12 Console.WriteLine(Directory.GetParent(Assembly.GetExecutingAssembly().Location)); 13 Console.WriteLine(Environment.CurrentDirectory); 14 Console.WriteLine(System.IO.Path.GetDirectoryName(System.IO.Path.GetFullPath(Environment.GetCommandLineArgs()[0]))); 15 Console.WriteLine(System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName)); 16 } 17 } 18}
// 実行結果 C:\Users\{UserName}}\source\repos\{SolutionName}\{ProjectName}\bin\Debug\netcoreapp3.1\ C:\Users\{UserName}}\source\repos\{SolutionName}\{ProjectName}\bin\Debug\netcoreapp3.1 C:\Users\{UserName}}\source\repos\{SolutionName}\{ProjectName}\bin\Debug\netcoreapp3.1 C:\Users\{UserName}}\source\repos\{SolutionName}\{ProjectName}\bin\Debug\netcoreapp3.1 C:\Users\{UserName}}\source\repos\{SolutionName}\{ProjectName}\bin\Debug\netcoreapp3.1 C:\Users\{UserName}}\source\repos\{SolutionName}\{ProjectName}\bin\Debug\netcoreapp3.1
となってしまいました。
参照したいファイルがプロジェクトの直下にあるので、プロジェクトまでを自動取得するプログラムが書きたいです。
どうすれば、取得できるでしょうか?ほかの記事も読み漁ったのですが、同様のことしか書かれておらず困っております。
【追記】
最終的にはWindowsサービスとして利用したいので、サービスとして利用できれば、参照したいファイルがプロジェクト直下ではない方法でも大丈夫です。
ここでいう「作業ディレクトリ」とは何を指しますか。「プロジェクト」とは、Visual Studioでのプログラムのビルドの為のファイルの構成要素のひとつでしかないです。実行プログラムにとっては関係ありません。
その参照したいファイルもプロジェクトに含んで、コンパイル時にコピーするようにすれば、コンパイル時に実行ファイルと同じフォルダに出力されます。
そういったことを行った方がよさそうな感じがします。
> YAmaGNZ
追記しましたが、最終的にWindowsサービスとして利用したのですが、どの方法が最適解かよくわかってないのですが、サービスとして利用する場合はコピーする方が正解ですか?
コンパイルする言語は初めてで、コピーする方法もわからないので、ご教示お願い致します。
作成するものがWindowsサービスだったとしても、ソースを利用するのではなくコンパイルで得られた成果物を利用するのが一般的だと思います。
ソリューションエクスプローラのプロジェクトを右クリックして出てくる「追加」から既存ファイルの追加を行って出力フォルダにコピーするよう変更すればいいかと思います。
参照するものによってはリソースとして実行ファイルに含めるなど方法があります。
参照したいファイルが存在するディレクトリを「作業ディレクトリ」と言っているのでしょうか。であれば既にいくつかコメントいただいていることに重なりますが、ひとつの案として実行ファイルと同じディレクトリにその参照するファイルも配置して、「実行ファイルのディレクトリ\参照したいファイル」のようにPATHの操作をします。ちゃんとした製品ならば、インストーラーなども作ります。参照(読み取り)だけのファイルならそれでも良いですが、書き込みも行うようであれば適切なディレクトリをインストーラーで作成して、そこへ配置します。
回答2件
あなたの回答
tips
プレビュー