2009-07-15 22 views
4

我已經閱讀了許多與這個問題有類似的聲音條款的問題(和答案),但它們都是針對不同的主要版本構建的.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功能)時會拋出錯誤?

如果上述問題沒有一個正面的答案,我都是尋求替代品。

謝謝。

回答

1

除非您使用新的API,否則更新到SP2應該沒有影響。您在製造機器上看到什麼故障?

我同意,順便說一句,他們不應該添加任何東西,而不改變小轉速。然而,這是Vista,他們失去了理智。

我想。

+0

問題是開發人員(特別是新開發人員,或者從其他項目移植代碼的開發人員)傾向於引入不兼容的API調用。現在它對開發人員來說是完全透明的,沒有創建黑名單就沒有辦法捕捉自己,並且讓開發人員在添加內容時不斷檢查它。 – 2009-07-15 22:45:57

+0

當然,如果你發現你需要更新框架的SP,那麼讓你的客戶效仿,否則你正在開發一個已知的有缺陷的平臺。那就是說,並非每個平臺都有缺陷? ;) – Lazarus 2009-07-15 22:51:12

+0

畢竟,升級是免費的(是的,我接受與執行升級相關的成本(如果您的基礎設施沒有部署解決方案)。另外,如果工作站沒有收到更新那麼他們還沒有收到什麼,以及多少額外的支持時間會浪費在支持已知的錯誤環境上。回到我的第一個評論;) – Lazarus 2009-07-15 22:53:34

1

我有run into this problem with 3.5 SP1;不幸的是,沒有簡單的解決方案。唯一的解決方法是1)希望服務包中的更改不會影響到你 - 有時他們會這樣做,有時他們不會這樣做 - 或者2)創建單獨的構建計算機,每個構建計算機只安裝相應的Service Pack,在那裏建設。

+0

檢查你的鏈接,我發現這是因爲你使用的AJAX控件工具包,你重建3.5 SP1,是否正確?您是否將此報告爲Connect(http://connect.microsoft.com/visualstudio/)上的錯誤。我知道它是在Codeplex上報告的,但Connect轉到產品組,應該告訴誰爲什麼不更改SP中的繼承層次結構。 – 2009-07-15 22:51:14

+0

不,它來自我的代碼的另一部分;我剛剛將問題的解決方案發布到AJAX Control Toolkit錯誤報告中。至於向微軟報告......如果我報告它是一個錯誤,也許他們會在將來的版本中注意它,但是損害已經完成。 – Randolpho 2009-07-16 02:34:26