2010年8月20日 星期五

Nant 0.86 在 Windows2003 上的 BUG

        自從我替自己的工作室建置整合了 SVN + Hudson + NANT 的 build server solution,開始享受這甜美的果實,為了讓整體發揮最大功效,上個月我把原本使用 WindowsXP Pro 的伺服器重灌成 Windows 2003 Ent,沒想到從此我的專案建置開始變得愁雲滿天!




        每次 Build 專案都顯示以下的錯誤訊息:
=============================================================
Executing command: hudson.util.ArgumentListBuilder@fdf48d
[NWS] $ cmd.exe /C '"D:\hudson\NAnt\bin\NAnt.exe "-buildfile:build config\NWS.build" clean && exit %%ERRORLEVEL%%"'
NAnt 0.86 (Build 0.86.2898.0; beta1; 2007/12/8)
Copyright (C) 2001-2007 Gerry Shaw
http://nant.sourceforge.net


BUILD FAILED

Failed to initialize the 'Microsoft .NET Framework 2.0' (net-2.0) target framework.

    Property evaluation failed.
Expression: ${path::combine(sdkInstallRoot, 'bin')}
                            ^^^^^^^^^^^^^^

        Property 'sdkInstallRoot' has not been set.

For more information regarding the cause of the build failure, run the build again in debug mode.

Try 'nant -help' for more information
Finished: FAILURE
=============================================================
        看起來像是我重灌作業系統後,NET Framework 2.0 沒有安裝好似的。但之後不管我重裝 SDK 甚至安裝了 VisualStudio,都解決不了這個錯誤。這個問題困擾了我將近一個月,甚麼都沒改的情況下,原本在 XP 可以動的東西到了 2003 就是不能用。

        就在我今天即將打算要透過自行修改 Registry 寫入 SDK Path 之前,沒想到讓我找到線索,原來這本來就是 NANT 0.86 beta 在 Win2003 上的一個 Regression bug !透過 SF 的 Track 知道原本在 0.85 是不會有這個錯誤,我依照建議升級 Nant 到 0.91 nightly build 版本後問題就迎刃而解。

        鑒於網路上對這個臭蟲的中文資訊幾乎付之闕如,我就來當開路先鋒好了,貼這篇文章讓偏好閱讀中文資訊,但跟我一樣從 XP 升級作業系統到 2003 或是在 2003 上升級 Nant 0.85 -> 0.86 而踩到這個地雷的朋友可以有機會透過這篇文章找到答案。

Google+ Badge