文章編號: 897297 - 上次校閱: 2007年11月14日 - 版次: 2.7 如何使用位於不同於應用程式的基底資料夾在 Visual Basic.NET 中或在 Visual Basic 2005 中的資料夾中的組件
在此頁中簡介本文將告訴您,如何取用位於非與應用程式基底資料夾 Microsoft Visual Basic.NET 或 Microsoft Visual Basic 2005 方案中不同的資料夾中的組件。 其他相關資訊您在執行 Visual Basic.NET 或 Visual Basic 2005 的應用程式時常用的語言執行階段 (CLR) 期望找出應用程式使用全域組件快取] 或 [應用程式資料夾中的任何組件。 當 CLR 並不成功連結到組件時,會收到類似下列的錯誤訊息: System.IO.FileNotFoundException 檔案或組件名稱 AssemblyName,或其相依性的其中之一,但是找不到。 方法 1: 在全域組件快取中安裝組件這個方法需要您簽署使用強式名稱組件。若要使用強式名稱簽署組件並再將組件安裝在全域組件] 快取請依照下列步驟執行:
http://msdn2.microsoft.com/en-us/library/6axd4fx6(vs.71).aspx
(http://msdn2.microsoft.com/en-us/library/6axd4fx6(vs.71).aspx)
如需有關如何簽署使用強式名稱組件,請造訪下列 MSDN 網站:http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx
(http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx)
附註如果許多組件存在,而且組件 Microsoft 元件物件模型 (COM) 物件上有相依性,這個方法可能是困難且耗時。任何組件相依性也必須是由 CLR 設定為可探索的。因此,如果您計劃您的組件安裝到全域組件快取,也安裝相依性組件至全域組件快取。方法 2: 使用一個 Application.Config 檔案與程式碼基底標記一起利用應用程式組態檔中,您可以指定的 CLR 應該尋找相依組件的位置。特別是,使用 程式碼基底 標記。利用這個標記您可以將您的組件放在個別的資料夾。不過,這個方法仍然需要您使用強式名稱命名程式庫組件。如果要使用應用程式組態檔,請依照下列步驟執行:
指定組件的位置 http://msdn2.microsoft.com/en-us/library/4191fzwb(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/4191fzwb(vs.71).aspx) <codebase> 項目 http://msdn2.microsoft.com/en-us/library/efs781xb(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/efs781xb(vs.71).aspx) 執行階段如何找出組件 http://msdn2.microsoft.com/en-us/library/yx7xezcf(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/yx7xezcf(vs.71).aspx) 方法 3: 使用 System.reflection.assembly.LoadFrom 方法這個方法會使用 Assembly.LoadFrom 方法明確載入的組件,從完整的路徑名稱及完整的檔案名稱。要這麼做,請您執行下列步驟:
如需有關 Assembly.LoadFrom 方法的詳細資訊,請造訪下列 MSDN 網站: http://msdn2.microsoft.com/en-us/library/system.reflection.assembly.loadfrom(vs.71).aspx
(http://msdn2.microsoft.com/en-us/library/system.reflection.assembly.loadfrom(vs.71).aspx)
方法 4: 使用 AssemblyResolve 事件AssemblyResolve 事件發生於每當 CLR 未成功嘗試繫結至組件。應用程式中使用 AddHandler 方法,來新增事件處理常式,每當 AssemblyResolve 事件發生時便會傳回正確的組件。附註這個方法並 不 需要藉由使用強式名稱命名組件。 AssemblyResolve 事件處理常式必須傳回 [組件] 物件,表示 CLR 必須繫結的組件。通常您可以使用 Assembly.LoadFrom 方法載入組件。然後,傳回載入的組件。 附註事件處理常式必須位於不包含任何 relocated 組件參考的程序。此外,取決於 relocated 組件的任何程式碼呼叫之前,必須呼叫事件處理常式。 下列程式碼是使用 AssemblyResolve 事件來載入組件的應用程式的範例: http://msdn2.microsoft.com/en-us/library/system.appdomain.assemblyresolve(vs.71).aspx
(http://msdn2.microsoft.com/en-us/library/system.appdomain.assemblyresolve(vs.71).aspx)
?考這篇文章中的資訊適用於:
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:897297?
(http://support.microsoft.com/kb/897297/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群立即取得協助文章翻譯 |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


回此頁最上方
