2008-11-04 7 views
18

Je développe une bibliothèque pour l'utiliser dans d'autres applications et cette bibliothèque contient de nombreuses instructions de débogage et de journalisation grâce à NLog.Visual Studio - Comment supprimer une référence en mode Release

Est-il possible d'exclure la référence à NLog.dll lorsque je passe en mode release?

Cheers,

+2

Bonne question. J'ai un cas d'utilisation où j'ai besoin de retirer une référence en mode release. –

Répondre

25

Vous pouvez modifier manuellement le fichier csproj, et faire quelque chose comme ceci:

<Reference Include="NLog" Condition="'$(Configuration)' == 'Debug'" /> 

Cela ne fait que faire référence dans cette assemblée de débogage. Je ne recommanderais pas de le faire souvent, car ce comportement n'est pas reflété dans la liste des références dans Visual Studio lorsque vous modifiez la configuration. Il fonctionne quand compiler si

+2

Je pense que vous pouvez forcer VS si vous déchargez et rechargez une fois que vous avez changé de cible. –

+5

J'utilise cette méthode intensivement et c'est très utile. Malheureusement, Visual Studio va générer un avertissement à propos de la référence "désactivée". Néanmoins, cela permet des scénarios très importants, tels que le référencement de différents fichiers dans des versions 64 bits et des versions 32 bits. – Sander

0

Je ne peux pas penser à une bonne façon de le faire. Sauf peut-être que vous avez écrit une référence stub pour NLog.dll. Puisque vous utilisez la référence dans votre code, je ne vois pas comment vous pouvez le supprimer dans votre version.

Probablement trop tard maintenant, mais dans le futur, vous pourriez écrire une classe pour envelopper NLog.dll, puis juste le changer en un seul endroit afin qu'il ne se connecte pas réellement dans la version. Ou avoir une sorte de drapeau.

+0

Eh bien, si vous ajoutez du code dans le #if DEBUG, ils sont exclus lors de la compilation en mode de libération –

+0

Wow, faire cela à chaque appel de journal semble très douloureux. Je suggère d'envelopper et ensuite en utilisant l'attribut conditionnel. – fostandy

2

Le seul moyen que je connaisse est de sortir complètement la référence et d'appeler l'ensemble par réflexion. Ensuite, vous devez uniquement vous connecter si l'assembly est chargé.

-1

Il n'y a aucune raison de supprimer une référence si vous êtes sûr qu'aucun code ne sera utilisé par cette DLL. Dans ce cas, vous pouvez simplement supprimer DLL.

-1

Pourquoi voudriez-vous faire cela?

Si vous voulez arrêter la journalisation, vous pouvez désactiver la journalisation par programmation. Le coup de performance sera minime. (J'ai eu beaucoup de succès avec NLog même en enregistrant le processus croisé.)

Sinon, vous devez l'enrouler comme décrit ci-dessus.

-Scott

Questions connexes