Question

Tout d'abord je et RFM et je RFM ai essayé de suivre quelques sites, mais je ne peux pas saisir le concept du gestionnaire de ressources.

Quelqu'un peut-il s'il vous plaît me expliquer comment générer un gestionnaire de ressources similaire à celle du VS IDE.

Par exemple, si je compile avec VBC de la ligne de commande, je peux voir tous mes fichiers de ressources.

  

vbc / t: exe myfile.vb / res: res1 / res: RES2

Dim a as Assembly = Assembly.GetExecutingAssembly()
For Each i as string in a.GetManifestResourceNames()
    Console.writeline(i)
Next i
  

RES1

     

RES2

Si je compile avec le VS IDE-je voir:

  

myprogram.Resources.resource

Comment puis-je créer un gestionnaire de ressources manuellement à partir de la ligne de commande pour que je puisse utiliser le gestionnaire de ressources comme je le ferais avec le VS IDE?

Dim CurrentResourceManager As New ResourceManager(_
"myprogram.Resources", CurrentAssembly)
Dim CurrentResourceSet As ResourceSet = CurrentResourceManager.GetResourceSet( _
CultureInfo.CurrentCulture, True, True)

Quand je fais essayer d'utiliser resgen il se plaint de mon dossier extention

  

C: ...> resgen image.bmp source myfile.Resource.resource

     

ResGen: RG0000 d'erreur: Le fichier nommé "image.bmp" n'a pas une extension connue. les fichiers de ressources gérées doivent se terminer par .resX, txt ou .resources.

Dans le manuel, il déclare utiliser RESXGEN pour les images, mais je ne crois pas que cela soit disponible dans VS2008. Je suis coincé.

Mise à jour: Trouvé ceci: http: // msdn .microsoft.com / fr-fr / bibliothèque / ekyft91f (VS.80) .aspx Explique comment écrire un fichier ResX. Semble comme un processus répétitif. Je ne sais pas pourquoi ils comprendraient pas un utilitaire avec visual studio pour le créer.

Je tenté d'utiliser l'exemple de la ResourceWriter. Resgen puked à l'aide des MS fournis ResourceWriter classe.

Était-ce utile?

La solution

version simplifiée d'un fichier Visual Studios généré Resx. J'ai enlevé Token public et les applications de schéma. Le mappage de schéma est de vous aider lors de la création / modification de ces fichiers. Pour la démonstration et la simplicité que je l'ai dépouillé dehors.

<?xml version="1.0" encoding="utf-8"?>
<root>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral</value>
  </resheader>
  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral" />
  <data name="mylibrary" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>Resources\mylibrary.dll;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral</value>
  </data>
  <data name="mytext" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>Resources\mytext.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral</value>
  </data>
</root>

Pour chaque octet ou une chaîne de type comprennent les données suivantes. Où est le nom que vous souhaitez accéder par et est la valeur eitehr un chemin relatif ou dur:

<data name="mytext" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>Resources\mytext.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral</value>
<data>

Compile votre ressource à un seul fichier de gestionnaire de ressources et inclure dans votre projet

resgen /compile myrex.resx

vbc /t:exe myprogram.vb /res:myresx.resource
csc /t:exe myprogram.cs /res:myresx.resource

Vous devez créer un gestionnaire de ressources dans votre programme pour accéder à ces fichiers. Si vous voulez un gestionnaire de ressources fortement typé, vous devez suivre la classe Resource.Designer à l'intérieur de votre projet et de modifier ce fichier. Si vous voulez un simple gestionnaire de ressources ou utiliser simplement GetString GetBytes.

Dim rm As New ResourceManager("rmc", [Assembly].GetExecutingAssembly())
day = rm.GetString("mytext")
o = rm.GetObject("mylibrary.dll")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top