2009-05-25 9 views
4

Espoir Je demande cela correctement:.NET Référence du projet: Comment référencer une DLL via un projet référencé?

J'ai un projet

Projects.Client 

J'ai ma bibliothèque de classes (stuff d'infrastructure J'utilise tout le temps)

Library 

Si l'on suppose ce sont à la fois projets, comment puis-je le faire à partir d'une classe dans le "Projects.Client"

using Library; 

public class xxx 
{ 
    public void DoSomething() 
    { 
     Library.SomeDll.DoSomething(); 
    } 
} 

SomeDll.dll est référencé dans le projet "Library". "Library" est une référence dans le projet client final "Projects.Client"

Je sais que je pourrais simplement ajouter SomeDll au projet "Projects.Client" mais il y a un certain nombre d'éléments et je les utilise tout le temps. J'aimerais pouvoir inclure la "Bibliothèque" et pouvoir en quelque sorte référencer tout ce qui s'y trouve (y compris le code brut et les DLL). Est-ce possible?

s'il vous plaît noter: Je préfère ne pas écrire wrappers explicites pour toutes les méthodes et la dll est statique, je ne peux pas sembler sortir avec le faire dans le projet « Bibliothèque »:

public static class WrapSomeDll 
{ 
    public static extern SomeDll Dll(); 
} 

Toutes les réponses inventives sont appréciées, je n'aurais même pas besoin de doubles références, d'emballages, etc.

+1

La bibliothèque est-elle un assembly géré ou une DLL non managée? –

+0

désolé, j'aurais dû le mentionner est géré – 5x1llz

+0

So bibliothèque fait référence à une multitude de DLL que vous voulez automatiquement référencé par Projects.Client. Tout type publiquement exposé référencé par Library nécessite que son assembly parent soit ajouté au projet Projects.Client. Il n'y a pas moyen de contourner cela. Vous devez cacher ces types. –

Répondre

2

Désolé, cela ne fonctionne pas. Vous avez besoin de la référence à SomeDll pour utiliser ses métadonnées dans Project.Client. C'est vraiment aussi simple que ça. Gardez à l'esprit que les références ne sont pas simplement une question de résolution de symboles pour les adresses. Il s'agit de récupérer les métadonnées (types) afin qu'elles puissent être utilisées.

+0

merci, je souhaite qu'il y avait un moyen de le faire cependant, donc je ne dois pas toujours ré-importer les mêmes références dans tous les projets que je fais. – 5x1llz

+0

Essayez d'enregistrer une macro pendant que vous faites Ajouter une référence. Si cela ne vous aide pas, procurez-vous le Kit de développement Visual Studio SDK et apprenez suffisamment pour apprendre à ajouter une référence à un projet. Sinon, créez votre propre modèle de projet qui contient déjà les références. –

0

Vous avez juste besoin de référencer le projet et d'ajouter en utilisant les clauses pour les espaces de noms que vous souhaitez utiliser. Il n'est pas nécessaire de spécifier le nom de la DLL

+0

Ne fonctionne pas malheureusement, c'est ce que je supposais moi-même. Lorsque j'utilise l'option , elle ne câble pas automatiquement TOUS les espaces de noms dans les projets référencés. La DLL est donc dans un autre projet. Si je ne fais que réorganiser le projet, comment puis-je accéder à la DLL "enfant" en utilisant une instruction using? – 5x1llz

+0

Je ne comprends pas ce que vous voulez dire ... "using" n'est pas utilisé pour référencer une DLL, seulement pour importer un espace de noms dans le fichier de code. –

Questions connexes