ResourceManager Sınıf

Tanım

Çalışma zamanında kültüre özgü kaynaklara uygun erişim sağlayan bir kaynak yöneticisini temsil eder.Represents a resource manager that provides convenient access to culture-specific resources at run time.

public ref class ResourceManager
public class ResourceManager
[System.Serializable]
public class ResourceManager
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ResourceManager
type ResourceManager = class
[<System.Serializable>]
type ResourceManager = class
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ResourceManager = class
Public Class ResourceManager
Devralma
ResourceManager
Türetilmiş
Öznitelikler

Örnekler

Aşağıdaki örnek, bir ana derlemeden ve bir uydu derlemesinden dize kaynaklarını elde etmek için açık bir kültür ve örtük geçerli kullanıcı Arabirimi kültürünü nasıl kullanacağınızı gösterir.The following example demonstrates how to use an explicit culture and the implicit current UI culture to obtain string resources from a main assembly and a satellite assembly. Daha fazla bilgi için, uydu derlemeleri oluşturma konusunun "genel derleme önbelleğinde yüklü olmayan uydu derlemeleri Için dizin konumları" bölümüne bakın.For more information, see the "Directory Locations for Satellite Assemblies Not Installed in the Global Assembly Cache" section of the Creating Satellite Assemblies topic.

Bu örneği çalıştırmak için:To run this example:

  1. Uygulama dizininde aşağıdaki kaynak dizelerini içeren rmc.txt adlı bir dosya oluşturun:In the app directory, create a file named rmc.txt that contains the following resource strings:

    
    day=Friday
    year=2006
    holiday="Cinco de Mayo"
    
    
  2. rmc.txt giriş dosyasından RMC. resources kaynak dosyasını aşağıdaki gibi oluşturmak için kaynak dosyası oluşturucusunu kullanın:Use the Resource File Generator to generate the rmc.resources resource file from the rmc.txt input file as follows:

    resgen rmc.txt
    
  3. Uygulama dizininin bir alt dizinini oluşturun ve "es-MX" olarak adlandırın.Create a subdirectory of the app directory and name it "es-MX". Bu, sonraki üç adımda oluşturacağınız uydu derlemesinin kültür adıdır.This is the culture name of the satellite assembly that you will create in the next three steps.

  4. Aşağıdaki kaynak dizelerini içeren es-MX dizininde rmc.es-MX.txt adlı bir dosya oluşturun:Create a file named rmc.es-MX.txt in the es-MX directory that contains the following resource strings:

    
    day=Viernes
    year=2006
    holiday="Cinco de Mayo"
    
    
  5. rmc.es-MX.txt giriş dosyasından rmc.es-MX. resources kaynak dosyasını aşağıdaki gibi oluşturmak için kaynak dosyası oluşturucusunu kullanın:Use the Resource File Generator to generate the rmc.es-MX.resources resource file from the rmc.es-MX.txt input file as follows:

    resgen rmc.es-MX.txt
    
  6. Bu örnekteki dosya adının RMC. vb veya rmc.cs olduğunu varsayın.Assume that the filename for this example is rmc.vb or rmc.cs. Aşağıdaki kaynak kodu bir dosyaya kopyalayın.Copy the following source code into a file. Sonra derlemeyi derleyin ve ana derleme kaynak dosyası olan RMC. resources dosyasını yürütülebilir derlemeye ekleyin.Then compile it and embed the main assembly resource file, rmc.resources, in the executable assembly. Visual Basic derleyicisini kullanıyorsanız söz dizimi şöyledir:If you are using the Visual Basic compiler, the syntax is:

    vbc rmc.vb /resource:rmc.resources
    

    C# derleyicisi için karşılık gelen sözdizimi şöyledir:The corresponding syntax for the C# compiler is:

    csc /resource:rmc.resources rmc.cs
    
  7. Uydu derlemesi oluşturmak için derleme Bağlayıcısı 'nı kullanın.Use the Assembly Linker to create a satellite assembly. Uygulamanın temel adı RMC ise, uydu derleme adının rmc.resources.dll olması gerekir.If the base name of the app is rmc, the satellite assembly name must be rmc.resources.dll. Uydu derlemesinin es-MX dizininde oluşturulması gerekir.The satellite assembly should be created in the es-MX directory. Es-MX geçerli dizinise şu komutu kullanın:If es-MX is the current directory, use this command:

    al /embed:rmc.es-MX.resources /c:es-MX /out:rmc.resources.dll
    
  8. Katıştırılmış kaynak dizelerini almak ve göstermek için rmc.exe çalıştırın.Run rmc.exe to obtain and display the embedded resource strings.

using System;
using System.Resources;
using System.Reflection;
using System.Threading;
using System.Globalization;

class Example
{
    public static void Main()
    {
    string day;
    string year;
    string holiday;
    string celebrate = "{0} will occur on {1} in {2}.\n";

    // Create a resource manager.
    ResourceManager rm = new ResourceManager("rmc",
                             typeof(Example).Assembly);

    Console.WriteLine("Obtain resources using the current UI culture.");

    // Get the resource strings for the day, year, and holiday
    // using the current UI culture.
    day  = rm.GetString("day");
    year = rm.GetString("year");
    holiday = rm.GetString("holiday");
    Console.WriteLine(celebrate, holiday, day, year);

    // Obtain the es-MX culture.
    CultureInfo ci = new CultureInfo("es-MX");

    Console.WriteLine("Obtain resources using the es-MX culture.");

   // Get the resource strings for the day, year, and holiday
   // using the specified culture.
    day  = rm.GetString("day", ci);
    year = rm.GetString("year", ci);
    holiday = rm.GetString("holiday", ci);
// ---------------------------------------------------------------
// Alternatively, comment the preceding 3 code statements and
// uncomment the following 4 code statements:
// ----------------------------------------------------------------
// Set the current UI culture to "es-MX" (Spanish-Mexico).
//    Thread.CurrentThread.CurrentUICulture = ci;

// Get the resource strings for the day, year, and holiday
// using the current UI culture. Use those strings to
// display a message.
//    day  = rm.GetString("day");
//    year = rm.GetString("year");
//    holiday = rm.GetString("holiday");
// ---------------------------------------------------------------

// Regardless of the alternative that you choose, display a message
// using the retrieved resource strings.
    Console.WriteLine(celebrate, holiday, day, year);
    }
}
/*
This example displays the following output:

   Obtain resources using the current UI culture.
   "5th of May" will occur on Friday in 2006.

   Obtain resources using the es-MX culture.
   "Cinco de Mayo" will occur on Viernes in 2006.
*/
Imports System.Resources
Imports System.Reflection
Imports System.Threading
Imports System.Globalization

Class Example
    Public Shared Sub Main() 
        Dim day As String
        Dim year As String
        Dim holiday As String
        Dim celebrate As String = "{0} will occur on {1} in {2}." & vbCrLf

        ' Create a resource manager. 
        Dim rm As New ResourceManager("rmc", GetType(Example).Assembly)

        Console.WriteLine("Obtain resources using the current UI culture.")

        ' Get the resource strings for the day, year, and holiday 
        ' using the current UI culture. 
        day = rm.GetString("day")
        year = rm.GetString("year")
        holiday = rm.GetString("holiday")
        Console.WriteLine(celebrate, holiday, day, year)

        ' Obtain the es-MX culture.
        Dim ci As New CultureInfo("es-MX")

        Console.WriteLine("Obtain resources using the es-MX culture.")

        ' Get the resource strings for the day, year, and holiday 
        ' using the es-MX culture.  
        day = rm.GetString("day", ci)
        year = rm.GetString("year", ci)
        holiday = rm.GetString("holiday", ci)

        ' ---------------------------------------------------------------
        ' Alternatively, comment the preceding 3 code statements and 
        ' uncomment the following 4 code statements:
        ' ----------------------------------------------------------------
        ' Set the current UI culture to "es-MX" (Spanish-Mexico).
        '    Thread.CurrentThread.CurrentUICulture = ci
        ' Get the resource strings for the day, year, and holiday 
        ' using the current UI culture. 
        '    day  = rm.GetString("day")
        '    year = rm.GetString("year")
        '    holiday = rm.GetString("holiday")
        ' ---------------------------------------------------------------

        ' Regardless of the alternative that you choose, display a message 
        ' using the retrieved resource strings.
        Console.WriteLine(celebrate, holiday, day, year)
    End Sub 
End Class
' This example displays the following output:
'Obtain resources using the current UI culture.
'"5th of May" will occur on Friday in 2006.
'
'Obtain resources using the es-MX culture.
'"Cinco de Mayo" will occur on Viernes in 2006.

