.NET精簡架構的“無法找到資來源程式集”異常釋疑

來源:互聯網
上載者:User
程式

在做 .NET Compact Framework 開發的過程中,特別是訪問 Web Service 的時候,常常會遇到這樣的異常資訊:“無法找到資來源程式集”或"Could not find resource assembly"。比較讓人納悶的是,明明是要訪問 Web Service,跟資來源程式集有什麼關係呢?為什麼會用到資來源程式集呢?什麼是資來源程式集呢?

被這個問題困擾了很久,現在終於解開了迷題。

這個異常資訊是這樣產生的:在 .NET CF 應用程式訪問 Web Service 的時候,程式因為某種原因(如:訪問不到網路)要拋出一個異常,而這個異常的錯誤資訊要從字串資來源程式集中擷取(如:System.SR.dll),但是程式在GAC(全域程式集緩衝,在 "\Windows\" 目錄)和程式目錄(如:"\Program Files\SmartDeviceApp1")都找不到這個程式集,所以拋出了一個“無法找到資來源程式集”或"Could not find resource assembly"的異常。說得直白一點,就是程式在拋出一個異常的時候,又遇到錯誤並拋出一個新的異常。所以我們看到的“無法找到資來源程式集”的異常資訊,並非是程式真正的錯誤資訊。

有些朋友就鬱悶了,我的 Windows Mobile 5.0 明明安裝了(手工複製到裝置上執行並安裝或者在偵錯工具的時候自動安裝)System_SR_CHS.cab(中文簡體的資來源程式集安裝包),所以 System.SR.dll 和 System.SR.Resources.zh-CHS.dll 這兩個程式集應該都已經被安裝到 GAC 了,怎麼程式還是找不到這兩個程式集呢?對於這個問題,很可能是 System.SR.dll 和 System.SR.Resources.zh-CHS.dll 這兩個程式集並沒有被成功安裝到 GAC。我們可以通過PC的資源管理員瀏覽裝置的 "\Windows\" 目錄看個究竟。如果這兩個檔案是按原來的檔案名稱(即 "System.SR.dll" 和 "System.SR.Resources.zh-CHS.dll")存放在"\Windows\"目錄,那麼證明它們沒有被成功安裝到GAC。安裝成功的話,它們的檔案名稱應該是類似 "GAC_System.SR_v1_0_5000_0_cneutral_1.dll" 和 "GAC_System.SR.resources_v1_0_5000_0_czh-CHS_1.dll"。

現在我們知道原因了,下面就介紹如何解決它。

比較保險的做法是在智慧型裝置項目中引用 System.SR.dll 這個程式集。在部署的時候,這個檔案就會被複製到程式目錄,打包的時候檔案會被包含在產生的CAB檔案中。System.SR.dll 的檔案大小是93.6KB,會增加不少智慧型裝置應用程式的儲存記憶體空間。



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。