MissingSatelliteAssemblyException 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
當預設文化特性之資源的附屬組件遺漏時,所擲回的例外狀況。
public ref class MissingSatelliteAssemblyException : SystemException
public class MissingSatelliteAssemblyException : SystemException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class MissingSatelliteAssemblyException : SystemException
type MissingSatelliteAssemblyException = class
inherit SystemException
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type MissingSatelliteAssemblyException = class
inherit SystemException
Public Class MissingSatelliteAssemblyException
Inherits SystemException
- 繼承
- 屬性
範例
下列範例會 NeutralResourcesLanguageAttribute 使用 屬性來指出英文是應用程式的預設文化特性,而且其資源會儲存在附屬元件中。 此範例本身包含英文和法文文化特性 .txt 檔案中的資源,如下表所述:
文化特性 | 資源名稱/值 | 檔案名稱 |
---|---|---|
英文 | Greet=Hello | Greet.en.txt |
法文 | Greet=Bonjour | Greet.fr.txt |
下列原始程式碼會建置應用程式,先將目前的UI文化特性變更為法文 (法國) ,然後再變更為俄文 (俄羅斯) ,並在這兩種情況下顯示適當的文化特性特定資源。
using System;
using System.Globalization;
using System.Resources;
using System.Threading;
[assembly:NeutralResourcesLanguageAttribute("en", UltimateResourceFallbackLocation.Satellite)]
public class Example
{
public static void Main()
{
ResourceManager rm = new ResourceManager("GreetResources", typeof(Example).Assembly);
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
Console.WriteLine("The current UI culture is {0}", Thread.CurrentThread.CurrentUICulture.Name);
Console.WriteLine(rm.GetString("Greet"));
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU");
Console.WriteLine("The current UI culture is {0}", Thread.CurrentThread.CurrentUICulture.Name);
Console.WriteLine(rm.GetString("Greet"));
}
}
// The example displays the following output when created using BuildNoDefault.bat:
// The current UI culture is fr-FR
// Bonjour
// The current UI culture is ru-RU
//
// Unhandled Exception: System.Resources.MissingSatelliteAssemblyException:
// The satellite assembly named "HelloWorld.resources.dll, PublicKeyToken=" for fallback culture
// "en" either could not be found or could not be loaded. This is generally a setup problem.
// Please consider reinstalling or repairing the application.
// at System.Resources.ManifestBasedResourceGroveler.HandleSatelliteMissing()
// at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo cult
// ure, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackC
// rawlMark& stackMark)
// at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture
// , Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
// at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean
// createIfNotExists, Boolean tryParents)
// at System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
// at Example.Main()
// The example displays the following output when created using BuildDefault.bat:
// The current UI culture is fr-FR
// Bonjour
// The current UI culture is ru-RU
// Hello
Imports System.Globalization
Imports System.Resources
Imports System.Threading
<assembly:NeutralResourcesLanguageAttribute("en", UltimateResourceFallbackLocation.Satellite)>
Module Example
Public Sub Main()
Dim rm As New ResourceManager("GreetResources", GetType(Example).Assembly)
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR")
Console.WriteLine("The current UI culture is {0}", Thread.CurrentThread.CurrentUICulture.Name)
Console.WriteLine(rm.GetString("Greet"))
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU")
Console.WriteLine("The current UI culture is {0}", Thread.CurrentThread.CurrentUICulture.Name)
Console.WriteLine(rm.GetString("Greet"))
End Sub
End Module
' The example displays the following output:
' The current UI culture is fr-FR
' Bonjour
' The current UI culture is ru-RU
'
' Unhandled Exception: System.Resources.MissingSatelliteAssemblyException:
' The satellite assembly named "HelloWorld.resources.dll, PublicKeyToken=" for fallback culture
' "en" either could not be found or could not be loaded. This is generally a setup problem.
' Please consider reinstalling or repairing the application.
' at System.Resources.ManifestBasedResourceGroveler.HandleSatelliteMissing()
' at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo cult
' ure, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackC
' rawlMark& stackMark)
' at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture
' , Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
' at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean
' createIfNotExists, Boolean tryParents)
' at System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
' at Example.Main()
' The example displays the following output when created using BuildDefault.bat:
' The current UI culture is fr-FR
' Bonjour
' The current UI culture is ru-RU
' Hello
您可以使用下列批次處理檔來建置和執行範例的 C# 版本。 如果使用 Visual Basic,請將 csc
取代成 vbc
,並將 .cs
副檔名取代成 .vb
。 執行此範例時,會顯示法文語言字串,但在目前文化特性為俄文 (俄羅斯) 時擲回 MissingSatelliteAssemblyException 例外狀況。 這是因為包含預設文化特性資源的附屬元件 en\HelloWorld.dll 不存在。
vbc HelloWorld.vb
md fr
resgen Greet.fr.txt
al /out:fr\HelloWorld.resources.dll /culture:fr /embed:GreetResources.fr.resources
HelloWorld
您可以使用下列批處理檔來建置和執行範例的 Visual Basic 版本。 如果您使用 C#,請將 取代 vbc
為 csc
,並以 取代 .vb
延伸模組 .cs
。 執行此範例時,當目前的UI文化特性為法文 (法國) 時,會顯示法文語言字串。 當目前的UI文化特性是俄羅斯 (俄文) 時,它會顯示英文字符串,因為俄文語言資源不存在,但資源管理員可以從附屬元件載入預設文化特性的資源 en\HelloWorld2.dll。
vbc HelloWorld.vb /out:HelloWorld2.exe
md fr
resgen GreetResources.fr.txt
al /out:fr\HelloWorld2.resources.dll /culture:fr /embed:GreetResources.fr.resources
md en
resgen GreetResources.en.txt
al /out:en\HelloWorld2.resources.dll /culture:en /embed:GreetResources.en.resources
HelloWorld2
備註
如果找不到適當的特定文化特性資源,則預設文化特性是載入其資源的文化特性。 根據預設,預設文化特性的資源位於主要元件中, MissingManifestResourceException 如果資源管理員嘗試擷取,但找不到預設文化特性的資源,則會擲回 。 不過,如果NeutralResourcesLanguageAttribute屬性指定location參數的值UltimateResourceFallbackLocation.Satellite,.NET Framework 會從附屬元件載入應用程式預設文化特性的資源。 在此情況下, MissingSatelliteAssemblyException 當資源管理員嘗試擷取預設文化特性的資源,而屬性中指定的 NeutralResourcesLanguageAttribute 文化特性附屬元件遺失時,就會擲回例外狀況。 請注意,例外狀況是由 或 ResourceManager.GetObject等ResourceManager.GetString資源擷取方法擲回,而不是在物件具現化時ResourceManager擲回。
MissingSatelliteAssemblyException 會使用 HRESULT COR_E_MISSINGSATELLITEASSEMBLY,其值為 0x80131536。
MissingSatelliteAssemblyException 會使用支持參考相等的預設 Equals 實作。
如需 類別實例 MissingSatelliteAssemblyException 的初始屬性值清單,請參閱建 MissingSatelliteAssemblyException 構函式。
注意
您應該一律使用 NeutralResourcesLanguageAttribute 屬性來定義應用程式的預設文化特性,如此一來,如果特定文化特性的資源無法使用,您的應用程式就會顯示可接受的行為。
建構函式
MissingSatelliteAssemblyException() |
使用預設屬性,初始化 MissingSatelliteAssemblyException 類別的新執行個體。 |
MissingSatelliteAssemblyException(SerializationInfo, StreamingContext) |
已淘汰.
從序列化資料中,初始化 MissingSatelliteAssemblyException 類別的新執行個體。 |
MissingSatelliteAssemblyException(String) |
使用指定的錯誤訊息,初始化 MissingSatelliteAssemblyException 類別的新執行個體。 |
MissingSatelliteAssemblyException(String, Exception) |
使用指定的錯誤訊息以及造成此例外狀況的內部例外狀況的參考,初始化 MissingSatelliteAssemblyException 類別的新執行個體。 |
MissingSatelliteAssemblyException(String, String) |
使用指定的錯誤訊息和中性文化特性的名稱,初始化 MissingSatelliteAssemblyException 類別的新執行個體。 |
屬性
CultureName |
取得預設文化特性的名稱。 |
Data |
取得鍵值組的集合,這些鍵值組會提供關於例外狀況的其他使用者定義資訊。 (繼承來源 Exception) |
HelpLink |
取得或設定與這個例外狀況相關聯的說明檔連結。 (繼承來源 Exception) |
HResult |
取得或設定 HRESULT,它是指派給特定例外狀況的編碼數值。 (繼承來源 Exception) |
InnerException |
取得造成目前例外狀況的 Exception 執行個體。 (繼承來源 Exception) |
Message |
取得描述目前例外狀況的訊息。 (繼承來源 Exception) |
Source |
取得或設定造成錯誤的應用程式或物件的名稱。 (繼承來源 Exception) |
StackTrace |
取得呼叫堆疊上即時運算框架的字串表示。 (繼承來源 Exception) |
TargetSite |
取得擲回目前例外狀況的方法。 (繼承來源 Exception) |
方法
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
GetBaseException() |
在衍生類別中覆寫時,傳回一或多個後續的例外狀況的根本原因 Exception。 (繼承來源 Exception) |
GetHashCode() |
做為預設雜湊函式。 (繼承來源 Object) |
GetObjectData(SerializationInfo, StreamingContext) |
已淘汰.
在衍生類別中覆寫時,使用例外狀況的資訊設定 SerializationInfo。 (繼承來源 Exception) |
GetType() |
取得目前執行個體的執行階段類型。 (繼承來源 Exception) |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
ToString() |
建立並傳回目前例外狀況的字串表示。 (繼承來源 Exception) |
事件
SerializeObjectState |
已淘汰.
當例外狀況序列化,以建立包含例外狀況相關序列化資料的例外狀況狀態物件時,就會發生此事件。 (繼承來源 Exception) |