Açıklamalar

Önemli

Güvenilmeyen verilerle bu sınıftan Yöntemler çağırma bir güvenlik riskidir.Calling methods from this class with untrusted data is a security risk. Bu sınıftan yalnızca güvenilir verilerle Yöntemleri çağırın.Call the methods from this class only with trusted data. Daha fazla bilgi için bkz. veri doğrulama.For more information, see Data Validation.

ResourceManagerSınıfı, bir derlemeye veya tek başına. resources dosyasından gömülü bir ikili. resources dosyasındaki kaynakları alır.The ResourceManager class retrieves resources from a binary .resources file that is embedded in an assembly or from a standalone .resources file. Bir uygulama yerelleştirilmiştir ve bu kaynak uydu Derlemeleriyledağıtılmışsa, kültüre özgü kaynaklar arar, yerelleştirilmiş bir kaynak mevcut olmadığında kaynak geri dönüşü sağlar ve kaynak Serileştirmeyi destekler.If an app has been localized and localized resources have been deployed in satellite assemblies, it looks up culture-specific resources, provides resource fallback when a localized resource does not exist, and supports resource serialization.

Masaüstü uygulamaları ve uygulamalarında kaynakları oluşturma ve yönetme hakkında daha fazla bilgi için Windows 8.x MağazasıWindows 8.x Store aşağıdaki bölümlere bakın:For more information about creating and managing resources in desktop apps and Windows 8.x MağazasıWindows 8.x Store apps, see the following sections:

Masaüstü UygulamalarıDesktop Apps

Masaüstü uygulamaları için, ResourceManager sınıf, kaynakları ikili kaynak (. resources) dosyalarından alır.For desktop apps, the ResourceManager class retrieves resources from binary resource (.resources) files. Genellikle, bir dil derleyicisi veya Derleme Bağlayıcı (AL.exe) , bu kaynak dosyalarını bir derlemeye gömer.Typically, a language compiler or the Assembly Linker (AL.exe) embeds these resource files in an assembly. Ayrıca, ResourceManager yöntemini çağırarak bir derlemeye gömülü olmayan bir. resources dosyasından kaynakları almak için de bir nesnesi kullanabilirsiniz CreateFileBasedResourceManager .You can also use a ResourceManager object to retrieve resources directly from a .resources file that is not embedded in an assembly, by calling the CreateFileBasedResourceManager method.

Dikkat

Bir ASP.NET uygulamasındaki tek başına. resources dosyalarını kullanmak XCOPY dağıtımını keser, çünkü bu kaynaklar, açıkça yöntem tarafından yayınlanana kadar kilitli olarak kalır ReleaseAllResources .Using standalone .resources files in an ASP.NET app will break XCOPY deployment, because the resources remain locked until they are explicitly released by the ReleaseAllResources method. ASP.NET uygulamalarınızla kaynak dağıtmak istiyorsanız,. resources dosyalarınızı uydu Derlemeleriyle derlemeniz gerekir.If you want to deploy resources with your ASP.NET apps, you should compile your .resources files into satellite assemblies.

Kaynak tabanlı bir uygulamada, bir. resources dosyası, kültüre özgü hiçbir kaynak bulunamazsa, kaynakları kullanılan varsayılan kültürün kaynaklarını içerir.In a resource-based app, one .resources file contains the resources of the default culture whose resources are used if no culture-specific resources can be found. Örneğin, bir uygulamanın varsayılan kültürü Ingilizce (en) ise, İngilizce dil kaynakları, Ingilizce (Birleşik Devletler) (en-US) veya Fransızca (Fransa) (fr-FR) gibi belirli bir kültür için yerelleştirilmiş kaynaklar bulunamadığında kullanılır.For example, if an app's default culture is English (en), the English language resources are used whenever localized resources cannot be found for a specific culture, such as English (United States) (en-US) or French (France) (fr-FR). Genellikle, varsayılan kültür için kaynaklar ana uygulama derlemesine katıştırılır ve diğer yerelleştirilmiş kültürlerin kaynakları uydu derlemelerine katıştırılır.Typically, the resources for the default culture are embedded in the main app assembly, and resources for other localized cultures are embedded in satellite assemblies. Uydu derlemeleri yalnızca kaynaklar içerir.Satellite assemblies contain only resources. Ana derleme ve .resources.dll Uzantısı ile aynı kök dosya adına sahiptirler.They have the same root file name as the main assembly and an extension of .resources.dll. Derlemeleri genel derleme önbelleğinde kayıtlı olmayan uygulamalar için, uydu derlemeleri, adı derlemenin kültüre karşılık gelen bir uygulama alt dizininde depolanır.For apps whose assemblies are not registered in the global assembly cache, satellite assemblies are stored in an app subdirectory whose name corresponds to the assembly's culture.

Kaynak OluşturmaCreating Resources

Kaynak tabanlı bir uygulama geliştirirken, kaynak bilgilerini metin dosyalarında (. txt veya. restext uzantılı dosyalar) veya XML dosyalarını (. resx uzantılı dosyalar) depoladığınızda.When you develop a resource-based app, you store resource information in text files (files that have a .txt or .restext extension) or XML files (files that have a .resx extension). Daha sonra bir ikili. resources dosyası oluşturmak için, metin veya XML dosyalarını kaynak dosya Oluşturucu (Resgen.exe) ile derleyebilirsiniz.You then compile the text or XML files with the Resource File Generator (Resgen.exe) to create a binary .resources file. Daha sonra, C# ve Visual Basic derleyicileri gibi bir derleyici seçeneğini kullanarak elde edilen. resources dosyasını bir çalıştırılabilir veya kitaplığa gömebilirsiniz /resources veya derleme bağlayıcısı (AI.exe)kullanarak bir uydu derlemesine gömebilirsiniz.You can then embed the resulting .resources file in an executable or library by using a compiler option such as /resources for the C# and Visual Basic compilers, or you can embed it in a satellite assembly by using the Assembly Linker (AI.exe). Visual Studio projenize bir. resx dosyası eklerseniz, Visual Studio derleme sürecinin bir parçası olarak otomatik olarak varsayılan ve yerelleştirilmiş kaynakların derlemesini ve gömülmesini işler.If you include a .resx file in your Visual Studio project, Visual Studio handles the compilation and embedding of default and localized resources automatically as part of the build process.

İdeal olarak, uygulamanızın desteklediği her dil için ya da en azından her dilin anlamlı bir alt kümesi için kaynak oluşturmanız gerekir.Ideally, you should create resources for every language your app supports, or at least for a meaningful subset of each language. İkili. resources dosya adları, baseName adlandırma kuralını izler. cultureName. resources, burada baseName , istediğiniz ayrıntı düzeyine bağlı olarak uygulamanın adı ya da bir sınıfın adıdır.The binary .resources file names follow the naming convention basename.cultureName.resources, where basename is the name of the app or the name of a class, depending on the level of detail you want. CultureInfo.NameÖzelliği cultureName öğesini belirlemekte kullanılır.The CultureInfo.Name property is used to determine cultureName. Uygulamanın varsayılan kültürünün bir kaynağı baseName. resources olarak adlandırılmalıdır.A resource for the app's default culture should be named basename.resources.

Örneğin, bir derlemenin kaynak dosyasında, MyResources temel adına sahip birkaç kaynağı olduğunu varsayalım.For example, suppose that an assembly has several resources in a resource file that has the base name MyResources. Bu kaynak dosyaları, MyResources. ja-JP gibi adlara sahip olmalıdır. Japonya (Japonca) kültürü için kaynaklar, MyResources... Almanya kültürü, MyResources. zh-CHS. resources, Basitleştirilmiş Çince kültürüne yönelik kaynaklar ve MyResources.fr-BE.These resource files should have names such as MyResources.ja-JP.resources for the Japan (Japanese) culture, MyResources.de.resources for the German culture, MyResources.zh-CHS.resources for the simplified Chinese culture, and MyResources.fr-BE.resources for the French (Belgium) culture. Varsayılan kaynak dosyası MyResources. resources olarak adlandırılmalıdır.The default resource file should be named MyResources.resources. Kültüre özgü kaynak dosyaları, her kültür için uydu Derlemeleriyle yaygın olarak paketlenmiştir.The culture-specific resource files are commonly packaged in satellite assemblies for each culture. Varsayılan kaynak dosyası uygulamanın ana derlemesine katıştırılmalıdır.The default resource file should be embedded in the app's main assembly.

