Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Když MSBuild zkompiluje projekt .NET Core, soubory prostředků XML, které mají příponu souboru .resx , se převedou na binární soubory .resources . Binární soubory jsou vloženy do výstupu kompilátoru a lze je číst ResourceManagerpomocí . Tento článek popisuje, jak nástroj MSBuild zvolí název pro každý soubor .resources .
Návod
Pokud do souboru projektu explicitně přidáte položku zdroje, která je také součástí výchozího zahrnutí globů pro .NET Core, zobrazí se chyba sestavení. Chcete-li ručně zahrnout soubory prostředků jako EmbeddedResource položky, nastavte EnableDefaultEmbeddedResourceItems vlastnost na false.
Výchozí název
V .NET Core 3.0 a novějších se při splnění obou následujících podmínek použije výchozí název manifestu prostředku:
- Soubor zdroje není explicitně součástí souboru projektu jako
EmbeddedResourcepoložka sLogicalName,ManifestResourceNameneboDependentUponmetadaty. - Vlastnost
EmbeddedResourceUseDependentUponConventionnení nastavena nafalsev souboru projektu. Ve výchozím nastavení je tato vlastnost nastavena natruehodnotu . Další informace naleznete v EmbeddedResourceUseDependentUponConvention.
Pokud je soubor prostředků umístěn společně se zdrojovým souborem (.cs nebo .vb) se stejným názvem kořenového souboru, použije se úplný název prvního typu, který je definovaný ve zdrojovém souboru, pro název souboru manifestu. Pokud je například MyNamespace.Form1 první typ definovaný v Form1.cs a Form1.cs je umístěný společně s Form1.resx, vygenerovaný název manifestu pro tento soubor prostředků je MyNamespace.Form1.resources.
Metadata pro logický název
Pokud je soubor prostředků výslovně součástí souboru projektu jako EmbeddedResource položka s LogicalName metadaty, hodnota LogicalName se použije jako název manifestu.
LogicalName má přednost před jakýmkoli jiným metadatem nebo nastavením.
Například název manifestu pro soubor prostředků definovaný v následujícím fragmentu souboru projektu je SomeName.resources.
<EmbeddedResource Include="X.resx" LogicalName="SomeName.resources" />
nebo
<EmbeddedResource Include="X.fr-FR.resx" LogicalName="SomeName.resources" />
Poznámka:
Pokud
LogicalNamenení zadaný, nefunguje hodnotaEmbeddedResourcese dvěma tečkami (.) v názvu souboru, což znamená, žeGetManifestResourceNamestento soubor nevrátí.Následující příklad funguje správně:
<EmbeddedResource Include="X.resx" />Následující příklad nefunguje:
<EmbeddedResource Include="X.fr-FR.resx" />
Metadata ManifestResourceName
Pokud je soubor prostředků explicitně zahrnut do souboru projektu jako EmbeddedResource položka s ManifestResourceName metadaty (a LogicalName chybí), ManifestResourceName hodnota se spolu s příponou souboru .resources použije jako manifestní název souboru.
Například název manifestu pro soubor prostředků definovaný v následujícím fragmentu souboru projektu je SomeName.resources.
<EmbeddedResource Include="X.resx" ManifestResourceName="SomeName" />
Název manifestu pro soubor prostředků definovaný v následujícím fragmentu kódu souboru projektu je SomeName.fr-FR.resources.
<EmbeddedResource Include="X.fr-FR.resx" ManifestResourceName="SomeName.fr-FR" />
Metaúdaje závislé na
Pokud je soubor prostředků explicitně zahrnutý do souboru projektu jako EmbeddedResource položka s DependentUpon metadaty (a LogicalName a ManifestResourceName chybí), použijí se informace ze zdrojového souboru definovaného pomocí DependentUpon pro název souboru manifestu prostředků. Konkrétně se název prvního typu definovaného ve zdrojovém souboru používá v názvu manifestu následujícím způsobem: Namespace.Classname[. Culture].resources.
Například název manifestu pro soubor prostředků definovaný v následujícím fragmentu souboru projektu je Namespace.Classname.resources (kde Namespace.Classname je první třída definovaná v MyTypes.cs).
<EmbeddedResource Include="X.resx" DependentUpon="MyTypes.cs">
Název manifestu pro soubor prostředků definovaný v následujícím fragmentu kódu souboru projektu je Namespace.Classname.fr-FR.resources (kde Namespace.Classname je první třída definovaná v MyTypes.cs).
<EmbeddedResource Include="X.fr-FR.resx" DependentUpon="MyTypes.cs">
EmbeddedResourceUseDependentUponConvention – vlastnost
Pokud je v souboru projektu EmbeddedResourceUseDependentUponConvention nastaveno, každý název souboru manifestu prostředku je založený na kořenovém oboru názvů projektu a relativní cesta od kořenového adresáře projektu k souboru false. Konkrétně název vygenerovaného souboru manifestu prostředku je RootNamespace.RelativePathWithDotsForSlashes.[Culture.]resources. Toto je také logika používaná ke generování názvů manifestů ve verzích .NET Core před verzí 3.0.
Poznámka:
- Pokud
RootNamespacenení definován, nastaví se jako výchozí název projektu. - Pokud jsou pro položku
LogicalNamev souboru projektu zadána metadataManifestResourceName,DependentUponneboEmbeddedResource, toto pravidlo pojmenování se nevztahuje na tento soubor prostředků.