■ Step1 : 実際に実行するEXE先にファイルをコピーする
ビルド後のイベントを利用する。以下、参考資料。http://blogs.yahoo.co.jp/dk521123/14221546.html
手順
[1] VisualStudioのソリューションエクスプローラにおいて、指定したいソリューションを右クリックし、 [プロパティ]-[ビルドイベント]を選択 [2] VisualStudioにおいて、「ビルド後に実行するコマンドライン」のTextBoxに、 以下「構文」およびサンプルコマンドを参考にコマンドを入力する '''
構文
[説明]* 1行目:EXE先にフォルダ【指定したいフォルダ名】がない場合、そのフォルダを作成する。 * 2行目:EXE先の【指定したいフォルダ名】配下に、ソリューション内のファイルを上書きコピーするようにする[コマンド]
if not exist "$(TargetDir)【指定したいフォルダ名】" mkdir "$(TargetDir)【指定したいフォルダ名】" xcopy /s /e /y /q /r "$(ProjectDir)【指定したいフォルダ名】" "$(TargetDir)【指定したいフォルダ名】"
サンプルコマンド
ソリューション内に、「Data」というフォルダ内のファイルを使用したい場合if not exist "$(TargetDir)Data" mkdir "$(TargetDir)Data" xcopy /s /e /y /q /r "$(ProjectDir)Data" "$(TargetDir)Data"
■ Step2 : ソースを書く
* Application.ExecutablePathから実行するExeの位置がわかるので、これを利用してプログラムを作成
サンプルソース
* ソリューション内に、「Data」というフォルダ内の「text.txt」を使用したい場合// 実行環境のフルパス取得 DirectoryInfo exeDireInfo = new DirectoryInfo(Application.ExecutablePath); string exePath = exeDireInfo.Parent.FullName; // Xmlを作成する上で必要なテンプレートのパスを取得 string textPath = System.IO.Path.Combine(exePath , "Data", "test.txt"); // test.txt内に記載されている内容を文字列として取得 string textData = System.IO.File.ReadAllText( textPath, Encoding.GetEncoding("Shift_JIS"));