OVH Cloud OVH Cloud

Référencer des dll

3 réponses
Avatar
Bilb0t
Bonjour,

Je vous expose mon probl=E8me.

J'ai cr=E9=E9 une dll.NET (Class library) appelons la classLib.
Elle contient des infos diff=E9rentes suivant le mode de
compile. Par ex:
Code:
#ifdef DEBUG
conectString =3D "...";
#else
connectString =3D "...";
#endif


Je cr=E9e maintenant un projet ou j'inclus cette dll.
Appelons le proj.

Et l=E0 j'ai un probl=E8me. Il me faut r=E9f=E9rencer ma dll. Mais
si je prend celle de bin/release ou celle de bin/debug,
c'est forc=E9ment diff=E9rent. Hors, je voudrais que suivant le
mode de compile de proj (debug, release), les info dans
classLib soient adapt=E9es.

Y a un truc ?

Merci.

3 réponses

Avatar
Philippe Laloum
Bonjour,

Je pense que ce n'est pas possible. Une astuce néanmoins, peut consister à
référencer classLib depuis un disque logique X:, mappé sélectivement sur un
répertoire contenant la version debug ou release de classLib. Ainsi, sans
changer la référence faite sur classLib depuis proj (X:classLib.dll), on
peut néanmoins sélectionner la version debug ou release de classLib en
changeant le mapping de X:.


"Bilb0t" wrote in message
news:0c2401c4ad0d$18b19d90$
Bonjour,

Je vous expose mon problème.

J'ai créé une dll.NET (Class library) appelons la classLib.
Elle contient des infos différentes suivant le mode de
compile. Par ex:
Code:
#ifdef DEBUG
conectString = "...";
#else
connectString = "...";
#endif


Je crée maintenant un projet ou j'inclus cette dll.
Appelons le proj.

Et là j'ai un problème. Il me faut référencer ma dll. Mais
si je prend celle de bin/release ou celle de bin/debug,
c'est forcément différent. Hors, je voudrais que suivant le
mode de compile de proj (debug, release), les info dans
classLib soient adaptées.

Y a un truc ?

Merci.
Avatar
Patrick Philippot
Bilb0t wrote:
J'ai créé une dll.NET (Class library) appelons la classLib.
Elle contient des infos différentes suivant le mode de
compile. Par ex:
Code:
#ifdef DEBUG
connectString = "...";
#else
connectString = "...";
#endif



Bonjour,

Le problème est donc de détecter si vous tournez un build Debug ou un
build Release. Facile:

#if DEBUG
[assembly: AssemblyConfiguration("Debug")]
#else
[assembly: AssemblyConfiguration("Release")]
#endif

Vous pouvez relire cette valeur à l'exécution et charger une ressource
différente en fonction de ce que vous lisez:

object[] attributes =
Assembly.GetAssembly(this.GetType()).GetCustomAttributes(typeof(AssemblyConfigurationAttribute),
true);
AssemblyConfigurationAttribute ac = (AssemblyConfigurationAttribute)
attributes[0];
string acs = ac.Configuration; // acs vaut "Debug" ou "Release" selon le
cas.

Vous pouvez aussi regarder ça:

http://msmvps.com/bill/archive/2004/06/17/8339.aspx

Mais je peux imaginer quelque chose de beaucoup plus fin: vous pouvez
créer des attributs personnalisés du genre ConnectStringAttribute qui
vont pouvoir être relus de la même manière à l'exécution:

#if DEBUG
[MyAttrs: ConnectString("...chaine1...")]
#else
[MyAttrs: ConnectString("...chaine2...")]
#endif

Pour relire, vous utilisez le même code que ci-dessus, il n'y a que le
type a changer et à utiliser vos propriétés custom (ici une chaîne qui
s'appelerait ConnectString au lieu de Configuration).

Après tout, c'est pour ça que l'on a inventé les attributs
personnalisés: pour pouvoir relire ses infos perso à l'exécution.

Voir la section "Creating custom attributes" dans la doc.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
>-----Message d'origine-----
Bilb0t wrote:
J'ai créé une dll.NET (Class library) appelons la classLib.
Elle contient des infos différentes suivant le mode de
compile. Par ex:
Code:
#ifdef DEBUG
connectString = "...";
#else
connectString = "...";
#endif



Bonjour,

Le problème est donc de détecter si vous tournez un build


Debug ou un
build Release. Facile:

#if DEBUG
[assembly: AssemblyConfiguration("Debug")]
#else
[assembly: AssemblyConfiguration("Release")]
#endif

Vous pouvez relire cette valeur à l'exécution et charger


une ressource
différente en fonction de ce que vous lisez:

object[] attributes =
Assembly.GetAssembly(this.GetType()).GetCustomAttributes(typeof(Assembly ConfigurationAttribute),



true);
AssemblyConfigurationAttribute ac =


(AssemblyConfigurationAttribute)
attributes[0];
string acs = ac.Configuration; // acs vaut "Debug" ou


"Release" selon le
cas.

Vous pouvez aussi regarder ça:

http://msmvps.com/bill/archive/2004/06/17/8339.aspx

Mais je peux imaginer quelque chose de beaucoup plus fin:


vous pouvez
créer des attributs personnalisés du genre


ConnectStringAttribute qui
vont pouvoir être relus de la même manière à l'exécution:

#if DEBUG
[MyAttrs: ConnectString("...chaine1...")]
#else
[MyAttrs: ConnectString("...chaine2...")]
#endif

Pour relire, vous utilisez le même code que ci-dessus, il


n'y a que le
type a changer et à utiliser vos propriétés custom (ici


une chaîne qui
s'appelerait ConnectString au lieu de Configuration).

Après tout, c'est pour ça que l'on a inventé les attributs
personnalisés: pour pouvoir relire ses infos perso à


l'exécution.

Voir la section "Creating custom attributes" dans la doc.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr


.




Je vais regarder ça.

Un grand merci.