Derleme bağlayıcının kaynakların özel olarak işaretlenmesini sağlar, ancak diğer derlemeler tarafından erişilebilmesi için bunları her zaman herkese açık olarak işaretlemeniz gerektiğini unutmayın.Note that Assembly Linker allows resources to be marked as private, but you should always mark them as public so they can be accessed by other assemblies. (Bir uydu derlemesi kod içermiyorsa, özel olarak işaretlenen kaynaklar, uygulamanız tarafından herhangi bir mekanizma aracılığıyla kullanılamaz.)(Because a satellite assembly contains no code, resources that are marked as private are unavailable to your app through any mechanism.)

Kaynak oluşturma, paketleme ve dağıtma hakkında daha fazla bilgi için kaynak dosyaları oluşturma, uydu derlemeleri oluşturmave kaynakları paketleme ve dağıtmamakalelerine bakın.For more information about creating, packaging, and deploying resources, see the articles Creating Resource Files, Creating Satellite Assemblies, and Packaging and Deploying Resources.

Bir ResourceManager Nesnesini ÖrneklemeInstantiating a ResourceManager Object

ResourceManagerSınıf Oluşturucu aşırı yüklemelerinin birini çağırarak gömülü bir. resources dosyasından kaynakları alan bir nesneyi örnekleyebilirsiniz.You instantiate a ResourceManager object that retrieves resources from an embedded .resources file by calling one of its class constructor overloads. Bu, ResourceManager belirli bir. resources dosyası ve uydu derlemelerindeki ilişkili yerelleştirilmiş. resources dosyaları ile bir nesneyi daha sıkı şekilde bağar.This tightly couples a ResourceManager object with a particular .resources file and with any associated localized .resources files in satellite assemblies.

En yaygın olarak adlandırılan iki Oluşturucu şunlardır:The two most commonly called constructors are:

  • ResourceManager(String, Assembly) kaynakları, sağladığınız iki bilgi parçasına göre arar:. resources dosyasının temel adı ve varsayılan. resources dosyasının bulunduğu derleme.ResourceManager(String, Assembly) looks up resources based on two pieces of information that you supply: the base name of the .resources file, and the assembly in which the default .resources file resides. Temel ad,. resources dosyasının kültür veya uzantısı olmadan ad alanını ve kök adını içerir.The base name includes the namespace and root name of the .resources file, without its culture or extension. Komut satırından derlenen kaynak dosyalarının normalde bir ad alanı adı (yani, Visual Studio ortamında oluşturulan kaynak dosyaları) içermediğini unutmayın.Note that .resources files that are compiled from the command line typically do not include a namespace name, whereas .resources files that are created in the Visual Studio environment do. Örneğin, bir kaynak dosyasının adı MyCompany. StringResources. resources ve ResourceManager constructor adlı bir statik yöntemden çağrılırsa Example.Main , aşağıdaki kod ResourceManager . resources dosyasından kaynakları alan bir nesne başlatır:For example, if a resource file is named MyCompany.StringResources.resources and the ResourceManager constructor is called from a static method named Example.Main, the following code instantiates a ResourceManager object that can retrieve resources from the .resources file:

    ResourceManager rm = new ResourceManager("MyCompany.StringResources",
                                             typeof(Example).Assembly);
    
    Dim rm As New ResourceManager("MyCompany.StringResources",
                                  GetType(Example).Assembly)
    
  • ResourceManager(Type) bir tür nesnesinden bilgileri temel alarak uydu derlemelerindeki kaynakları arar.ResourceManager(Type) looks up resources in satellite assemblies based on information from a type object. Türün tam adı, dosya adı uzantısı olmadan. resources dosyasının temel adına karşılık gelir.The type's fully qualified name corresponds to the base name of the .resources file without its file name extension. Visual Studio kaynak Tasarımcısı kullanılarak oluşturulan masaüstü uygulamalarında, Visual Studio tam adı. resources dosyasının kök adı ile aynı olan bir sarmalayıcı sınıfı oluşturur.In desktop apps that are created by using the Visual Studio Resource Designer, Visual Studio creates a wrapper class whose fully qualified name is the same as the root name of the .resources file. Örneğin, bir kaynak dosyası MyCompany. StringResources. resources olarak adlandırılmışsa ve adında bir sarmalayıcı sınıfı varsa MyCompany.StringResources , aşağıdaki kod ResourceManager . resources dosyasından kaynakları alan bir nesne başlatır:For example, if a resource file is named MyCompany.StringResources.resources and there is a wrapper class named MyCompany.StringResources, the following code instantiates a ResourceManager object that can retrieve resources from the .resources file:

    ResourceManager rm = new ResourceManager(typeof(MyCompany.StringResources));
    
    Dim rm As New ResourceManager(GetType(MyCompany.StringResources))
    

Uygun kaynaklar bulunamazsa, Oluşturucu çağrısı geçerli bir ResourceManager nesne oluşturur.If the appropriate resources cannot be found, the constructor call creates a valid ResourceManager object. Ancak, bir kaynağı alma girişimi bir MissingManifestResourceException özel durum oluşturur.However, the attempt to retrieve a resource throws a MissingManifestResourceException exception. Özel durumla ilgili daha fazla bilgi için, bu makalenin ilerleyen kısımlarındaki MissingManifestResourceException ve MissingSatelliteAssembly Exceptions bölümüne bakın.For information about dealing with the exception, see the Handling MissingManifestResourceException and MissingSatelliteAssembly Exceptions section later in this article.

Aşağıdaki örnek, bir nesnenin örneğini oluşturmayı gösterir ResourceManager .The following example shows how to instantiate a ResourceManager object. ShowTime.exe adlı yürütülebilir dosya için kaynak kodunu içerir.It contains the source code for an executable named ShowTime.exe. Tek bir dize kaynağı içeren Strings.txt adlı aşağıdaki metin dosyasını da içerir TimeHeader :It also includes the following text file named Strings.txt that contains a single string resource, TimeHeader:

TimeHeader=The current time is

Kaynak dosyasını oluşturmak ve çalıştırılabilire katıştırmak için bir toplu iş dosyası kullanabilirsiniz.You can use a batch file to generate the resource file and embed it into the executable. C# derleyicisini kullanarak yürütülebilir bir dosya oluşturmak için toplu iş dosyası aşağıda verilmiştir:Here's the batch file to generate an executable by using the C# compiler:

resgen strings.txt
csc ShowTime.cs /resource:strings.resources

Visual Basic Derleyicisi için aşağıdaki toplu iş dosyasını kullanabilirsiniz:For the Visual Basic compiler, you can use the following batch file:

resgen strings.txt
vbc ShowTime.vb /resource:strings.resources
using System;
using System.Resources;

public class Example
{
   public static void Main()
   {
      ResourceManager rm = new ResourceManager("Strings", 
                               typeof(Example).Assembly);
      string timeString = rm.GetString("TimeHeader");
      Console.WriteLine("{0} {1:T}", timeString, DateTime.Now);   
   }
}
// The example displays output like the following:
//        The current time is 2:03:14 PM
Imports System.Resources

Module Example
   Public Sub Main()
      Dim rm As New ResourceManager("Strings", GetType(Example).Assembly)
      Dim timeString As String = rm.GetString("TimeHeader")
      Console.WriteLine("{0} {1:T}", timeString, Date.Now)   
   End Sub
End Module
' The example displays output similar to the following:
'       The current time is 2:03:14 PM

ResourceManager ve Kültüre Özgü KaynaklarResourceManager and Culture-Specific Resources

Yerelleştirilmiş bir uygulama, kaynakları paketleme ve dağıtmamakalesindeki anlatıldığı şekilde kaynakların dağıtılmasını gerektirir.A localized app requires resources to be deployed, as discussed in the article Packaging and Deploying Resources. Derlemeler düzgün yapılandırıldıysa, Kaynak Yöneticisi geçerli iş parçacığının özelliğine göre hangi kaynakların verileceğini belirler Thread.CurrentUICulture .If the assemblies are properly configured, the resource manager determines which resources to retrieve based on the current thread's Thread.CurrentUICulture property. (Bu özellik geçerli iş parçacığının Kullanıcı Arabirimi kültürünü de döndürür.) Örneğin, bir uygulama, ana derlemede varsayılan Ingilizce dil kaynakları ve iki uydu derlemesinde Fransızca ve Rusça dil kaynakları ile derlenirse ve Thread.CurrentUICulture özellik fr-fr olarak ayarlandıysa, Resource Manager Fransız kaynaklarını alır.(That property also returns the current thread's UI culture.) For example, if an app is compiled with default English language resources in the main assembly and with French and Russian language resources in two satellite assemblies, and the Thread.CurrentUICulture property is set to fr-FR, the resource manager retrieves the French resources.

