2014年4月22日 星期二

[C#] 如何打包exe檔 與 dll 檔?

相信很多人google關鍵字一定是會出現ILMerge這個工具,但今天要講得不是這個工具。

今天要介紹的是一個叫"Xenocode Postbuild 2010 for .Net" *(年份可能會更新,目前最新版本為

2010(好像也有看到2013,但不確定)



首先,進入Application ->Add(加入你要的dll + exe)


一次只能放一個exe檔,但可以多個dll檔


進入virtrualize->Enable(打勾)->Runtimes->Enabled .NET runtime engine: (選擇要的版本)

(底下有SQL,但我沒用到所以就沒選擇)



最後在Output分頁這邊,有一個Single application executable(當然你要選multiple application也是可以,

但功能不同)選曲要輸出的exe檔案後->按下Build Application->完成!

然後你的程式就可以在 "非.net環境下"(沒有安裝.net framework)執行!

低調載點: .

End

2014年4月16日 星期三

[C#/winform] 資料夾小功能-開啟路徑資料夾/指定MyDocument/程式起始路徑

由於在XP / Win7 的My Document路徑是不同的,因此如果程式內要設定建立資料夾或是儲存在

My Document資料夾下的話,就必須要撰寫特殊程式碼:

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

最後的MyDocuments可以改為MyComputer之類的....請依照需要去變更。

另外如果想要開啟指定路徑的資料夾則是:

System.Diagnostics.Process.Start(路徑)

程式起始路徑的部分是當程式放在不同資料夾時會有不同的相對路徑,因此如果要取得目前路

徑就必須要靠程式碼:

Application.StartupPath

簡單,但是實用。

End

2014年4月14日 星期一

[C#winform] 小技巧:如何新增檔名到combo box內,並檢查時否有重複?

先看程式碼

string[] Dir_sub_file = Directory.GetFileSystemEntries(要新增到combo Box項目內的資料夾內檔案名稱);
foreach (string s in Dir_sub_file)
{
      file_list.Add(Path.GetFileNameWithoutExtension(s)); //檔案名稱清單 的list<string>陣列
}

foreach (string ss in file_list)
{
      if(!comboBox_SN_1.Items.Contains(ss))
           comboBox_SN_1.Items.Add(ss);
}

首先利用Directory.GetFileSystemEntires()來取得資料夾內檔案名稱,為了不要讓後面的附檔名出現

在combo Box的內容之中,因此這邊用Path.GetFileNameWithoutExtension(string 路徑)來除去附檔名,

然後利用foreach(也可以用for)來存入我們所建立的一個list<string>陣列 叫file_list。(功用只是存檔

名清單)

第二段foreach則是把file_list內所有的string都拿出來,利用comboBox.item.Contains(string)比對是否已

經有存在在comboBox內容中,如果沒有就用.add()這方法加入comboBox的items。

End


2014年4月7日 星期一

[C#] 讀CSV檔

先看程式碼:

try
{
        using (StreamReader SR = new StreamReader(檔案路徑))
        {
            string Line;
            while ((Line = SR.ReadLine()) != null)
            {
                   string[] ReadLine_Array = Line.Split(',');
                   //這邊可以自行發揮
             }
        }
}
catch (IOException)
{ }
catch (NullReferenceException)
{ }
catch (FormatException)
{ }

先new一個StreamReader,然後建立一個暫存的String變數。

利用While() & Readline() 來讀取CSV檔,Readline()每次讀一行。

用Split(',')切割逗號(csv檔內都用逗號區隔)並放入String陣列中

之後即可應用。

End