J'essaie de faire en sorte que notre application puisse gérer différents jeux d'icônes (pour qu'elle soit en quelque sorte skinnable). Je me suis renseigné sur la manière habituelle de le faire aquí . Lorsque j'ai essayé d'appliquer la solution proposée dans la réponse, j'ai remplacé tous les chemins d'accès aux icônes codés en dur dans les fichiers .resx par des chemins utilisant une variable d'environnement. Par exemple, j'ai remplacé...
<data name="btnDel" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\..\Icons\btnDel.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
...avec :
<data name="btnDel" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>$(IconsFolder)\btnDel.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
Ensuite, comme test initial, j'ai défini une variable d'environnement au niveau du système appelée IconsFolder
J'ai appliqué les changements, redémarré Visual Studio et essayé de construire. Mais j'ai obtenu cette erreur :
D:\SVN.DRA.WorkingCopy\UserControl\My Project\Resources.resx(123,5): error MSB3103: Invalid Resx file. Could not find a part of the path 'D:\SVN.DRA.WorkingCopy\UserControl\My Project\$(IconsFolder)\btnDel.png'. Line 123, position 5.
Il semble que les fichiers .resx ne comprennent pas les variables d'environnement. Comment puis-je éviter de coder en dur ces chemins, alors ?
EDIT : Chaque icône peut être référencée par plus d'un projet, donc la variable d'environnement de n'importe quel mécanisme utilisé pour configurer les chemins doit être disponible à l'échelle de la solution, et je devrais être en mesure de la définir à l'intérieur d'un script de MSBuild.
EDIT 2 : Tous mes formulaires sont définis dans des projets C# ou VB.NET