J'essaie d'écrire une méthode qui devrait ajouter une ressource à un fichier ResX, la ressource est ajoutée mais les autres ressources contenues dans le fichier ResX sont perdues, je pense que le fichier est remplacé par un nouveau avec seulement la ressource que j'ai ajouté. PS: J'ai pris l'exemple de HERELa méthode ResXResourceWriter remplace l'ensemble du fichier ResX
PS: J'ai pris l'exemple de HERE.
Ce que je fais mal et quels changements dois-je faire dans ma méthode pour résoudre ce problème?
''' <summary>
''' Adds a resource inside a ResX resource table.
''' </summary>
''' <param name="ResXFile">Indicates the ResX file to add the resource.</param>
''' <exception cref="System.Exception"></exception>
Private Sub AddResXResource(ByVal ResXFile As String,
ByVal ResourceName As String,
ByVal Resource As Object,
Optional ByVal Comment As String = Nothing)
If Not IO.File.Exists(ResXFile) Then
Throw New Exception(String.Format("Resource file: '{0}' not found.", ResXFile))
Else
' Open the existent ResX file.
Using ResXWritter As New Resources.ResXResourceWriter(ResXFile)
ResXWritter.AddResource(New Resources.ResXDataNode(ResourceName, Resource) _
With {.Name = ResourceName, .Comment = Comment})
ResXWritter.Generate()
End Using ' ResXWritter As New Resources.ResXResourceWriter(ResXFile)
End If ' Not IO.File.Exists(ResXFile)
End Sub
Voici comment j'utilise la méthode:
Dim MyResource As Bitmap = SystemIcons.Information.ToBitmap
AddResXResource(".\Resources.resx", "SysIcon_Info", MyResource, "Resource comment")
comme vous Semblent juste à l'aide d'un écrivain ResX sur un nom de fichier. Je pense que vous devez utiliser le ResXResourceSet, charger les ressources existantes, obtenir un écrivain de l'ensemble, utiliser l'écrivain pour ajouter votre nouvelle entrée, générer la nouvelle ressource. –
@Marvin Smit merci pour le commentaire, voulez-vous dire ?: 1. récupérer toutes les ressources existantes dans le fichier, 2. tous les ajouter dans le fichier (cela devrait remplacer le fichier existant, mais j'ajoute tous les récupérés ressources du fichier original) et enfin 3. ajouter la nouvelle ressource dans ce fichier ?. J'ai supposé que ces classes faciliteraient cette tâche. – ElektroStudios
1: Oui, lisez-les dans un ensemble de ressources. 2: non, pas besoin de copier. 3: obtenir un écrivain de l'instance resourceset. Ensuite, utilisez votre code indiqué. –