91 votes

Ressource intégrée dans les bibliothèques .Net Core

J'ai juste commencé à regarder dans .Net de Base, et je ne vois pas classique de ressources et de tout ce qui ressemble à des ressources. Dans le classique .Net bibliothèques de classe, j'ai pu ajouter, par exemple, le texte filtes avec un script pour mon projet, que je peux ajouter ces fichiers à des ressources du projet. Après que j'ai facilement pu l'utiliser de la façon suivante:

Connection.Execure(Properties.Resources.MySuperScript);

Je vois qu'il n'y a pas une telle fonctionnalité .Net bibliothèques de Base, au moins, je ne vois pas. Est-il une alternative .Net de Base pour stocker une partie statique de données en tant que ressource incorporée dans les bibliothèques? Et comment l'utiliser que s'il existe?

119voto

Nacho Coll Points 477

Mise à JOUR:

.NET de Base 1.1 et, plus tard, ont abandonné project.json et retourné à l' .csprojfichiers. Cela modifie l'Étape 2, mais pas tant que ça. La nécessaire les lignes sont très semblables:

<ItemGroup>
  <Content Remove="_fonts/OpenSans.ttf" />
  <Content Remove="_fonts/OpenSans-Bold.ttf" />
  <Content Remove="_fonts/OpenSans-Italic.ttf" />
</ItemGroup>
<ItemGroup>
  <EmbeddedResource Include="_fonts/OpenSans.ttf" />
  <EmbeddedResource Include="_fonts/OpenSans-Bold.ttf" />
  <EmbeddedResource Include="_fonts/OpenSans-Italic.ttf" />
</ItemGroup>

Il peut y avoir un similaire *.tff forme; non confirmées.

Les étapes 1 et 3 sont inchangés.


Pour utiliser les ressources incorporées dans .NET Core 1.0 projet, procédez de la manière suivante:

1.- Ajouter votre fichier incorporé(s) comme d'habitude.

Exemple: certains fichiers de POLICE sur un répertoire nommé "_fonts"

enter image description here

2.- Modifier "du projet.json", afin d'inclure les ressources connexes.

Dans mon cas:

 "buildOptions": {
    "embed": {
      "include": [
        "_fonts/*.ttf"    
      ]
    } 
  },

3.- L'accès à la ressource incorporée dans le code.

var assembly = typeof(MyLibrary.MyClass).GetTypeInfo().Assembly;
Stream resource = assembly.GetManifestResourceStream("MyLibrary._fonts.OpenSans.ttf");

Le point clé est d'utiliser le bon nom sur "GetManifestResourceStream" appel. Vous devez utiliser [nom de l'assembly].[répertoire].[nom de fichier].

Espérons que cela aide quelqu'un là-bas ^_^.

56voto

Drew Noakes Points 69288

Maintenant que project.json est obsolète, vous devez le spécifier dans le fichier .csproj .

 <ItemGroup>
    <EmbeddedResource Include="_fonts\*.ttf" />
</ItemGroup>
 

Vous pouvez utiliser un caractère générique comme indiqué, ou simplement lister explicitement les fichiers.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X