2009-07-23 4 views
8

J'ai une DLL qui accède à une base de données et lit la chaîne de connexion à partir d'un paramètre d'application stocké dans le fichier de configuration. L'application qui référence cette DLL devra ensuite définir la valeur de ce paramètre de configuration dans son fichier de configuration.Désactiver DefaultSettingValueAttribute Créer sur les paramètres d'application pour l'application .Net

Le problème que je rencontre est que le code de configuration généré utilise automatiquement ma chaîne de connexion dev comme valeur par défaut via le DefaultSettingValueAttribute. Ensuite, lorsqu'une application fait référence à ma DLL, cela fonctionne sans créer d'entrée dans son propre fichier de configuration car elle utilise la valeur par défaut. Ce bogue n'a pas été intercepté avant le moment du déploiement lorsque la chaîne de connexion dev n'était plus valide.

Existe-t-il un moyen d'utiliser le concepteur pour les paramètres d'application mais désactiver la création du DefaultSettingValueAttribute pour qu'il n'y ait pas de valeur par défaut et que les applications soient forcées de fournir une valeur dans la configuration?

+0

Je ne suis pas sûr qu'ils » d être "forcé" à fournir un réglage. Avez-vous essayé de le retirer à la main? Ce qui se produit. Il se peut que le paramètre soit défini par défaut (T): null pour les types de référence, 0 pour les entiers, etc. –

+2

J'ai essayé de supprimer à la main, mais lorsque vous modifiez les paramètres dans Projet-> Propriétés-> Paramètres, puis il régénère DefaultSettingValueAttribute. – Topdown

+0

Cela expose également les paramètres de développement dans la DLL compilée ou EXE (si vous ouvrez la DLL ou EXE dans un éditeur de texte, essayez de chercher le nom d'utilisateur et le mot de passe de votre base de données) – MaxiWheat

Répondre

15

Sélectionnez l'entrée dont vous souhaitez supprimer la valeur par défaut et dans la fenêtre Propriétés, définissez GenerateDefaultValueInCode sur False.

-2

C'est en retard, mais ...

Lors de la lecture des paramètres d'application, utilisez My.Settings .TheConfigurationKey au lieu de My.MySettings.Default .TheConfigurationKey

Questions connexes