Aracılığıyla paylaş


Kaynak bildirim dosyalarının nasıl adlandırıldığı

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 çıktısına gömülür ve ResourceManager tarafından okunabilir. Bu makalede, MSBuild'in her .resources dosyası için nasıl bir ad seçtiği açıklanmaktadır.

Tavsiye

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

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 , EmbeddedResourceveya LogicalName meta veri içeren ManifestResourceNamebir DependentUpon öğe olarak açıkça eklenmez.
  • EmbeddedResourceUseDependentUponConvention özelliği proje dosyasında false olarak belirtilmemiştir. Varsayılan olarak, bu özellik olarak trueayarlanır. Daha fazla bilgi için bkz EmbeddedResourceUseDependentUponConvention.

Kaynak dosya aynı kök dosya adında 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, MyNamespace.Form1 tanımlanan ilk türse ve Form1.csForm1.resx ile birlikte bulunursa, bu kaynak dosyası için oluşturulan bildirim adı MyNamespace.Form1.resources olur.

LogicalName meta verileri

Kaynak dosyası, EmbeddedResource meta verisi içeren bir LogicalName öğe olarak proje dosyasına açıkça dahil edilirse, LogicalName değeri bildirim adı olarak 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" />

Uyarı

  • BelirtilmezseLogicalName, dosya adında iki nokta (EmbeddedResource) bulunan bir . ç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ı, meta veri içeren bir EmbeddedResource öğesi olarak açıkça proje dosyasına dahil edilirse (ve ManifestResourceName yoksa), LogicalName değeri, dosya uzantısı olarak ManifestResourceName ile birleştirilerek bildirim dosyası adı olarak 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.

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

DependentUpon meta verileri

Bir kaynak dosyası, meta verisi EmbeddedResource olan bir DependentUpon öğesi olarak proje dosyasına açıkça dahil edilirse (ve LogicalName ve ManifestResourceName yoksa), DependentUpon tarafından tanımlanan kaynak dosyasındaki bilgiler, kaynak bildirim dosyası adı için 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ı kod parçacığında tanımlanan kaynak dosyasının bildirim adı Namespace.Classname.resources 'tır (burada Namespace.ClassnameMyTypes.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'dir.fr-FR.resources (burada Namespace.ClassnameMyTypes.cs'de tanımlanan ilk sınıftır).

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

EmbeddedResourceUseDependentUponConvention özelliği

Proje dosyasında EmbeddedResourceUseDependentUponConvention değeri false olarak ayarlandığında, her kaynak bildirim dosyasının adı, projenin kök ad alanı ve proje kökünden .resx dosyasına olan göreli yol temel alınarak oluşturulur. Daha açık belirtmek gerekirse, oluşturulan kaynak bildirim dosyası adı RootNamespace.RelativePathWithDotsForSlashes.[Kültür.]resources şeklindedir. Bu, 3.0'ın önceki .NET Core sürümlerinde bildirim adları oluşturmak için de kullanılan mantıktır.

Uyarı

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

Ayrıca bakınız