CurrentUICultureÖzelliği açıkça veya örtük olarak ayarlayabilirsiniz.You can set the CurrentUICulture property explicitly or implicitly. Bunu ayarlama yöntemi, ResourceManager nesnenin kültür temelinde kaynakları nasıl alacağını belirler:The way you set it determines how the ResourceManager object retrieves resources based on culture:

  • Thread.CurrentUICultureÖzelliği açıkça belirli bir kültüre ayarlarsanız, Kaynak Yöneticisi kullanıcının tarayıcısına veya işletim sistemi dilinden bağımsız olarak her zaman bu kültürün kaynaklarını alır.If you explicitly set the Thread.CurrentUICulture property to a specific culture, the resource manager always retrieves the resources for that culture, regardless of the user's browser or operating system language. Varsayılan Ingilizce dil kaynaklarıyla derlenen bir uygulamayı ve Ingilizce (Birleşik Devletler), Fransızca (Fransa) ve Rusça (Rusya) kaynaklarını içeren üç uydu derlemesi düşünün.Consider an app that is compiled with default English language resources and three satellite assemblies that contain resources for English (United States), French (France), and Russian (Russia). CurrentUICultureÖzelliği fr-fr olarak ayarlandıysa, ResourceManager kullanıcının işletim sistemi dili Fransızca olmasa bile, nesne her zaman Fransızca (Fransa) kaynaklarını alır.If the CurrentUICulture property is set to fr-FR, the ResourceManager object always retrieves the French (France) resources, even if the user's operating system language is not French. Özelliği açıkça ayarlamadan önce bunun istenen davranış olduğundan emin olun.Make sure that this is the desired behavior before you set the property explicitly.

    ASP.NET uygulamalarında Thread.CurrentUICulture özelliği açıkça ayarlamanız gerekir, çünkü sunucu üzerindeki ayarın gelen istemci istekleriyle eşleşmesi olası değildir.In ASP.NET apps, you must set the Thread.CurrentUICulture property explicitly, because it is unlikely that the setting on the server will match incoming client requests. Bir ASP.NET uygulaması, Thread.CurrentUICulture özelliği açıkça kullanıcının tarayıcı kabul diline ayarlayabilir.An ASP.NET app can set the Thread.CurrentUICulture property explicitly to the user's browser accept language.

    Özelliği açıkça ayarlamak Thread.CurrentUICulture o iş parçacığı için geçerli kullanıcı Arabirimi kültürünü tanımlar.Explicitly setting the Thread.CurrentUICulture property defines the current UI culture for that thread. Bir uygulamadaki diğer iş parçacıklarının geçerli kullanıcı Arabirimi kültürünü etkilemez.It does not affect the current UI culture of any other threads in an app.

  • Bir uygulama etki alanındaki tüm iş parçacıklarının Kullanıcı Arabirimi kültürünü, CultureInfo Bu kültürü temsil eden bir nesneyi statik özelliğe atayarak ayarlayabilirsiniz CultureInfo.DefaultThreadCurrentUICulture .You can set the UI culture of all threads in an app domain by assigning a CultureInfo object that represents that culture to the static CultureInfo.DefaultThreadCurrentUICulture property.

  • Geçerli Kullanıcı Arabirimi kültürünü açıkça ayarlamazsanız ve geçerli uygulama etki alanı için varsayılan kültür tanımlayamazsınız, CultureInfo.CurrentUICulture özellik Windows işlevi tarafından örtük olarak ayarlanır GetUserDefaultUILanguage .If you do not explicitly set the current UI culture and you do not define a default culture for the current app domain, the CultureInfo.CurrentUICulture property is set implicitly by the Windows GetUserDefaultUILanguage function. Bu işlev, kullanıcının varsayılan dili ayarlayabilmesini sağlayan çok dilli kullanıcı arabirimi (MUI) tarafından sağlanır.This function is provided by the Multilingual User Interface (MUI), which enables the user to set the default language. Kullanıcı ARABIRIMI dili Kullanıcı tarafından ayarlanmamışsa, işletim sistemi kaynaklarının dili olan sistem tarafından yüklenen dile varsayılan olarak ayarlanır.If the UI language is not set by the user, it defaults to the system-installed language, which is the language of operating system resources.

Aşağıdaki basit "Hello World" örneği, geçerli UI kültürünü açık olarak ayarlar.The following simple "Hello world" example sets the current UI culture explicitly. Üç kültürde kaynaklar içerir: Ingilizce (Birleşik Devletler) veya en-US, Fransızca (Fransa) veya fr-FR ve Rusça (Rusya) ya da ru-RU.It contains resources for three cultures: English (United States) or en-US, French (France) or fr-FR, and Russian (Russia) or ru-RU. En-US kaynakları, Greetings.txt adlı bir metin dosyasında bulunur:The en-US resources are contained in a text file named Greetings.txt:

HelloString=Hello world!

Fr-FR kaynakları, Greetings.fr-FR.txt adlı bir metin dosyasında yer alır:The fr-FR resources are contained in a text file named Greetings.fr-FR.txt:

HelloString=Salut tout le monde!

Ru-RU kaynakları, Greetings.ru-RU.txt adlı bir metin dosyasında yer alır:The ru-RU resources are contained in a text file named Greetings.ru-RU.txt:

HelloString=Всем привет!

