다음을 통해 공유


MissingSatelliteAssemblyException 클래스

정의

기본 문화권의 리소스에 대한 위성 어셈블리가 없는 경우 throw되는 예외입니다.

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을 사용하는 경우 cscvbc로 바꾸고 .cs 확장을 .vb로 바꿉니다. 예제가 실행되면 프랑스어 문자열을 표시하지만 현재 문화권이 러시아어(러시아)인 경우 예외를 throw합니다 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#을 사용하는 경우 를 로 csc바꾸고 vbc 확장을 로 .cs바꿉 .vb 니다. 예제가 실행되면 현재 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 리소스 관리자가 검색을 시도하지만 기본 문화권에 대한 리소스를 찾을 수 없는 경우 이 throw됩니다. 그러나 특성이 위치 매개 변수의 값을 UltimateResourceFallbackLocation.Satellite 지정하는 경우 NeutralResourcesLanguageAttribute .NET Framework 위성 어셈블리에서 앱의 기본 문화권에 대한 리소스를 로드합니다. 이 경우 MissingSatelliteAssemblyException 리소스 관리자가 기본 문화권의 리소스를 검색하려고 할 때 예외가 throw되고 특성에 NeutralResourcesLanguageAttribute 지정된 문화권에 대한 위성 어셈블리가 누락됩니다. 예외는 개체가 인스턴스화될 때가 아니라 또는 ResourceManager.GetObject와 같은 ResourceManager.GetString 리소스 검색 메서드에 ResourceManager 의해 throw됩니다.

MissingSatelliteAssemblyException 는 값이 0x80131536 HRESULT COR_E_MISSINGSATELLITEASSEMBLY 사용합니다.

MissingSatelliteAssemblyException 기본값을 사용 하 여 Equals 구현을 참조 일치를 지원 합니다.

클래스의 instance MissingSatelliteAssemblyException 대한 초기 속성 값 목록은 생성자를 참조 MissingSatelliteAssemblyException 하세요.

참고

항상 사용 해야 하는 NeutralResourcesLanguageAttribute 애플리케이션 허용 동작을 표시는 특정 문화권의 리소스를 사용할 수 없는 경우 앱의 기본 문화권을 정의 하는 특성입니다.

생성자

MissingSatelliteAssemblyException()

기본 속성을 사용하여 MissingSatelliteAssemblyException 클래스의 새 인스턴스를 초기화합니다.

MissingSatelliteAssemblyException(SerializationInfo, StreamingContext)
사용되지 않음.

serialize된 데이터로부터 MissingSatelliteAssemblyException 클래스의 새 인스턴스를 초기화합니다.

MissingSatelliteAssemblyException(String)

지정된 오류 메시지를 사용하여 MissingSatelliteAssemblyException 클래스의 새 인스턴스를 초기화합니다.

MissingSatelliteAssemblyException(String, Exception)

지정된 오류 메시지와 해당 예외의 원인인 내부 예외에 대한 참조를 사용하여 MissingSatelliteAssemblyException 클래스의 새 인스턴스를 초기화합니다.

MissingSatelliteAssemblyException(String, String)

지정된 오류 메시지와 중립 culture의 이름을 사용하여 MissingSatelliteAssemblyException 클래스의 새 인스턴스를 초기화합니다.

속성

CultureName

기본 문화의 이름을 가져옵니다.

Data

예외에 대한 사용자 정의 정보를 추가로 제공하는 키/값 쌍 컬렉션을 가져옵니다.

(다음에서 상속됨 Exception)
HelpLink

이 예외와 연결된 도움말 파일에 대한 링크를 가져오거나 설정합니다.

(다음에서 상속됨 Exception)
HResult

특정 예외에 할당된 코드화된 숫자 값인 HRESULT를 가져오거나 설정합니다.

(다음에서 상속됨 Exception)
InnerException

현재 예외를 발생시킨 Exception 인스턴스를 가져옵니다.

(다음에서 상속됨 Exception)
Message

현재 예외를 설명하는 메시지를 가져옵니다.

(다음에서 상속됨 Exception)
Source

오류를 발생시키는 애플리케이션 또는 개체의 이름을 가져오거나 설정합니다.

(다음에서 상속됨 Exception)
StackTrace

호출 스택의 직접 실행 프레임 문자열 표현을 가져옵니다.

(다음에서 상속됨 Exception)
TargetSite

현재 예외를 throw하는 메서드를 가져옵니다.

(다음에서 상속됨 Exception)

메서드

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetBaseException()

파생 클래스에서 재정의된 경우 하나 이상의 후속 예외의 근본 원인이 되는 Exception 을 반환합니다.

(다음에서 상속됨 Exception)
GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetObjectData(SerializationInfo, StreamingContext)
사용되지 않음.

파생 클래스에서 재정의된 경우 예외에 관한 정보를 SerializationInfo 에 설정합니다.

(다음에서 상속됨 Exception)
GetType()

현재 인스턴스의 런타임 형식을 가져옵니다.

(다음에서 상속됨 Exception)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 예외에 대한 문자열 표현을 만들고 반환합니다.

(다음에서 상속됨 Exception)

이벤트

SerializeObjectState
사용되지 않음.

예외에 대한 serialize된 데이터가 들어 있는 예외 상태 개체가 만들어지도록 예외가 serialize될 때 발생합니다.

(다음에서 상속됨 Exception)

적용 대상

추가 정보