MissingSatelliteAssemblyException Class

Definition

Исключение возникает при отсутствии вспомогательной сборки для ресурсов языка и региональных параметров по умолчанию.The exception that is thrown when the satellite assembly for the resources of the default culture is missing.

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
Public Class MissingSatelliteAssemblyException
Inherits SystemException
Inheritance
MissingSatelliteAssemblyException
Attributes

Examples

В следующем примере используется атрибут NeutralResourcesLanguageAttribute, чтобы указать, что английский является культурой приложения по умолчанию и что его ресурсы хранятся во вспомогательной сборке.The following example uses the NeutralResourcesLanguageAttribute attribute to indicate that English is the app's default culture and that its resources are stored in a satellite assembly. Сам пример включает ресурсы в файлах. txt для английской и французской культур, как описано в следующей таблице.The example itself includes resources in .txt files for the English and French cultures, as described in the following table:

Язык и региональные параметрыCulture Имя или значение ресурсаResource name/value Имя файлаFile name
АнглийскийEnglish Greet = ПриветGreet=Hello Greet. EN. txtGreet.en.txt
ФранцузскийFrench Greet = BonjourGreet=Bonjour Greet. fr. txtGreet.fr.txt

Следующий исходный код создает приложение, которое изменяет текущий язык и региональные параметры пользовательского интерфейса на французский (Франция), а затем в Русский (Россия) и отображает в обоих случаях соответствующий ресурс, зависящий от языка и региональных параметров.The following source code builds an app that changes the current UI culture first to French (France) and then to Russian (Russia) and displays an appropriate culture-specific resource in both cases.

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# версии примера можно использовать следующий пакетный файл.You can use the following batch file to build and execute the C# version of the example. Если используется Visual Basic, замените csc на vbcи расширение .cs на .vb.If you're using Visual Basic, replace csc with vbc, and replace the .cs extension with .vb. При выполнении этого примера отображается строка на французском языке, но при этом выдается исключение MissingSatelliteAssemblyException, если текущий язык и региональные параметры — Русский (Россия).When the example is executed, it displays a French language string but throws a MissingSatelliteAssemblyException exception when the current culture is Russian (Russia). Это обусловлено тем, что вспомогательная сборка Ен\хелловорлд.длл, содержащая ресурсы языка и региональных параметров по умолчанию, не существует.This is because the satellite assembly en\HelloWorld.dll that contains the resources of the default culture does not exist.

  
vbc HelloWorld.vb  
  
md fr  
resgen Greet.fr.txt  
al /out:fr\HelloWorld.resources.dll /culture:fr /embed:GreetResources.fr.resources  
  
HelloWorld  
  

Для сборки и выполнения Visual Basic версии примера можно использовать следующий пакетный файл.You can use the following batch file to build and execute the Visual Basic version of the example. Если вы используете C#, замените vbc cscи замените расширение .vb на .cs.If you're using C#, replace vbc with csc, and replace the .vb extension with .cs. При выполнении этого примера отображается строка на французском языке, если текущий язык и региональные параметры пользовательского интерфейса имеют значение французский (Франция).When the example is executed, it displays a French language string when the current UI culture is French (France). Если текущий язык и региональные параметры пользовательского интерфейса — Россия (Русский), отображается строка на английском языке, так как ресурсы русского языка не существуют, но диспетчер ресурсов может загружать ресурсы из вспомогательной сборки по умолчанию en\HelloWorld2.dll.When the current UI culture is Russia (Russian), it displays an English language string because Russian language resources do not exist, but the resource manager is able to load the resources of the default culture from the satellite assembly 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  
  

Remarks

Культура по умолчанию — это язык и региональные параметры, ресурсы которых загружаются, если не удается найти соответствующие ресурсы для конкретного языка и региональных параметров.The default culture is the culture whose resources are loaded if the appropriate culture-specific resources cannot be found. По умолчанию ресурсы для языка и региональных параметров по умолчанию находятся в основной сборке, а MissingManifestResourceException возникает, если диспетчер ресурсов пытается получить, но не может найти ресурс для языка и региональных параметров по умолчанию.By default, resources for the default culture are located in the main assembly, and a MissingManifestResourceException is thrown if the resource manager tries to retrieve but cannot find a resource for the default culture. Однако .NET Framework загрузит ресурсы для языка и региональных параметров по умолчанию приложения из вспомогательной сборки, если атрибут NeutralResourcesLanguageAttribute задает значение UltimateResourceFallbackLocation.Satellite для параметра location.However, the .NET Framework will load the resources for an app's default culture from a satellite assembly if the NeutralResourcesLanguageAttribute attribute specifies a value of UltimateResourceFallbackLocation.Satellite for the location parameter. В этом случае MissingSatelliteAssemblyException исключение возникает, когда диспетчер ресурсов пытается извлечь ресурс языка и региональных параметров по умолчанию, а вспомогательная сборка для языка и региональных параметров, указанных в атрибуте NeutralResourcesLanguageAttribute, отсутствует.When this is the case, the MissingSatelliteAssemblyException exception is thrown when the resource manager tries to retrieve a resource of the default culture and the satellite assembly for the culture specified in the NeutralResourcesLanguageAttribute attribute is missing. Обратите внимание, что исключение создается методом извлечения ресурса, например ResourceManager.GetString или ResourceManager.GetObject, а не при создании экземпляра объекта ResourceManager.Note that the exception is thrown by a resource retrieval method such as ResourceManager.GetString or ResourceManager.GetObject, and not when the ResourceManager object is instantiated.

