MissingSatelliteAssemblyException 類別

定義

當預設文化特性之資源的附屬組件遺漏時,所擲回的例外狀況。

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
繼承
MissingSatelliteAssemblyException
屬性

範例

下列範例會 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#,請將 取代 vbccsc ,並以 取代 .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.GetObjectResourceManager.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)

適用於

另請參閱