Kaynak bildirim dosyalarının adı

MSBuild bir .NET Core projesi derlediğinde, .resx dosya uzantısına sahip XML kaynak dosyaları ikili .resources dosyalarına dönüştürülür. İkili dosyalar derleyicinin çıkışına eklenir ve tarafından ResourceManagerokunabilir. Bu makalede, MSBuild'in her .resources dosyası için nasıl bir ad seçtiği açıklanmaktadır.

İpucu

Proje dosyanıza açıkça bir kaynak öğesi eklerseniz ve .NET Core için varsayılan ekleme glob'larına da eklenirse, derleme hatası alırsınız. Kaynak dosyalarını el ile öğe olarak EmbeddedResource eklemek için özelliğini false olarak ayarlayın EnableDefaultEmbeddedResourceItems .

Varsayılan ad

.NET Core 3.0 ve sonraki sürümlerinde, aşağıdaki koşulların her ikisi de karşılandığında kaynak bildiriminin varsayılan adı kullanılır:

  • Kaynak dosyası, proje dosyasına , ManifestResourceNameveya DependentUpon meta veri içeren LogicalNamebir EmbeddedResource öğe olarak açıkça eklenmez.
  • EmbeddedResourceUseDependentUponConvention Özelliği proje dosyasında olarak false ayarlanmadı. Varsayılan olarak, bu özellik olarak trueayarlanır. Daha fazla bilgi için bkz . EmbeddedResourceUseDependentUponConvention.

Kaynak dosya aynı kök dosya adına sahip bir kaynak dosya (.cs veya .vb) ile birlikte bulunursa, bildirim dosyası adı için kaynak dosyada tanımlanan ilk türün tam adı kullanılır. Örneğin, Form1.cs tanımlanan ilk türse ve Form1.cs Form1.resx ile birlikte bulunursaMyNamespace.Form1, bu kaynak dosyası için oluşturulan bildirim adı MyNamespace.Form1.resources olur.

LogicalName meta verileri

Kaynak dosyası proje dosyasına açıkça meta veri içeren LogicalName bir EmbeddedResource öğe olarak dahil edilirse, LogicalName bildirim adı olarak değer kullanılır. LogicalName diğer meta veriler veya ayarlardan önceliklidir.

Örneğin, aşağıdaki proje dosyası kod parçacığında tanımlanan kaynak dosyasının bildirim adı SomeName.resources şeklindedir.

<EmbeddedResource Include="X.resx" LogicalName="SomeName.resources" />

-veya-

<EmbeddedResource Include="X.fr-FR.resx" LogicalName="SomeName.resources" />

Not

  • BelirtilmezseLogicalName, dosya adında iki nokta (.) bulunan bir EmbeddedResource çalışmaz, bu GetManifestResourceNames da bu dosyayı döndürmez.

    Aşağıdaki örnek düzgün çalışır:

    <EmbeddedResource Include="X.resx" />
    

    Aşağıdaki örnek çalışmıyor:

    <EmbeddedResource Include="X.fr-FR.resx" />
    

ManifestResourceName meta verileri

Kaynak dosyası açıkça proje dosyasına meta veri içeren bir EmbeddedResource öğe olarak dahil edilirse (ve LogicalName yoksa), ManifestResourceName bildirim dosyası adı olarak .resources dosya uzantısıyla birlikte değer ManifestResourceName kullanılır.

Örneğin, aşağıdaki proje dosyası kod parçacığında tanımlanan kaynak dosyasının bildirim adı SomeName.resources şeklindedir.

<EmbeddedResource Include="X.resx" ManifestResourceName="SomeName" />

Aşağıdaki proje dosyası kod parçacığında tanımlanan kaynak dosyasının bildirim adı SomeName.fr-FR.resources'tır.

<EmbeddedResource Include="X.fr-FR.resx" ManifestResourceName="SomeName.fr-FR" />

DependentUpon meta verileri

Bir kaynak dosyası proje dosyasına açıkça meta veri içeren bir EmbeddedResource öğe olarak dahil edilirse (ve ManifestResourceNameLogicalName yoksa), tarafından tanımlanan DependentUpon kaynak dosyadaki bilgiler kaynak bildirim dosyası adı için DependentUpon kullanılır. Özellikle, kaynak dosyada tanımlanan ilk türün adı bildirim adında aşağıdaki gibi kullanılır: Namespace.Classname[. Kültür].resources.

Örneğin, aşağıdaki proje dosyası parçacığında tanımlanan kaynak dosyasının bildirim adı Namespace.Classname.resources 'tır (burada Namespace.Classname MyTypes.cs'de tanımlanan ilk sınıftır).

<EmbeddedResource Include="X.resx" DependentUpon="MyTypes.cs">

Aşağıdaki proje dosyası kod parçacığında tanımlanan kaynak dosyasının bildirim adı Namespace.Classname.fr-FR.resources'tır (burada Namespace.Classname MyTypes.cs'de tanımlanan ilk sınıftır).

<EmbeddedResource Include="X.fr-FR.resx" DependentUpon="MyTypes.cs">

EmbeddedResourceUseDependentUponConvention özelliği

Proje dosyasında olarak ayarlanırsa EmbeddedResourceUseDependentUponConventionfalse , her kaynak bildirim dosyası adı projenin kök ad alanını ve proje kökünden .resx dosyasına göreli yolu temel alır. Daha açık belirtmek gerekirse, oluşturulan kaynak bildirim dosyası adı RootNamespace.RelativePathWithDotsForSlashes'tir .[ Kültür.] kaynakları seçin. Bu, 3.0'ın önceki .NET Core sürümlerinde bildirim adları oluşturmak için de kullanılan mantıktır.

Not

  • Tanımlanmamışsa RootNamespace , varsayılan olarak proje adını kullanır.
  • Proje dosyasındaki bir EmbeddedResource öğe için , ManifestResourceNameveya DependentUpon meta veriler belirtilirseLogicalName, bu adlandırma kuralı bu kaynak dosyasına uygulanmaz.

Ayrıca bkz.