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
- Наследование
- Атрибуты
Примеры
В следующем примере атрибут используется 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) |