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 файлы для языков и региональных параметров английского и французского языков, как описано в следующей таблице:

culture Имя и значение ресурса Имя файла
Английский Hello=Hello Greet.en.txt
Французский Greet=Bonjour Greet.fr.txt

Следующий исходный код создает приложение, которое сначала изменяет текущий язык и региональные параметры пользовательского интерфейса на французский (Франция), а затем на русский (Россия) и отображает соответствующий ресурс, зависящий от языка и региональных параметров, в обоих случаях.

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на . При выполнении примера отображается строка французского языка, если текущий язык и региональные параметры пользовательского интерфейса — французский (Франция). Если текущий язык и региональные параметры пользовательского интерфейса — Россия (русский), отображается строка английского языка, так как ресурсы русского языка не существуют, но диспетчер ресурсов может загрузить ресурсы языка и региональных параметров по умолчанию из вспомогательной сборки 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 , если диспетчер ресурсов пытается получить, но не может найти ресурс для языка и региональных параметров по умолчанию. Однако платформа .NET Framework загрузит ресурсы для языка и региональных параметров приложения по умолчанию из вспомогательной сборки, если NeutralResourcesLanguageAttribute атрибут задает значение UltimateResourceFallbackLocation.Satellite параметра расположения. В этом случае возникает исключение, MissingSatelliteAssemblyException когда диспетчер ресурсов пытается получить ресурс языка и региональных параметров по умолчанию и вспомогательной сборки для языка и региональных параметров, указанных в атрибуте NeutralResourcesLanguageAttribute , отсутствует. Обратите внимание, что исключение создается методом извлечения ресурса, например ResourceManager.GetString или ResourceManager.GetObject, а не при создании экземпляра ResourceManager объекта.

MissingSatelliteAssemblyException использует COR_E_MISSINGSATELLITEASSEMBLY HRESULT, имеющий значение 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)

Применяется к

См. также раздел