Örnek için kaynak kodu aşağıda verilmiştir (Visual Basic sürümü için example. vb veya C# sürümü için Example.cs):Here's the source code for the example (Example.vb for the Visual Basic version or Example.cs for the C# version):

using System;
using System.Globalization;
using System.Resources;
using System.Threading;

public class Example
{
   public static void Main()
   {
      // Create array of supported cultures
      string[] cultures = {"en-CA", "en-US", "fr-FR", "ru-RU" };
      Random rnd = new Random();
      int cultureNdx = rnd.Next(0, cultures.Length);
      CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture;
      ResourceManager rm = new ResourceManager("Greetings", typeof(Example).Assembly);
      try {
         CultureInfo newCulture = new CultureInfo(cultures[cultureNdx]);
         Thread.CurrentThread.CurrentCulture = newCulture;
         Thread.CurrentThread.CurrentUICulture = newCulture;
         string greeting = String.Format("The current culture is {0}.\n{1}",
                                         Thread.CurrentThread.CurrentUICulture.Name,
                                         rm.GetString("HelloString"));
         Console.WriteLine(greeting);
      }
      catch (CultureNotFoundException e) {
         Console.WriteLine("Unable to instantiate culture {0}", e.InvalidCultureName);
      }
      finally {
         Thread.CurrentThread.CurrentCulture = originalCulture;
         Thread.CurrentThread.CurrentUICulture = originalCulture;
      }
   }
}
// The example displays output like the following:
//       The current culture is ru-RU.
//       Всем привет!
Imports System.Globalization
Imports System.Resources
Imports System.Threading

Module Example
   Sub Main()
      ' Create array of supported cultures
      Dim cultures() As String = {"en-CA", "en-US", "fr-FR", "ru-RU" }
      Dim rnd As New Random()
      Dim cultureNdx As Integer = rnd.Next(0, cultures.Length)
      Dim originalCulture As CultureInfo = Thread.CurrentThread.CurrentCulture
      Dim rm As New ResourceManager("Greetings", GetType(Example).Assembly)
      Try
         Dim newCulture As New CultureInfo(cultures(cultureNdx))
         Thread.CurrentThread.CurrentCulture = newCulture
         Thread.CurrentThread.CurrentUICulture = newCulture
         Dim greeting As String = String.Format("The current culture is {0}.{1}{2}",
                                                Thread.CurrentThread.CurrentUICulture.Name,
                                                vbCrLf, rm.GetString("HelloString"))

         Console.WriteLine(greeting)
      Catch e As CultureNotFoundException
         Console.WriteLine("Unable to instantiate culture {0}", e.InvalidCultureName)
      Finally
         Thread.CurrentThread.CurrentCulture = originalCulture
         Thread.CurrentThread.CurrentUICulture = originalCulture
      End Try
   End Sub
End Module
' The example displays output like the following:
'       The current culture is ru-RU.
'       Всем привет!

Bu örneği derlemek için aşağıdaki komutları içeren bir Batch (. bat) dosyası oluşturun ve komut isteminden çalıştırın.To compile this example, create a batch (.bat) file that contains the following commands and run it from the command prompt. C# kullanıyorsanız, yerine ve yerine belirtin csc vbc Example.cs Example.vb .If you're using C#, specify csc instead of vbc and Example.cs instead of Example.vb.

resgen Greetings.txt
vbc Example.vb /resource:Greetings.resources

resgen Greetings.fr-FR.txt
Md fr-FR
al /embed:Greetings.fr-FR.resources /culture:fr-FR /out:fr-FR\Example.resources.dll

resgen Greetings.ru-RU.txt
Md ru-RU
al /embed:Greetings.ru-RU.resources /culture:ru-RU /out:ru-RU\Example.resources.dll

Kaynakları AlmaRetrieving Resources

GetObject(String) GetString(String) Belirli bir kaynağa erişmek için ve yöntemlerini çağırabilirsiniz.You call the GetObject(String) and GetString(String) methods to access a specific resource. Ayrıca GetStream(String) dize olmayan kaynakları bir bayt dizisi olarak almak için yöntemini çağırabilirsiniz.You can also call the GetStream(String) method to retrieve non-string resources as a byte array. Varsayılan olarak, yerelleştirilmiş kaynakları olan bir uygulamada, bu yöntemler çağrıyı yapan iş parçacığının geçerli kullanıcı arabirimi kültürüne göre belirlenen kültür için kaynağı döndürür.By default, in an app that has localized resources, these methods return the resource for the culture determined by the current UI culture of the thread that made the call. Bir iş parçacığının geçerli UI kültürünün nasıl tanımlandığı hakkında daha fazla bilgi için bkz. önceki bölüm, ResourceManager ve Culture-Specific kaynakları.See the previous section, ResourceManager and Culture-Specific Resources, for more information about how the current UI culture of a thread is defined. Kaynak Yöneticisi geçerli iş parçacığının UI kültürü için kaynağı bulamazsa, belirtilen kaynağı almak için bir geri dönüş işlemi kullanır.If the resource manager cannot find the resource for the current thread's UI culture, it uses a fallback process to retrieve the specified resource. Kaynak Yöneticisi herhangi bir yerelleştirilmiş kaynak bulamazsa, varsayılan kültür kaynaklarını kullanır.If the resource manager cannot find any localized resources, it uses the resources of the default culture. Kaynak geri dönüş kuralları hakkında daha fazla bilgi için bkz. paketleme ve dağıtmamakalesinin "kaynak geri dönüş işlemi" bölümü.For more information about resource fallback rules, see the "Resource Fallback Process" section of the article Packaging and Deploying Resources.

Not

Sınıf oluşturucusunda belirtilen. resources dosyası ResourceManager bulunamazsa, kaynak alma girişimi bir MissingManifestResourceException veya MissingSatelliteAssemblyException özel durum oluşturur.If the .resources file specified in the ResourceManager class constructor cannot be found, the attempt to retrieve a resource throws a MissingManifestResourceException or MissingSatelliteAssemblyException exception. Özel durumla ilgili daha fazla bilgi için bu konunun ilerleyen kısımlarında yer aldığı MissingManifestResourceException ve MissingSatelliteAssemblyException Exceptions bölümüne bakın.For information about dealing with the exception, see the Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions section later in this topic.

Aşağıdaki örnek, GetString kültüre özgü kaynakları almak için yöntemini kullanır.The following example uses the GetString method to retrieve culture-specific resources. Ingilizce (en), Fransızca (Fransa) (fr-FR) ve Rusça (Rusya) (ru-RU) kültürleri için. txt dosyalarından derlenen kaynaklardan oluşur.It consists of resources compiled from .txt files for the English (en), French (France) (fr-FR), and Russian (Russia) (ru-RU) cultures. Örnek, geçerli kültürü ve geçerli kullanıcı Arabirimi kültürünü Ingilizce (Birleşik Devletler), Fransızca (Fransa), Rusça (Rusya) ve Isveççe (Isveç) olarak değiştirir.The example changes the current culture and current UI culture to English (United States), French (France), Russian (Russia), and Swedish (Sweden). Ardından GetString , geçerli gün ve aya göre görüntülenen yerelleştirilmiş dizeyi almak için yöntemini çağırır.It then calls the GetString method to retrieve the localized string, which it displays along with the current day and month. Çıktının geçerli UI kültürünün Isveççe (Isveç) olduğu durumlar dışında, uygun yerelleştirilmiş dizeyi görüntülediğini görürsünüz.Notice that the output displays the appropriate localized string except when the current UI culture is Swedish (Sweden). Isveççe dil kaynakları kullanılamadığından, uygulama bunun yerine Ingilizce olan varsayılan kültürün kaynaklarını kullanır.Because Swedish language resources are unavailable, the app instead uses the resources of the default culture, which is English.

Örnek, aşağıdaki tabloda listelenen metin tabanlı kaynak dosyalarını gerektirir.The example requires the text-based resource files listed in following table. Her birinin adlı tek bir dize kaynağı vardır DateStart .Each has a single string resource named DateStart.

KültürCulture Dosya adıFile name Kaynak adıResource name Kaynak değeriResource value
en-USen-US DateStrings.txtDateStrings.txt DateStart BugünToday is
fr-FRfr-FR DateStrings.fr-FR.txtDateStrings.fr-FR.txt DateStart Aujourd'hui, c'est LeAujourd'hui, c'est le
ru-RUru-RU DateStrings.ru-RU.txtDateStrings.ru-RU.txt DateStart СегодняСегодня

Örnek için kaynak kodu aşağıda verilmiştir (Visual Basic sürümü için ShowDate. vb veya kodun C# sürümü için ShowDate.cs).Here's the source code for the example (ShowDate.vb for the Visual Basic version or ShowDate.cs for the C# version of the code).

using System;
using System.Globalization;
using System.Resources;
using System.Threading;

[assembly:NeutralResourcesLanguage("en")]

public class Example
{
   public static void Main()
   {
      string[] cultureNames = { "en-US", "fr-FR", "ru-RU", "sv-SE" };
      ResourceManager rm = new ResourceManager("DateStrings",
                                               typeof(Example).Assembly);
      
      foreach (var cultureName in cultureNames) {
         CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
         Thread.CurrentThread.CurrentCulture = culture; 
         Thread.CurrentThread.CurrentUICulture = culture;

         Console.WriteLine("Current UI Culture: {0}", 
                           CultureInfo.CurrentUICulture.Name);
         string dateString = rm.GetString("DateStart");
         Console.WriteLine("{0} {1:M}.\n", dateString, DateTime.Now);                           
      }                                           
   }
}
// The example displays output similar to the following:
//       Current UI Culture: en-US
//       Today is February 03.
//       
//       Current UI Culture: fr-FR
//       Aujourd'hui, c'est le 3 février
//       
//       Current UI Culture: ru-RU
//       Сегодня февраля 03.
//       
//       Current UI Culture: sv-SE
//       Today is den 3 februari.
Imports System.Globalization
Imports System.Resources
Imports System.Threading

<Assembly:NeutralResourcesLanguage("en")>

Module Example
   Public Sub Main()
      Dim cultureNames() As String = { "en-US", "fr-FR", "ru-RU", "sv-SE" }
      Dim rm As New ResourceManager("DateStrings",
                                    GetType(Example).Assembly)
      
      For Each cultureName In cultureNames
         Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureName)
         Thread.CurrentThread.CurrentCulture = culture 
         Thread.CurrentThread.CurrentUICulture = culture

         Console.WriteLine("Current UI Culture: {0}", 
                           CultureInfo.CurrentUICulture.Name)
         Dim dateString As String = rm.GetString("DateStart")
         Console.WriteLine("{0} {1:M}.", dateString, Date.Now)                           
         Console.WriteLine()
      Next                                           
   End Sub
End Module
' The example displays output similar to the following:
'       Current UI Culture: en-US
'       Today is February 03.
'       
'       Current UI Culture: fr-FR
'       Aujourd'hui, c'est le 3 février
'       
'       Current UI Culture: ru-RU
'       Сегодня февраля 03.
'       
'       Current UI Culture: sv-SE
'       Today is den 3 februari.

Bu örneği derlemek için aşağıdaki komutları içeren bir toplu iş dosyası oluşturun ve komut isteminden çalıştırın.To compile this example, create a batch file that contains the following commands and run it from the command prompt. C# kullanıyorsanız, yerine ve yerine belirtin csc vbc showdate.cs showdate.vb .If you're using C#, specify csc instead of vbc and showdate.cs instead of showdate.vb.

resgen DateStrings.txt
vbc showdate.vb /resource:DateStrings.resources

md fr-FR
resgen DateStrings.fr-FR.txt
al /out:fr-FR\Showdate.resources.dll /culture:fr-FR /embed:DateStrings.fr-FR.resources

md ru-RU
resgen DateStrings.ru-RU.txt
al /out:ru-RU\Showdate.resources.dll /culture:ru-RU /embed:DateStrings.ru-RU.resources

Geçerli Kullanıcı arabirimi kültürüne göre belirli bir kültürün kaynaklarını almanın iki yolu vardır:There are two ways to retrieve the resources of a specific culture other than the current UI culture:

  • GetString(String, CultureInfo) GetObject(String, CultureInfo) GetStream(String, CultureInfo) Belirli bir kültürün kaynağını almak için, veya metodunu çağırabilirsiniz.You can call the GetString(String, CultureInfo), GetObject(String, CultureInfo), or GetStream(String, CultureInfo) method to retrieve a resource for a specific culture. Yerelleştirilmiş bir kaynak bulunamazsa, Kaynak Yöneticisi uygun bir kaynağı bulmak için kaynak geri dönüş işlemini kullanır.If a localized resource cannot be found, the resource manager uses the resource fallback process to locate an appropriate resource.

  • GetResourceSet ResourceSet Belirli bir kültürün kaynaklarını temsil eden bir nesneyi elde etmek için yöntemini çağırabilirsiniz.You can call the GetResourceSet method to obtain a ResourceSet object that represents the resources for a particular culture. Yöntem çağrısında, kaynak yöneticisinin, yerelleştirilmiş kaynakları bulamadıysanız veya varsayılan kültürün kaynaklarına geri dönüp belirlemediğinden, ana kültürlerin araştırıp olup olmadığını belirleyebilirsiniz.In the method call, you can determine whether the resource manager probes for parent cultures if it is unable to find localized resources, or whether it simply falls back to the resources of the default culture. Daha sonra ResourceSet Bu yöntemleri ada göre kaynaklara erişmek veya küme içindeki kaynakları numaralandırmak için kullanabilirsiniz.You can then use the ResourceSet methods to access the resources (localized for that culture) by name, or to enumerate the resources in the set.

MissingManifestResourceException ve MissingSatelliteAssemblyException Özel Durumlarını İşlemeHandling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions

Belirli bir kaynağı almaya çalışırsanız, ancak Resource Manager Bu kaynağı bulamıyor ve varsayılan kültür tanımlı değil ya da varsayılan kültürün kaynakları bulunamıyorsa, Kaynak Yöneticisi MissingManifestResourceException ana derlemede kaynakları bulmayı bekliyorsa veya bir MissingSatelliteAssemblyException uydu derlemesinde kaynakları bulmayı bekliyorsa bir özel durum oluşturur.If you try to retrieve a specific resource, but the resource manager cannot find that resource and either no default culture has been defined or the resources of the default culture cannot be located, the resource manager throws a MissingManifestResourceException exception if it expects to find the resources in the main assembly or a MissingSatelliteAssemblyException if it expects to find the resources in a satellite assembly. GetString GetObject Bir nesneyi örneklediğinizde değil, veya gibi bir kaynak alma yöntemini çağırdığınızda özel durumun oluşturulur ResourceManager .Note that the exception is thrown when you call a resource retrieval method such as GetString or GetObject, and not when you instantiate a ResourceManager object.

Özel durum genellikle aşağıdaki koşullarda oluşur:The exception is typically thrown under the following conditions:

  • Uygun kaynak dosyası veya uydu derlemesi yok.The appropriate resource file or satellite assembly does not exist. Resource Manager, uygulamanın varsayılan kaynaklarının ana uygulama derlemesine gömülmesini bekliyorsa, bunlar yok olur.If the resource manager expects the app's default resources to be embedded in the main app assembly, they are absent. Öznitelik, NeutralResourcesLanguageAttribute uygulamanın varsayılan kaynaklarının bir uydu derlemesinde bulunduğunu gösteriyorsa, bu derleme bulunamıyor.If the NeutralResourcesLanguageAttribute attribute indicates that the app's default resources reside in a satellite assembly, that assembly cannot be found. Uygulamanızı derlerken, kaynakların ana derlemeye katıştırıldığından veya gerekli uydu derlemesinin oluşturulduğundan ve uygun şekilde adlandırıldığından emin olun.When you compile your app, make sure that resources are embedded in the main assembly or that the necessary satellite assembly is generated and is named appropriately. Adı appName.resources.dll formunu almalıdır ve kaynakları içerdiği kültürün ardından adlı bir dizinde bulunmalıdır.Its name should take the form appName.resources.dll, and it should be located in a directory named after the culture whose resources it contains.

  • Uygulamanızda tanımlanmış bir varsayılan veya nötr kültür yok.Your app doesn't have a default or neutral culture defined. NeutralResourcesLanguageAttributeÖzniteliği bir kaynak kod dosyasına veya proje bilgi dosyasına (bir Visual Basic uygulaması veya bir C# uygulaması için AssemblyInfo.cs Için AssemblyInfo. vb) ekleyin.Add the NeutralResourcesLanguageAttribute attribute to a source code file or to the project information file (AssemblyInfo.vb for a Visual Basic app or AssemblyInfo.cs for a C# app) file.

  • baseName ResourceManager(String, Assembly) Oluşturucudaki parametresi bir. resources dosyasının adını belirtmez.The baseName parameter in the ResourceManager(String, Assembly) constructor does not specify the name of a .resources file. Ad, kaynak dosyanın tam nitelikli ad alanını içermeli ancak dosya adı uzantısını içermemelidir.The name should include the resource file's fully qualified namespace but not its file name extension. Genellikle, Visual Studio 'da oluşturulan kaynak dosyaları ad alanı adlarını içerir, ancak komut isteminde oluşturulup derlenen kaynak dosyaları değildir.Typically, resource files that are created in Visual Studio include namespace names, but resource files that are created and compiled at the command prompt do not. Aşağıdaki yardımcı programı derleyip çalıştırarak gömülü. resources dosyalarının adlarını belirleyebilirsiniz.You can determine the names of embedded .resources files by compiling and running the following utility. Bu, bir ana derlemenin veya uydu derlemesinin adını komut satırı parametresi olarak kabul eden bir konsol uygulamasıdır.This is a console app that accepts the name of a main assembly or satellite assembly as a command-line parameter. baseNameKaynak yöneticisinin kaynağı doğru bir şekilde tanımlayabilmesi için parametre olarak sağlanması gereken dizeleri görüntüler.It displays the strings that should be provided as the baseName parameter so that the resource manager can correctly identify the resource.

    using System;
    using System.IO;
    using System.Reflection;
    using System.Resources;
    
    public class Example
    {
       public static void Main()
       {
          if (Environment.GetCommandLineArgs().Length == 1) { 
             Console.WriteLine("No filename.");
             return;
          }
          
          string filename = Environment.GetCommandLineArgs()[1].Trim();
          // Check whether the file exists.
          if (! File.Exists(filename)) {
             Console.WriteLine("{0} does not exist.", filename);
             return;
          }   
          
          // Try to load the assembly.
          Assembly assem = Assembly.LoadFrom(filename);
          Console.WriteLine("File: {0}", filename);
             
          // Enumerate the resource files.
          string[] resNames = assem.GetManifestResourceNames();
          if (resNames.Length == 0)
             Console.WriteLine("   No resources found.");
    
          foreach (var resName in resNames)
             Console.WriteLine("   Resource: {0}", resName.Replace(".resources", ""));
    
          Console.WriteLine();
       }
    }
    
    Imports System.IO
    Imports System.Reflection
    Imports System.Resources
    
    Module Example
       Public Sub Main()
          If Environment.GetCommandLineArgs.Length = 1 Then 
             Console.WriteLine("No filename.")
             Exit Sub
          End If
          Dim filename As String = Environment.GetCommandLineArgs(1).Trim()
          ' Check whether the file exists.
          If Not File.Exists(filename) Then
             Console.WriteLine("{0} does not exist.", filename)
             Exit Sub
          End If   
          
          ' Try to load the assembly.
          Dim assem As Assembly = Assembly.LoadFrom(filename)
          Console.WriteLine("File: {0}", filename)
             
          ' Enumerate the resource files.
          Dim resNames() As String = assem.GetManifestResourceNames()
          If resNames.Length = 0 Then
             Console.WriteLine("   No resources found.")
          End If
          For Each resName In resNames
             Console.WriteLine("   Resource: {0}", resName.Replace(".resources", ""))
          Next
          Console.WriteLine()
       End Sub
    End Module
    

Uygulamanızın geçerli kültürünü açıkça değiştiriyorsanız, kaynak yöneticisinin özelliği değil, özelliğin değerine göre kaynak kümesi aldığını da unutmayın CultureInfo.CurrentUICulture CultureInfo.CurrentCulture .If you are changing the current culture of your application explicitly, you should also remember that the resource manager retrieves a resource set based on the value of the CultureInfo.CurrentUICulture property, and not the CultureInfo.CurrentCulture property. Genellikle, bir değeri değiştirirseniz diğerini de değiştirmelisiniz.Typically, if you change one value, you should also change the other.

Kaynak Sürümü OluşturmaResource Versioning

Uygulamanın varsayılan kaynaklarını içeren ana derleme, uygulamanın uydu derlemelerinden ayrı olduğundan, uydu derlemelerini yeniden dağıtmaya gerek kalmadan ana derlemenizin yeni bir sürümünü serbest bırakabilirsiniz.Because the main assembly that contains an app's default resources is separate from the app's satellite assemblies, you can release a new version of your main assembly without redeploying the satellite assemblies. SatelliteContractVersionAttributeVar olan uydu derlemelerini kullanmak için özniteliğini kullanır ve Resource Manager 'ın bunları ana derlemelerinizin yeni bir sürümüyle yeniden dağıtmamasını ister.You use the SatelliteContractVersionAttribute attribute to use existing satellite assemblies and instruct the resource manager not to redeploy them with a new version of your main assembly,

Uydu derlemeleri için sürüm oluşturma desteği hakkında daha fazla bilgi için bkz. kaynakları almamakalesi.For more information about versioning support for satellite assemblies, see the article Retrieving Resources.

<satelliteassemblies> Yapılandırma dosyası düğümü<satelliteassemblies> Configuration File Node

Bir Web sitesinden dağıtılan ve çalıştırılan (HREF. exe dosyaları) yürütülebilir dosyalar için, ResourceManager nesne Web üzerinden uydu derlemelerini yoklamakta olabilir ve bu da uygulamanızın performansına zarar verebilir.For executables that are deployed and run from a website (HREF .exe files), the ResourceManager object may probe for satellite assemblies over the web, which can hurt your app's performance. Performans sorununu ortadan kaldırmak için, bu araştırmaya uygulamanızla birlikte dağıttığınız uydu Derlemeleriyle sınırlı olabilirsiniz.To eliminate the performance problem, you can limit this probing to the satellite assemblies that you have deployed with your app. Bunu yapmak için, uygulamanızın <satelliteassemblies> yapılandırma dosyasında, uygulamanız için belirli bir kültür kümesi dağıttığınızı ve ResourceManager nesnenin bu düğümde listelenmeyen herhangi bir kültürü araştırmayı denememelidir gerektiğini belirtmek için bir düğüm oluşturursunuz.To do this, you create a <satelliteassemblies> node in your app's configuration file to specify that you have deployed a specific set of cultures for your app, and that the ResourceManager object should not try to probe for any culture that is not listed in that node.

Not

Bir düğüm oluşturmak için tercih edilen alternatif <satelliteassemblies> ClickOnce dağıtım bildirimi özelliğini kullanmaktır.The preferred alternative to creating a <satelliteassemblies> node is to use the ClickOnce Deployment Manifest feature.

Uygulamanızın yapılandırma dosyasında şuna benzer bir bölüm oluşturun:In your app's configuration file, create a section similar to the following:

<?xml version ="1.0"?>
<configuration>
    <satelliteassemblies>
        <assembly name="MainAssemblyName, Version=versionNumber, Culture=neutral, PublicKeyToken=null|yourPublicKeyToken">
            <culture>cultureName1</culture>
            <culture>cultureName2</culture>
            <culture>cultureName3</culture>
        </assembly>
    </satelliteassemblies>
</configuration>

Bu yapılandırma bilgilerini aşağıdaki gibi düzenleyin:Edit this configuration information as follows:

  • <assembly>Dağıttığınız her bir ana derleme için bir veya daha fazla düğüm belirtin; burada her düğüm tam nitelikli bir derleme adı belirtir.Specify one or more <assembly> nodes for each main assembly that you deploy, where each node specifies a fully qualified assembly name. Ana derlemelerinizin adını MainAssemblyName yerine belirtin ve Version PublicKeyToken Culture ana derlemenizin karşılık gelen, ve öznitelik değerlerini belirtin.Specify the name of your main assembly in place of MainAssemblyName, and specify the Version, PublicKeyToken, and Culture attribute values that correspond to your main assembly.

    Özniteliği için Version , derlemenizin sürüm numarasını belirtin.For the Version attribute, specify the version number of your assembly. Örneğin, derlemenizin ilk sürümü 1.0.0.0 sürüm numarası olabilir.For example, the first release of your assembly might be version number 1.0.0.0.

    Özniteliği için PublicKeyToken , null derlemenizi tanımlayıcı bir adla imzaladıysanız anahtar sözcüğünü belirtin veya derlemenizi imzaladıysanız ortak anahtar belirtecinizi belirtin.For the PublicKeyToken attribute, specify the keyword null if you have not signed your assembly with a strong name, or specify your public key token if you have signed your assembly.

    Özniteliği için Culture , neutral ana derlemeyi belirlemek için anahtar sözcüğünü belirtin ve ResourceManager sınıfın yalnızca düğümlerde listelenen kültürler için araştırmasına neden olur <culture> .For the Culture attribute, specify the keyword neutral to designate the main assembly and cause the ResourceManager class to probe only for the cultures listed in the <culture> nodes.

    Tam derleme adları hakkında daha fazla bilgi için bkz. derleme adları.For more information about fully qualified assembly names, see the article Assembly Names. Tanımlayıcı adlı derlemeler hakkında daha fazla bilgi için, tanımlayıcı adlı derlemeler oluşturma ve kullanmamakalesine bakın.For more information about strong-named assemblies, see the article Create and use strong-named assemblies.

  • <culture>"Fr-fr" gibi belirli bir kültür adına sahip bir veya daha fazla düğüm veya "fr" gibi bir bağımsız kültür adı belirtin.Specify one or more <culture> nodes with a specific culture name, such as "fr-FR", or a neutral culture name, such as "fr".

Düğüm altında listelenmeyen tüm bütünleştirilmiş kod için kaynaklar gerekiyorsa <satelliteassemblies> , ResourceManager Standart yoklama kuralları kullanılarak kültürler için sınıf yoklamalar.If resources are needed for any assembly not listed under the <satelliteassemblies> node, the ResourceManager class probes for cultures using standard probing rules.

Windows 8.x MağazasıWindows 8.x Store GörApps

Önemli

ResourceManagerSınıfı uygulamalarda desteklense de Windows 8.x MağazasıWindows 8.x Store kullanımını önermiyoruz.Although the ResourceManager class is supported in Windows 8.x MağazasıWindows 8.x Store apps, we do not recommend its use. Bu sınıfı yalnızca, Taşınabilir Sınıf KitaplığıPortable Class Library uygulamalarla kullanılabilecek projeler geliştirirken kullanın Windows 8.x MağazasıWindows 8.x Store .Use this class only when you develop Taşınabilir Sınıf KitaplığıPortable Class Library projects that can be used with Windows 8.x MağazasıWindows 8.x Store apps. Uygulamalardan kaynakları almak için Windows 8.x MağazasıWindows 8.x Store , bunun yerine Windows. ApplicationModel. resources. ResourceLoader sınıfını kullanın.To retrieve resources from Windows 8.x MağazasıWindows 8.x Store apps, use the Windows.ApplicationModel.Resources.ResourceLoader class instead.

Bu Windows 8.x MağazasıWindows 8.x Store sınıf, uygulamalar için ResourceManager paket kaynak DIZINI (PRI) dosyalarından kaynakları alır.For Windows 8.x MağazasıWindows 8.x Store apps, the ResourceManager class retrieves resources from package resource index (PRI) files. Tek PRı dosyası (uygulama paketi PRı dosyası), hem varsayılan kültür hem de yerelleştirilmiş kültürlerin kaynaklarını içerir.A single PRI file (the application package PRI file) contains the resources for both the default culture and any localized cultures. XML kaynak (. resw) biçiminde olan bir veya daha fazla kaynak dosyasından PRı dosyası oluşturmak için MakePRI yardımcı programını kullanın.You use the MakePRI utility to create a PRI file from one or more resource files that are in XML resource (.resw) format. Visual Studio projesine dahil olan kaynaklar için, PRı dosyasını otomatik olarak oluşturma ve paketleme sürecini işler.For resources that are included in a Visual Studio project, Visual Studio handles the process of creating and packaging the PRI file automatically. Daha sonra ResourceManager uygulamanın veya kitaplık kaynaklarına erişmek için .NET Framework sınıfını kullanabilirsiniz.You can then use the .NET Framework ResourceManager class to access the app's or library's resources.

Bir ResourceManager Windows 8.x MağazasıWindows 8.x Store uygulama için, bir masaüstü uygulaması için yaptığınız şekilde bir nesne örneği oluşturabilirsiniz.You can instantiate a ResourceManager object for a Windows 8.x MağazasıWindows 8.x Store app in the same way that you do for a desktop app.

Ardından, belirli bir kültür için kaynaklara ulaşmak üzere kaynağın adını geçirerek kaynaklara erişebilirsiniz GetString(String) .You can then access the resources for a particular culture by passing the name of the resource to be retrieved to the GetString(String) method. Varsayılan olarak, bu yöntem, çağrıyı yapan iş parçacığının geçerli kullanıcı arabirimi kültürüne göre belirlenen kültür için kaynağı döndürür.By default, this method returns the resource for the culture determined by the current UI culture of the thread that made the call. Ayrıca, kaynağı CultureInfo yöntemine alınacak olan kültürü temsil eden bir nesne ve kaynak adını geçirerek belirli bir kültürün kaynaklarını da alabilirsiniz GetString(String, CultureInfo) .You can also retrieve the resources for a specific culture by passing the name of the resource and a CultureInfo object that represents the culture whose resource is to be retrieved to the GetString(String, CultureInfo) method. Geçerli UI kültürünün veya belirtilen kültürün kaynağı bulunamıyorsa, Kaynak Yöneticisi uygun bir kaynağı bulmak için bir kullanıcı arabirimi dil geri dönüş listesi kullanır.If the resource for the current UI culture or the specified culture cannot be found, the resource manager uses a UI language fallback list to locate a suitable resource.

Oluşturucular

ResourceManager()

ResourceManager sınıfının yeni bir örneğini varsayılan değerlerle başlatır.Initializes a new instance of the ResourceManager class with default values.

ResourceManager(String, Assembly)

ResourceManagerBelirli bir derlemede belirtilen kök adına sahip dosyalardaki kaynakları içeren bir sınıfının yeni bir örneğini başlatır.Initializes a new instance of the ResourceManager class that looks up resources contained in files with the specified root name in the given assembly.

ResourceManager(String, Assembly, Type)

ResourceManager ResourceSet Verilen derlemede belirtilen kök adına sahip dosyalardaki kaynakları aramak için belirtilen bir sınıfı kullanan sınıfının yeni bir örneğini başlatır.Initializes a new instance of the ResourceManager class that uses a specified ResourceSet class to look up resources contained in files with the specified root name in the given assembly.

ResourceManager(Type)

ResourceManagerBelirtilen tür nesnesinden bilgileri temel alarak uydu derlemelerindeki kaynakları denetleyen sınıfının yeni bir örneğini başlatır.Initializes a new instance of the ResourceManager class that looks up resources in satellite assemblies based on information from the specified type object.

Alanlar

BaseNameField

Kaynak aradığı kaynak dosyalarının kök adını belirtir ResourceManager .Specifies the root name of the resource files that the ResourceManager searches for resources.

HeaderVersionNumber

Geçerli uygulamasının ResourceManager yorumlayabileceği ve üretebileceği kaynak dosyası üstbilgilerinin sürümünü belirtir.Specifies the version of resource file headers that the current implementation of ResourceManager can interpret and produce.

MagicNumber

Kaynak dosyalarını tanımlamak için kullanılan sayıyı tutar.Holds the number used to identify resource files.

MainAssembly

Kaynakları içeren ana derlemeyi belirtir.Specifies the main assembly that contains the resources.

ResourceSets
Kullanımdan kalktı.

HashtableKültürlerin nesnelere eşlemesini döndüren bir içerir ResourceSet .Contains a Hashtable that returns a mapping from cultures to ResourceSet objects.

Özellikler

BaseName

Kaynak aradığı kaynak dosyalarının kök adını alır ResourceManager .Gets the root name of the resource files that the ResourceManager searches for resources.

FallbackLocation

Varsayılan geri dönüş kaynaklarının alınacağı konumu alır veya ayarlar.Gets or sets the location from which to retrieve default fallback resources.

IgnoreCase

Resource Manager 'ın ve yöntemlerinde büyük/küçük harfe duyarsız kaynak aramalarına izin verip içermediğini gösteren bir değer alır veya ayarlar GetString(String) GetObject(String) .Gets or sets a value that indicates whether the resource manager allows case-insensitive resource lookups in the GetString(String) and GetObject(String) methods.

ResourceSetType

Resource Manager 'ın bir nesne oluşturmak için kullandığı kaynak kümesi nesnesinin türünü alır ResourceSet .Gets the type of the resource set object that the resource manager uses to construct a ResourceSet object.

Yöntemler

CreateFileBasedResourceManager(String, String, Type)

ResourceManagerKaynaklar için derleme bildirimi yerine belirli bir dizini arayan bir nesne döndürür.Returns a ResourceManager object that searches a specific directory instead of an assembly manifest for resources.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.Determines whether the specified object is equal to the current object.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi olarak işlev görür.Serves as the default hash function.

(Devralındığı yer: Object)
GetNeutralResourcesLanguage(Assembly)

Belirtilen bir derlemede özniteliğin değerini alarak ana derlemenin varsayılan kaynaklarına yönelik kültüre özgü bilgileri döndürür NeutralResourcesLanguageAttribute .Returns culture-specific information for the main assembly's default resources by retrieving the value of the NeutralResourcesLanguageAttribute attribute on a specified assembly.

GetObject(String)

Belirtilen dize olmayan kaynağın değerini döndürür.Returns the value of the specified non-string resource.

GetObject(String, CultureInfo)

Belirtilen kültür için yerelleştirilmiş, belirtilen dize olmayan kaynağın değerini alır.Gets the value of the specified non-string resource localized for the specified culture.

GetResourceFileName(CultureInfo)

Verilen nesne için kaynak dosyasının adını üretir CultureInfo .Generates the name of the resource file for the given CultureInfo object.

GetResourceSet(CultureInfo, Boolean, Boolean)

Belirli bir kültür için kaynak kümesini alır.Retrieves the resource set for a particular culture.

GetSatelliteContractVersion(Assembly)

Verilen derlemede özniteliği tarafından belirtilen sürümü döndürür SatelliteContractVersionAttribute .Returns the version specified by the SatelliteContractVersionAttribute attribute in the given assembly.

GetStream(String)

Belirtilen kaynaktan yönetilmeyen bir bellek akışı nesnesi döndürür.Returns an unmanaged memory stream object from the specified resource.

GetStream(String, CultureInfo)

Belirtilen kültürü kullanarak belirtilen kaynaktan bir yönetilmeyen bellek akışı nesnesi döndürür.Returns an unmanaged memory stream object from the specified resource, using the specified culture.

GetString(String)

Belirtilen dize kaynağının değerini döndürür.Returns the value of the specified string resource.

GetString(String, CultureInfo)

Belirtilen kültür için yerelleştirilmiş dize kaynağının değerini döndürür.Returns the value of the string resource localized for the specified culture.

GetType()

TypeGeçerli örneği alır.Gets the Type of the current instance.

(Devralındığı yer: Object)
InternalGetResourceSet(CultureInfo, Boolean, Boolean)

Kaynak kümesi bulmaya yönelik bir uygulama sağlar.Provides the implementation for finding a resource set.

MemberwiseClone()

Geçerli bir basit kopyasını oluşturur Object .Creates a shallow copy of the current Object.

(Devralındığı yer: Object)
ReleaseAllResources()

Resource Manager 'a Close() tüm nesnelerde yöntemi çağırmasını ResourceSet ve tüm kaynakları yayınmasını söyler.Tells the resource manager to call the Close() method on all ResourceSet objects and release all resources.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.Returns a string that represents the current object.

(Devralındığı yer: Object)

Şunlara uygulanır

İş Parçacığı Güvenliği

Bu güvenli iş parçacığı türüdür.This type is thread safe.

Ayrıca bkz.