我已經閱讀了許多與這個問題有類似的聲音條款的問題(和答案),但它們都是針對不同的主要版本構建的.Net。不幸的是,我遇到了更深的麻煩。選擇要構建的.Net框架的哪個服務包針對
這是故事。我們的客戶使用.Net框架的2.0版本。只有2.0,根本沒有服務包。我們的開發人員曾經使用.Net 2.0 SP1,它運行良好。現在,由於我們正在開發其他項目,開發人員(包括我自己)已更新爲.Net 2.0 SP2。這就是麻煩發生的地方。顯然,以其無限的智慧,MS決定改變/添加API到框架而不增加主要版本(比如說2.1)。因此,當您針對2.0構建時,它會針對2.0 SP2(如果已安裝它)構建,並且似乎沒有配置它的方法。因此,開發人員現在可以編寫代碼,認爲他的目標是2.0,但它不適用於客戶機器!
我們已經注意到某些構建(使用msbuild完成)在我們的測試框上開始失敗,但在開發人員的機器上工作得很好。很明顯,因爲測試框是以客戶機的方式設置的,而且他們的舊框架缺少一些API。現在,構建服務器場將安裝更新版本的CLR(包括spervice包和更高版本的主要修訂版)來測試我們所有的項目,因此使用原始2.0以外的API的構建不會再失敗......對於兼容性測試來說是一個可怕的消息
所以我的問題是這樣的。如何構建(使用msbuild)針對特定CLR修訂版(具有相同主版本)。否則,如何確保VS2005在某個特定項目中使用與CLR特定版本不兼容的特性(向扳手投擲扳手,沒有FxCop或類似集成,僅限基本VS2005功能)時會拋出錯誤?
如果上述問題沒有一個正面的答案,我都是尋求替代品。
謝謝。
問題是開發人員(特別是新開發人員,或者從其他項目移植代碼的開發人員)傾向於引入不兼容的API調用。現在它對開發人員來說是完全透明的,沒有創建黑名單就沒有辦法捕捉自己,並且讓開發人員在添加內容時不斷檢查它。 – 2009-07-15 22:45:57
當然,如果你發現你需要更新框架的SP,那麼讓你的客戶效仿,否則你正在開發一個已知的有缺陷的平臺。那就是說,並非每個平臺都有缺陷? ;) – Lazarus 2009-07-15 22:51:12
畢竟,升級是免費的(是的,我接受與執行升級相關的成本(如果您的基礎設施沒有部署解決方案)。另外,如果工作站沒有收到更新那麼他們還沒有收到什麼,以及多少額外的支持時間會浪費在支持已知的錯誤環境上。回到我的第一個評論;) – Lazarus 2009-07-15 22:53:34