MissingSatelliteAssemblyException использует COR_E_MISSINGSATELLITEASSEMBLY HRESULT, значение которого равно 0x80131536.MissingSatelliteAssemblyException uses the HRESULT COR_E_MISSINGSATELLITEASSEMBLY, which has the value 0x80131536.

MissingSatelliteAssemblyException использует реализацию Equals по умолчанию, которая поддерживает равенство ссылок.MissingSatelliteAssemblyException uses the default Equals implementation, which supports reference equality.

Список начальных значений свойств для экземпляра класса MissingSatelliteAssemblyException см. в разделе Конструкторы MissingSatelliteAssemblyException.For a list of initial property values for an instance of the MissingSatelliteAssemblyException class, see the MissingSatelliteAssemblyException constructors.

Note

Следует всегда использовать атрибут NeutralResourcesLanguageAttribute, чтобы определить язык и региональные параметры по умолчанию для приложения, чтобы при недоступности ресурса для определенного языка и региональных параметров приложение отображало допустимое поведение.You should always use the NeutralResourcesLanguageAttribute attribute to define your app's default culture so that if a resource for a specific culture is unavailable, your application will display acceptable behavior.

Constructors

MissingSatelliteAssemblyException()

Инициализирует новый экземпляр класса MissingSatelliteAssemblyException стандартными свойствами.Initializes a new instance of the MissingSatelliteAssemblyException class with default properties.

MissingSatelliteAssemblyException(SerializationInfo, StreamingContext)

Инициализирует новый экземпляр класса MissingSatelliteAssemblyException из сериализованных данных.Initializes a new instance of the MissingSatelliteAssemblyException class from serialized data.

MissingSatelliteAssemblyException(String)

Инициализирует новый экземпляр класса MissingSatelliteAssemblyException с указанным сообщением об ошибке.Initializes a new instance of the MissingSatelliteAssemblyException class with the specified error message.

MissingSatelliteAssemblyException(String, Exception)

Инициализирует новый экземпляр класса MissingSatelliteAssemblyException с указанным сообщением об ошибке и ссылкой на внутреннее исключение, которое является причиной этого исключения.Initializes a new instance of the MissingSatelliteAssemblyException class with a specified error message and a reference to the inner exception that is the cause of this exception.

MissingSatelliteAssemblyException(String, String)

Инициализирует новый экземпляр класса MissingSatelliteAssemblyException с заданным сообщением об ошибке и именем нейтрального языка и региональных параметров.Initializes a new instance of the MissingSatelliteAssemblyException class with a specified error message and the name of a neutral culture.

Properties

CultureName

Получает имя языка и региональных параметров по умолчанию.Gets the name of the default culture.

Data

Возвращает коллекцию пар «ключ-значение», предоставляющую дополнительные сведения об исключении.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Inherited from Exception)
HelpLink

Получает или задает ссылку на файл справки, связанный с этим исключением.Gets or sets a link to the help file associated with this exception.

(Inherited from Exception)
HResult

Возвращает или задает HRESULT — кодированное числовое значение, присвоенное определенному исключению.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Inherited from Exception)
InnerException

Возвращает экземпляр класса Exception, который вызвал текущее исключение.Gets the Exception instance that caused the current exception.

(Inherited from Exception)
Message

Возвращает сообщение, описывающее текущее исключение.Gets a message that describes the current exception.

(Inherited from Exception)
Source

Возвращает или задает имя приложения или объекта, вызывавшего ошибку.Gets or sets the name of the application or the object that causes the error.

(Inherited from Exception)
StackTrace

Получает строковое представление непосредственных кадров в стеке вызова.Gets a string representation of the immediate frames on the call stack.

(Inherited from Exception)
TargetSite

Возвращает метод, создавший текущее исключение.Gets the method that throws the current exception.

(Inherited from Exception)

Methods

Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetBaseException()

При переопределении в производном классе возвращает исключение Exception, которое является первопричиной одного или нескольких последующих исключений.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Inherited from Exception)
GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetObjectData(SerializationInfo, StreamingContext)

При переопределении в производном классе задает объект SerializationInfo со сведениями об исключении.When overridden in a derived class, sets the SerializationInfo with information about the exception.

(Inherited from Exception)
GetType()

Возвращает тип среды выполнения текущего экземпляра.Gets the runtime type of the current instance.

(Inherited from Exception)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString()

Создает и возвращает строковое представление текущего исключения.Creates and returns a string representation of the current exception.

(Inherited from Exception)

Events

SerializeObjectState

Возникает, когда исключение сериализовано для создания объекта состояния исключения, содержащего сериализованные данные об исключении.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Inherited from Exception)

Applies to

See also