Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Quando o MSBuild compila um projeto do .NET Core, os arquivos de recurso XML, que têm a extensão de arquivo .resx, são convertidos em arquivos .resources binários. Os arquivos binários são inseridos na saída do compilador e podem ser lidos pelo ResourceManager. Este artigo descreve como o MSBuild escolhe um nome para cada arquivo .resources .
Dica
Se você adicionar explicitamente um item de recurso ao arquivo de projeto e ele também estiver incluído com os padrões de inclusão padrão para o .NET Core, você receberá um erro de compilação. Para incluir arquivos de recurso manualmente como itens EmbeddedResource, defina a propriedade EnableDefaultEmbeddedResourceItems como falso.
Nome padrão
No .NET Core 3.0 e posterior, o nome padrão de um manifesto de recurso é usado quando ambas as seguintes condições são atendidas:
- O arquivo de recurso não está explicitamente incluído no arquivo de projeto como um
EmbeddedResourceitem comLogicalName,ManifestResourceNameouDependentUponmetadados. - A propriedade
EmbeddedResourceUseDependentUponConventionnão está definida parafalseno arquivo de projeto. Por padrão, essa propriedade é definida comotrue. Para obter mais informações, confira EmbeddedResourceUseDependentUponConvention.
Se o arquivo de recurso estiver localizado junto com um arquivo de origem (.cs ou .vb) com o mesmo nome raiz, o nome inteiro do primeiro tipo definido no arquivo de origem será usado para o nome do arquivo de manifesto. Por exemplo, se MyNamespace.Form1 for o primeiro tipo definido em Form1.cs e Form1.cs for colocado com Form1.resx, o nome do manifesto gerado para esse arquivo de recurso será MyNamespace.Form1.resources.
Metadados do LogicalName
Se um arquivo de recurso estiver explicitamente incluído no arquivo de projeto como um EmbeddedResource item com LogicalName metadados, o LogicalName valor será usado como o nome do manifesto.
LogicalName tem precedência sobre qualquer outro metadados ou configuração.
Por exemplo, o nome do manifesto do arquivo de recurso definido no trecho do arquivo de projeto a seguir é SomeName.resources.
<EmbeddedResource Include="X.resx" LogicalName="SomeName.resources" />
- ou -
<EmbeddedResource Include="X.fr-FR.resx" LogicalName="SomeName.resources" />
Observação
Se
LogicalNamenão for especificado, umEmbeddedResourcecom dois ponto (.) no nome do arquivo não funcionará, o que significa queGetManifestResourceNamesisso não retorna esse arquivo.O exemplo a seguir funciona corretamente:
<EmbeddedResource Include="X.resx" />O exemplo a seguir não funciona:
<EmbeddedResource Include="X.fr-FR.resx" />
Metadados ManifestResourceName
Se um arquivo de recurso estiver explicitamente incluído no arquivo de projeto como um EmbeddedResource item com ManifestResourceName metadados (e LogicalName estiver ausente), o ManifestResourceName valor, combinado com a extensão de arquivo .resources, será usado como o nome do arquivo de manifesto.
Por exemplo, o nome do manifesto do arquivo de recurso definido no trecho do arquivo de projeto a seguir é SomeName.resources.
<EmbeddedResource Include="X.resx" ManifestResourceName="SomeName" />
O nome do manifesto para o arquivo de recurso, definido no trecho do arquivo de projeto a seguir, é SomeName.fr-FR.resources.
<EmbeddedResource Include="X.fr-FR.resx" ManifestResourceName="SomeName.fr-FR" />
Metadados DependentUpon
Se um arquivo de recurso for explicitamente incluído no arquivo de projeto como um item EmbeddedResource com metadado DependentUpon (e LogicalName e ManifestResourceName estiverem ausentes), as informações do arquivo de origem definidas por DependentUpon serão usadas para o nome do arquivo de manifesto do recurso. Especificamente, o nome do primeiro tipo definido no arquivo de origem é usado no nome do manifesto da seguinte maneira: Namespace.Classname[. Cultura].resources.
Por exemplo, o nome do manifesto do arquivo de recurso que está definido no trecho de arquivo de projeto a seguir é Namespace.Classname.resources (onde Namespace.Classname é a primeira classe definida em MyTypes.cs).
<EmbeddedResource Include="X.resx" DependentUpon="MyTypes.cs">
O nome do manifesto para o arquivo de recurso definido no trecho do arquivo de projeto a seguir é Namespace.Classname.fr-FR.resources (onde Namespace.Classname é a primeira classe definida em MyTypes.cs).
<EmbeddedResource Include="X.fr-FR.resx" DependentUpon="MyTypes.cs">
Propriedade EmbeddedResourceUseDependentUponConvention
Se EmbeddedResourceUseDependentUponConvention estiver configurado como false no arquivo de projeto, cada nome de arquivo do manifesto de recurso será baseado no namespace raiz do projeto e no caminho relativo da raiz do projeto até o arquivo .resx. Mais especificamente, o nome do arquivo de manifesto do recurso gerado é RootNamespace.RelativePathWithDotsForSlashes.[ Cultura.]recursos. Essa também é a lógica usada para gerar nomes de manifesto em versões do .NET Core anteriores à 3.0.
Observação
- Se
RootNamespacenão estiver definido, ele usará o nome do projeto como padrão. - Se
LogicalName,ManifestResourceNameouDependentUponos metadados forem especificados para umEmbeddedResourceitem no arquivo de projeto, essa regra de nomenclatura não se aplicará a esse arquivo de recurso.