Das hat jetzt einiges an Nerven gekostet. Eigentlich sollte ich nur ein Release-Build machen und das einchecken. Aus lauter gewohnheit habe ich dann mal die EXE-Datei gestartet und musste feststellen das die Anwendung nicht wollte. Wie so nicht? Na ja, dass galt es nun rauszufinden.
Also stellte ich die Konfiguration auf Debug und drückte F5. Die Anwendung startete ohne Fehler. Ein Doppelklick auf die EXE oder ein CTRL+F5, die Anwendung wollte nicht. :-(
Zuerst prüfte ich dann mal alle Verzeichnisse auf einen Schreibschutz. Es war nichts schreibgeschützt.
Da ich nur eine allgemeine Fehlermeldung bekam, die leider nichts sage wo was passierte, musste ich mich mühsam durchsuchen bis ich dort war wo es bum machte. Ich konnte ja nicht debuggen. Mit der MessageBox.Show(“Hallo x”) schaute ich wo es noch tat.
Nach einiger Zeit landete ich hier.
protected override DbConnection CreateConnection(string connectionString)
{
return new SqlConnection(connectionString);
}
Jetzt konnte ich alles in ein try{} catch() Block packen und schauen was genau der Fehler war.
System.TypeInitializationException: Der Typeninitialisierer für
"System.Data.SqlClient.SqlConnection" hat eine Ausnahme verursacht.
---> System.TypeInitializationException: Der Typeninitialisierer für
"System.Data.SqlClient.SqlConnectionFactory" hat eine Ausnahme verursacht.
---> System.TypeInitializationException: Der Typeninitialisierer für
"System.Data.SqlClient.SqlPerformanceCounters" hat eine Ausnahme
verursacht.
---> System.Configuration.ConfigurationErrorsException: Das
Konfigurationssystem konnte nicht initialisiert werden.
---> System.Configuration.ConfigurationErrorsException: Unbekannter
Konfigurationsabschnitt "lag.wordplus". (P:\ProjectX\WP.config line 8)
bei System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean
ignoreLocal)
bei
System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors
schemaErrors)
bei System.Configuration.BaseConfigurationRecord.ThrowIfInitErrors()
bei System.Configuration.ClientConfigurationSystem.EnsureInit(String
configKey)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Configuration.ConfigurationManager.PrepareConfigSystem()
bei System.Configuration.ConfigurationManager.GetSection(String
sectionName)
bei
System.Configuration.PrivilegedConfigurationManager.GetSection(String
sectionName)
bei System.Windows.Forms.WindowsFormsSection.GetSection()
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Data.SqlClient.SqlConnectionFactory..cctor()
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Data.SqlClient.SqlConnection..cctor()
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Data.SqlClient.SqlConnection..ctor()
bei System.Data.SqlClient.SqlConnection..ctor(String connectionString)
bei LAG.WordPlus.Database.SqlDatabase.CreateConnection(String
connectionString) in P:\ProjectX\SqlDatabase.cs:Zeile 23.
Scheinbar wurde der Konfigurationsabschnitt “lag.wordplus” nicht gefunden. Den gibt es aber. Ganz sicher.
Der Unterschied zwischen CTRL+F5 und F5:
CTRL+F5: AppDomain.CurrentDomain.SetupInformation.ConfigurationFile == ANWENDUNGSNAME.config
F5: AppDomain.CurrentDomain.SetupInformation.ConfigurationFile == ANWENDUNGSNAME.vshost.exe.config
Das brachte mich dann auf die Idee die App.config genauer anzuschauen.
Ich fand dort folgendes.
<!-- <configSections>
<section name="lag.wordplus"
type="LAG.WordPlus.Configuration.WordPlusSection, LAG.WordPlus" />
</configSections> -->
Na ja, was soll ich sagen. <!-- --> weg und es tut.
Und wieder um eine Erfahrung reicher. :-)