Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Quando o MSBuild compila um projeto .NET Core, os arquivos de recursos XML, que têm a extensão de arquivo .resx , são convertidos em arquivos binários .resources . Os arquivos binários são incorporados na saída do compilador e podem ser lidos pelo ResourceManager. Este artigo descreve como o MSBuild escolhe um nome para cada arquivo .resources .
Sugestão
Se você adicionar explicitamente um item de recurso ao seu arquivo de projeto e ele também estiver incluído com o padrão include globs para .NET Core, você receberá um erro de compilação. Para incluir manualmente arquivos de recursos como EmbeddedResource itens, defina a EnableDefaultEmbeddedResourceItems propriedade como false.
Nome padrão
No .NET Core 3.0 e posterior, o nome padrão para um manifesto de recurso é usado quando ambas as seguintes condições são atendidas:
- O arquivo de recurso não é explicitamente incluído no arquivo de projeto como um
EmbeddedResourceitem comLogicalName,ManifestResourceNameouDependentUponmetadados. - A
EmbeddedResourceUseDependentUponConventionpropriedade não está definida comofalseno arquivo de projeto. Por padrão, essa propriedade é definida comotrue. Para obter mais informações, consulte EmbeddedResourceUseDependentUponConvention.
Se o ficheiro de recursos estiver colocalizado com um ficheiro de origem (.cs ou .vb) que tenha o mesmo nome raiz, o nome completo do primeiro tipo definido no ficheiro de origem será usado como nome do ficheiro de manifesto. Por exemplo, se MyNamespace.Form1 for o primeiro tipo definido em Form1.cs e Form1.cs estiver colocalizado com Form1.resx, o nome de manifesto gerado para esse arquivo de recurso será MyNamespace.Form1.resources.
Metadados LogicalName
Se um arquivo de recurso for 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 quaisquer outros metadados ou configurações.
Por exemplo, o nome do manifesto para o arquivo de recurso definido no trecho de 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 pontos (.) no nome do arquivo não funcionará, o que significa queGetManifestResourceNamesnã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 for 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 para o arquivo de recurso definido no trecho de arquivo de projeto a seguir é SomeName.resources.
<EmbeddedResource Include="X.resx" ManifestResourceName="SomeName" />
O nome de manifesto para o arquivo de recurso definido no seguinte trecho de arquivo de projeto é SomeName.fr-FR.resources.
<EmbeddedResource Include="X.fr-FR.resx" ManifestResourceName="SomeName.fr-FR" />
Metadados DependentUpon
Se um ficheiro de recurso for explicitamente incluído no ficheiro de projeto como um item EmbeddedResource com metadados DependentUpon (e LogicalName e ManifestResourceName estiverem ausentes), as informações do ficheiro de origem definido por DependentUpon serão usadas para o nome do ficheiro de manifesto de recursos. Especificamente, o nome do primeiro tipo definido no arquivo de origem é usado no nome do manifesto da seguinte maneira: Namespace.Classname[. Cultura].recursos.
Por exemplo, o nome do manifesto para o arquivo de recurso 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 de manifesto para o arquivo de recurso definido no seguinte trecho de arquivo de projeto é 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 definido como false no ficheiro de projeto, cada nome de ficheiro de manifesto de recurso será baseado no namespace raiz do projeto e no caminho relativo da raiz do projeto até ao ficheiro .resx. Mais especificamente, o nome do arquivo de manifesto de 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, o padrão será o nome do projeto. - Se
LogicalName,ManifestResourceNameouDependentUponmetadados forem especificados para umEmbeddedResourceitem no arquivo de projeto, essa regra de nomenclatura não se aplicará a esse arquivo de recurso.