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 ,
ManifestResourceName
veyaDependentUpon
meta veri içerenLogicalName
birEmbeddedResource
öğe olarak açıkça eklenmez. EmbeddedResourceUseDependentUponConvention
Özelliği proje dosyasında olarakfalse
ayarlanmadı. Varsayılan olarak, bu özellik olaraktrue
ayarlanı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
Belirtilmezse
LogicalName
, dosya adında iki nokta (.
) bulunan birEmbeddedResource
çalışmaz, buGetManifestResourceNames
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 ManifestResourceName
LogicalName
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 EmbeddedResourceUseDependentUponConvention
false
, 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 ,ManifestResourceName
veyaDependentUpon
meta veriler belirtilirseLogicalName
, bu adlandırma kuralı bu kaynak dosyasına uygulanmaz.