2009-03-09 4 views
0

En exécutant mon VS2008 unité tests d'intégration contre mon DAL, j'ai constaté que l'assemblée lit machine.config au lieu de app.config de l'assemblée.App.Config de l'assembly est ignoré; Machine.config étant lu à la place

Voici la diminution des effectifs sur la pile d'appel: méthode

  • projet de test Unité a l'appel dans une classe projet dataLayer
  • MyDataLayer hérite d'une classe de base. La méthode est appelée GetStuff()
  • La classe de base utilise System.Configuration. Tout bon.
  • l'appel de cette propriété dans le code: ConfigurationManager.ConnectionStrings["MyConnStr"] renvoie effectivement null car il n'est pas trouvé en apparence.
  • en vérifiant la classe MyDataLayer, oui, MyConnStr est là.
  • en vérifiant la collection ConnectionStrings, oui, il a une chaîne de connexion. Il est celui machine.config qui est plus dans C:\Windows\Microsoft.NET\Framework\v2.0.50727\Config\machine.config
  • Je ne sais pas pourquoi mon DAL de app.config est remplacé par le machine.config

Toute aide est appréciée!

Répondre

4

Vous ne savez pas si cela s'applique à vous, mais vous devez vous assurer que la chaîne de configuration se trouve dans le fichier app.config de votre projet de test d'unité, et non dans votre projet DataLayer.

+0

Ray, vous êtes un monstre! Tout ce que j'avais à faire était de faire référence à System.Configuration et de copier/partager le App.Config du projet DataLayer à mon projet UnitTest, et cela a fonctionné. Bravo! –

2

Cela pourrait aider à certaines personnes face à Settings.settings et App.config:

Méfiez-vous GenerateDefaultValueInCod attribut e dans le volet Propriétés lors de l'édition tout de la valeur (lignes) dans la grille Settings.settings dans Visual Studio (VS2008 dans mon cas). Si vous définissez GenerateDefaultValueInCode à True (True est la valeur par défaut ici!), La valeur par défaut est compilée dans l'exe (ou dll), vous pouvez le trouver intégré dans le fichier lorsque vous l'ouvrez dans un éditeur de texte brut.

Je travaillais sur une application console et si j'avais des valeurs par défaut dans l'exe, l'application ignorait toujours le fichier de configuration placé dans le même répertoire!

Tout un cauchemar et aucune information à ce sujet sur Internet.

Questions connexes