Monday, November 3, 2008

VS.net 中 DataSet 個 namespace

背景
IDE: VS.net 2005
Source Control: VSS
Language: C# (.net framework 2.0)
今日寫好了一個新的module,Compile行過無事後便將D code Check In。之後再將成個Project Get Latest一次來試,以便試下個新module會不會和同事做的改動唔夾。

Get Latest下來之後,我便立即將個Project Compile,不過IDE就不斷出Warning話有個DataSet (Class) declaration不見了,因此無法將個Project compile。經過一輪目視debug後,終於發現到問題所在,就是錯namespace。

錯namespace 
簡單點來說,每一個Class都係屬於一個namespace。當我係個Project內create DateSet時,VS.net 會以Project + DataSet個fille所屬的folder來allocate一個namespace比個DataSet,就好似如果我係 JohnShum 呢個Project 內的 \MyDataSet\Blog 起一個叫 Testing 的 DataSet,那Testing 這個 DataSet 就會 belongs to JohnShum.MyDataSet.Blog,當我要refer呢個DataSet,我一係就 JohnShum.MyDataSet.Blog.Testing ,一係就係code header那處加 using JohnShum.MyDataSet.Blog;
至於為何compile唔到個Project?從目視debugging後我估計是因為他發覺了個DataSet應該要belongs落另一個namespace,因此就用了copy and paste方法將個source files 搬落另一個folder,卻無為意其實個namespace係無改到的。又,因為呢個operation應該不會trigger到令VS.net去recompile個DataSets 的Project,因此問題未有即時被發覺。

Solution
好,原因找到了,如何解決才是重點。
對於以上的問題,解決方法看來十分即接,就是將Testing這個DataSet的namespace改好。不過問題是,如何改呢?因為改system generate 的Designer.cs 係唔recommend的。
其實好簡單,係IDE 入面Drag and Drop 過一次即可。

最後,本人coding經驗尚未算深,如有錯漏,敬請指正~ 


No comments: