2013-08-30 75 views
1

它的app.config中的supportedRuntime設置只能在3.5版上運行嗎?例如與SKU?如何將supportedRuntime 3.5設置爲最低?

目前我們遇到的問題是,如果使用.NET Framework 2.0運行,我們的應用程序會崩潰,但找不到錯誤。這給客戶帶來了不好的反饋。

回答

2

直到.NET 4.0才支持「sku」屬性

而這不是真正的問題。你沒有依賴於3.5,你有一個在.NET 2.0 SP1或SP2。客戶端運行2.0的RTM版本。微軟在服務包更新中犯了一個錯誤,它隱藏了一些RTM版本中沒有的重載方法。在不改變程序集的[AssemblyVersion]的情況下,它仍然是2.0.0.0

這是非常非常淘氣,並造成了很大的痛苦。在.NET 4中,參考程序集現在不再是GAC中程序集的簡單副本。

基本的方法來解決這個問題:

  • 在您安裝了.NET 3.5SP1引導程序。這將確保您的客戶端PC使用最新的服務包更新
  • 只是修復您的代碼並避免依賴於添加的方法過載。你應該知道例外的名字。猜測,WaitHandle.WaitOne(int)的可能性很大。加入SP2和廣泛青睞於等效的WaitOne(INT,BOOL)設置爲的最後一個參數,因爲沒有人能理解什麼exitContext可能意味着
  • 的不那麼有用的,但現實的方法:指出對客戶端,您無法支持未啓用Windows Update的計算機。
2

<supportedRuntime>僅用於確定CLR版本 - 與框架版本3.5和2.0相同。我不知道知道需要.NET 3.5的啓動參數方面的任何方式的。儘管如此,創建一個首先探測.NET 3.5程序集的入口點應該是相對直接的,並且如果找不到它們會給出友好的錯誤消息。當然,這取決於你正在運行的是什麼樣的應用程序,但是如果它是一個本地GUI(例如WPF或WinForms),那麼它不應該太難。

相關問題