Question

Utilisation de VS2005 et VB.NET.

J'ai un projet qui est une API pour un magasin de données que j'ai créé.Une fois compilé, il crée api.dll.

J'ai un deuxième projet dans la même solution qui a une référence de projet au projet API qui, une fois compilé, créera wrapper.dll.Il s’agit essentiellement d’un wrapper pour l’API spécifique à une application.Quand j'utilise wrapper.dll dans cette autre application, je dois copier wrapper.dll et api.dll à ma nouvelle candidature.Comment puis-je demander au projet wrapper de compiler le api.dll en lui-même pour que je n'en ai qu'un dll se déplacer ?

Était-ce utile?

La solution

@Jas, c'est une fonctionnalité spéciale de Visual Studio.La procédure est décrite dans cette entrée de blog, intitulée "Partage d'un fichier de clé de nom fort entre projets".L'exemple concerne le partage de fichiers de clé de nom fort, mais fonctionnera pour tout type de fichier.

En bref, vous faites un clic droit sur votre projet et sélectionnez "Ajouter un élément existant".Accédez au répertoire du ou des fichiers que vous souhaitez lier et mettez en surbrillance le ou les fichiers.Au lieu d'appuyer simplement sur "Ajouter" ou "Ouvrir" (selon votre version de Visual Studio), cliquez sur la petite flèche vers le bas située à droite de ce bouton.Vous verrez les options "Ouvrir" ou "Lier le fichier" si vous utilisez Visual Studio 2003, ou "Ajouter" ou "Ajouter en tant que lien" avec 2005 (je ne suis pas sûr de 2008).Dans tous les cas, choisissez celui qui implique le mot « Lien ».Ensuite, votre projet fera essentiellement référence au fichier - il sera accessible à la fois depuis le projet d'origine dans lequel il se trouvait et depuis le projet auquel vous l'avez "lié".

C'est un moyen pratique de créer un assembly contenant toutes les fonctionnalités de wrapper.dll et api.dll, mais vous devrez vous rappeler de répéter cette procédure chaque fois que vous ajoutez un nouveau fichier à api.dll (mais pas au wrapper. dll).

Autres conseils

Il existe un moyen plus simple.Créez simplement des raccourcis (appelés fichiers liés dans Visual Studio-ese) dans votre projet wrapper.dll qui pointent vers les fichiers source dans api.dll.Cela compilera votre source directement dans wrapper.dll.

Vous devrez probablement utiliser un outil, tel que ILFusionner, pour fusionner les deux assemblées.

Je pense que vous pourriez compiler api.dll en tant que ressource dans wrapper.dll.Accédez ensuite manuellement à cette ressource à partir de api.dll et chargez-la manuellement.J'ai chargé manuellement des assemblys à partir du disque, donc en charger un à partir d'un Stream ne devrait pas être différent.

J'essaierais d'inclure la DLL dans votre projet sous forme de fichier, comme si vous incluiez un fichier texte ou XML (en plus de sa référence de projet pour la compilation).Ensuite, je définirais l'action de construction sur «ressource intégrée». Dans Wrapper.dll, j'utiliserais l'objet d'assemblage pour accéder à API.dll comme toute autre ressource intégrée.Vous souhaiterez alors également charger l’assembly en utilisant Assembly.Load http://msdn.microsoft.com/en-us/library/system.reflection.assembly.load.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top