2009-03-09 3 views
0

Beim Ausführen meiner VS2008 Einheit Integrationstests gegen meine DAL, habe ich festgestellt, dass die Baugruppe machine.config anstelle der app.config der Baugruppe liest.Assembly's App.Config wird ignoriert; Machine.config wird stattdessen gelesen

Hier ist der Überblick über den Call-Stack:

  • Unit-Test-Projekt hat Methode in eine erbt von einer Basisklasse
  • MyDataLayer Klasse Datalayer Projekt aufrufen. Die Methode heißt GetStuff()
  • Basisklasse verwendet System.Configuration. Alles gut.
  • Aufruf dieser Eigenschaft in Code: ConfigurationManager.ConnectionStrings["MyConnStr"] gibt tatsächlich null zurück, weil es anscheinend nicht gefunden wird.
  • Überprüfung der MyDataLayer Klasse, ja, MyConnStr ist da.
  • Überprüfung der Sammlung ConnectionStrings, ja, es hat eine Verbindungszeichenfolge. Es ist das einzige in machine.config, die in C:\Windows\Microsoft.NET\Framework\v2.0.50727\Config\machine.config vorbei ist
  • Ich bin nicht sicher, warum app.config meine DAL die durch die machine.config

Jede Hilfe sehr geschätzt wird abgelöst!

Antwort

4

Nicht sicher, ob dies für Sie gilt, aber Sie müssen sicherstellen, dass die Konfigurationszeichenfolge in der app.config Ihres Unit Test-Projekts und nicht in Ihrem DataLayer-Projekt angegeben ist.

+0

Ray, du bist ein Monster! Ich musste lediglich System.Configuration referenzieren und die App.Config aus dem DataLayer-Projekt in mein UnitTest-Projekt kopieren und freigeben, und es funktionierte. Bravo! –

2

Dies könnte helfen, einige Leute mit Settings.settings Umgang und App.config:

Watch out für GenerateDefaultValueInCod e-Attribut im Bereich Eigenschaften, während alle des Wertes (Zeilen) Bearbeitung im Settings.settings Raster in Visual Studio (VS2008 in meinem Fall).

Wenn Sie GenerateDefaultValueInCode auf True setzen (True ist der Standardwert hier!), Wird der Standardwert in die exe (oder dll) kompiliert, Sie können sie in der Datei eingebettet finden, wenn Sie sie in einem einfachen Texteditor öffnen.

Ich arbeitete an einer Konsolenanwendung und wenn ich Standardwerte in der EXE hatte, ignorierte die Anwendung immer die Konfigurationsdatei im selben Verzeichnis!

Ziemlich ein Albtraum und keine Informationen darüber im gesamten Internet.