Comment : accéder aux ressources dans les DLL satellites
Les compléments Visual Studio sont déconseillés dans Visual Studio 2013. Vous devriez mettre vos compléments à niveau vers des extensions VSPackage. Pour plus d'informations sur les mises à jour, consultez FAQ : conversion de compléments en extensions VSPackage.
Une fois que vous avez créé une DLL satellite et ajouté les ressources (icônes, bitmaps, chaînes de ressource, etc.), ces dernières sont disponibles dans vos compléments et autres projets d'automation. La procédure ci-dessous montre comment effectuer cette opération.
Notes
Les boîtes de dialogue et les commandes de menu qui s'affichent peuvent être différentes de celles qui sont décrites dans l'aide, en fonction de vos paramètres actifs ou de l'édition utilisée.Ces procédures ont été développées avec les paramètres de développement généraux actifs.Pour modifier vos paramètres, sélectionnez Importation et exportationde paramètres dans le menu Outils.Pour plus d'informations, consultez Paramètres Visual Studio.
Accès aux ressources d'une DLL satellite
Ouvrez Visual Studio et chargez un projet de complément existant ou créez-en un.
Ajoutez l'exemple de code suivant, compilez-le et exécutez-le.
Exemple
Visual Studio utilise l'algorithme général suivant pour rechercher une DLL satellite. Vous pouvez utiliser ce code pour vérifier que la DLL satellite est correctement construite, au bon emplacement, et qu'elle comporte le nom de ressource voulu.
static void Main(string[] args)
{
string path = @"<some path here>";
System.Reflection.Assembly asm =
System.Reflection.Assembly.LoadFrom(path);
// For enhanced security, use the LoadFrom overload
// System.Reflection.Assembly.LoadFrom(path, securityInfo);
// where securityInfo is an instance of an Evidence object.
System.Reflection.Assembly assemblyForResources =
asm.GetSatelliteAssembly(System.Threading.
Thread.CurrentThread.CurrentCulture);
System.IO.Stream stream =
assemblyForResources.GetManifestResourceStream
(assemblyForResources.GetManifestResourceNames()[0]);
ResourceReader resReader = new ResourceReader(stream);
foreach (System.Collections.DictionaryEntry entry in resReader)
{
System.Windows.Forms.MessageBox.Show(entry.Key.ToString());
}
}
Compilation du code
Pour utiliser cet exemple, créez une application console Visual C#, remplacez la fonction Main() par ce code et affectez à la variable de chemin d'accès le chemin de l'assembly de complément (et non celui de la DLL satellite). Après exécution de cette opération, vous pourrez consulter toutes les ressources disponibles dans la DLL satellite.