Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando MSBuild compila un progetto .NET Core, i file di risorse XML con estensione resx vengono convertiti in file binari con estensione resources . I file binari sono incorporati nell'output del compilatore e possono essere letti da ResourceManager. Questo articolo descrive in che modo MSBuild sceglie un nome per ogni file con estensione resources .
Suggerimento
Se si aggiunge in modo esplicito un elemento di risorsa al file di progetto ed è incluso anche con i glob predefiniti per .NET Core, verrà visualizzato un errore di build. Per includere manualmente i file di risorse come EmbeddedResource elementi, impostare la EnableDefaultEmbeddedResourceItems proprietà su false.
Nome predefinito
In .NET Core 3.0 e versioni successive viene usato il nome predefinito per un manifesto della risorsa quando vengono soddisfatte entrambe le condizioni seguenti:
- Il file di risorse non è incluso in modo esplicito nel file di progetto come elemento
EmbeddedResourcecon i metadatiLogicalName,ManifestResourceNameoDependentUpon. - La
EmbeddedResourceUseDependentUponConventionproprietà non è impostata sufalsenel file di progetto. Per impostazione predefinita, questa proprietà è impostata sutrue. Per ulteriori informazioni, consultare EmbeddedResourceUseDependentUponConvention.
Se il file di risorse è condiviso con un file di origine (.cs o .vb) dello stesso nome di file radice, il nome completo del primo tipo definito nel file di origine viene usato per il nome del file manifesto. Ad esempio, se MyNamespace.Form1 è il primo tipo definito in Form1.cs e Form1.cs si trova in un percorso condiviso con Form1.resx, il nome manifesto generato per tale file di risorse è MyNamespace.Form1.resources.
Metadati NomeLogico
Se un file di risorse viene incluso in modo esplicito nel file di progetto come EmbeddedResource elemento con LogicalName metadati, il LogicalName valore viene usato come nome manifesto.
LogicalName ha la precedenza su qualsiasi altro metadati o impostazione.
Ad esempio, il nome del manifesto per il file di risorse definito nel frammento di file di progetto seguente è SomeName.resources.
<EmbeddedResource Include="X.resx" LogicalName="SomeName.resources" />
oppure
<EmbeddedResource Include="X.fr-FR.resx" LogicalName="SomeName.resources" />
Annotazioni
Se
LogicalNamenon viene specificato, un oggettoEmbeddedResourcecon due punti (.) nel nome file non funziona, il che significa cheGetManifestResourceNamesnon restituisce tale file.L'esempio seguente funziona correttamente:
<EmbeddedResource Include="X.resx" />L'esempio seguente non funziona:
<EmbeddedResource Include="X.fr-FR.resx" />
Metadati di ManifestResourceName
Se un file di risorse viene incluso in modo esplicito nel file di progetto come EmbeddedResource elemento con ManifestResourceName metadati (ed LogicalName è assente), il ManifestResourceName valore, combinato con l'estensione .resources del file, viene usato come nome del file manifesto.
Ad esempio, il nome del manifesto per il file di risorse definito nel frammento di file di progetto seguente è SomeName.resources.
<EmbeddedResource Include="X.resx" ManifestResourceName="SomeName" />
Il nome del manifesto per il file di risorse definito nel frammento di file di progetto seguente è SomeName.fr-FR.resources.
<EmbeddedResource Include="X.fr-FR.resx" ManifestResourceName="SomeName.fr-FR" />
Metadati DependentUpon
Se un file di risorse viene incluso esplicitamente nel file di progetto come EmbeddedResource elemento con DependentUpon metadati (e LogicalName e ManifestResourceName sono assenti), le informazioni dal file di origine definite da DependentUpon vengono utilizzate per il nome del file manifesto della risorsa. In particolare, il nome del primo tipo definito nel file di origine viene usato nel nome del manifesto come indicato di seguito: Namespace.Classname[. Culture].resources.
Ad esempio, il nome del manifesto per il file di risorse definito nel frammento di file di progetto seguente è Namespace.Classname.resources (dove Namespace.Classname è la prima classe definita in MyTypes.cs).
<EmbeddedResource Include="X.resx" DependentUpon="MyTypes.cs">
Il nome del manifesto per il file di risorse definito nel frammento di file di progetto seguente è Namespace.Classname.fr-FR.resources (dove Namespace.Classname è la prima classe definita in MyTypes.cs).
<EmbeddedResource Include="X.fr-FR.resx" DependentUpon="MyTypes.cs">
EmbeddedResourceUseDependentUponConvention - proprietà
Se EmbeddedResourceUseDependentUponConvention è impostato su false nel file di progetto, ogni nome del file manifesto della risorsa si basa sullo spazio dei nomi radice per il progetto e sul percorso relativo dalla radice del progetto al file resx . In particolare, il nome del file manifesto della risorsa generato è RootNamespace.RelativePathWithDotsForSlashes.[ Culture.]risorse. Questa è anche la logica usata per generare nomi manifesto nelle versioni di .NET Core precedenti alla 3.0.
Annotazioni
- Se
RootNamespacenon è definito, per impostazione predefinita viene impostato il nome del progetto. - Se
LogicalName,ManifestResourceNameoDependentUponi metadati vengono specificati per unEmbeddedResourceelemento nel file di progetto, questa regola di denominazione non si applica a tale file di risorse.