Поделиться через


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 Имя/значение ресурса Имя файла
Английский Greet=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#, замените vbccscна , а расширение — .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  

Комментарии

Язык и региональные параметры по умолчанию — это язык и региональные параметры, ресурсы которых загружаются, если не удается найти соответствующие ресурсы для конкретного языка и региональных параметров. По умолчанию ресурсы для языка и региональных параметров по умолчанию находятся в сборке main, а если диспетчер ресурсов пытается получить, но не может найти ресурс для языка и MissingManifestResourceException региональных параметров по умолчанию. Однако платформа .NET Framework загрузит ресурсы для языка и региональных параметров приложения по умолчанию из вспомогательной сборки, если NeutralResourcesLanguageAttribute атрибут задает значение UltimateResourceFallbackLocation.Satellite для параметра location. В этом случае возникает исключение, MissingSatelliteAssemblyException когда диспетчер ресурсов пытается получить ресурс языка и региональных параметров по умолчанию, а вспомогательная сборка для языка и региональных параметров, указанных в атрибуте NeutralResourcesLanguageAttribute , отсутствует. Обратите внимание, что исключение создается методом извлечения ресурсов, таким как ResourceManager.GetString или ResourceManager.GetObject, а не при создании экземпляра ResourceManager объекта.

MissingSatelliteAssemblyException использует COR_E_MISSINGSATELLITEASSEMBLY HRESULT со значением 0x80131536.

MissingSatelliteAssemblyException использует реализацию по умолчанию Equals , которая поддерживает равенство ссылок.

Список начальных значений свойств для экземпляра класса см. в MissingSatelliteAssemblyExceptionMissingSatelliteAssemblyException разделе Конструкторы.

Примечание

Всегда следует использовать 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)

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

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