【VisualStudio】【C#】ソリューション内のファイルを使用するには...

■ ソリューション内のファイルを使用するには...

手順

Step1 : 実際に実行するEXE先にファイルをコピーする
Step2 : ソースを書く

■ 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"));

■ メモ

* 以下も試してみたい
http://dobon.net/vb/dotnet/programing/bitmapresource.html