VS – Unterschied zwischen F5 und CTRL+F5, oder wie finde ich den Fehler

 Allerlei, Entwicklung, Software  Kommentare deaktiviert für VS – Unterschied zwischen F5 und CTRL+F5, oder wie finde ich den Fehler
Okt 102008
 

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. 🙂

Wo platziert man Feedbacks in einer WinForm

 Allerlei, Ausbildung  Kommentare deaktiviert für Wo platziert man Feedbacks in einer WinForm
Aug 122008
 

Zur Zeit bereite ich mich auf den MCPD für Windows Applikationen vor. Im Buch für die Vorbereitung werden Themen behandelt die, meiner Meinung nach, zu den Grundlagen gehören, dass heisst zum 70-536. Aber es sind Themen die mich interessieren. Viele Fragen, die ich bislang hatte, werden beim MCPD beantwortet.

Heute ging es um das Thema Validierung von Eingaben und, vor allem, wo werden die Meldung ausgegeben wenn ein Fehler gefunden wird. Validieren heisst z.B.: ist das Feld leer, was es nicht sein dürfte oder entspricht die Eingabe einer ganz bestimmten Formatierung.

Statusbar
Wenn man einen Entwickler fragt, wo man solche Meldungen ausgeben soll, wird oft die Statusbar erwähnt. Soll aber eine ganz schlechte Lösung sein. Angeblich hat Microsoft im VB.NET Team den folgenden Versuch unternommen. Im Access wurde in der Statusbar folgende Meldung ausgegeben.
”If you notice this message and tell the usability lead, we will give you 15$.”

Es wurde von niemandem gemeldet. Die Stautsbar wird also nicht oder schlecht beachtet. Dort gibt man also keine Meldungen aus.

Tooltip
So wie ich das verstanden habe ist die Implementation für Fehlermeldung UND die normalen Meldungen einfach zu aufwendig. Angeblich auch ungeeignet.

Feld farbig markieren
Was auch sehr beliebt ist, auch bei mir, dass das Feld rot hinterlegt wird. Aber wenn man an Sehbehinderte denkt ist das auch eine ganz ganz schlechte Lösung. Meistens ist das Feld dann rot was dem Kontrast nicht entgegen kommt.

Was ist richtig
Was ist nun der richtige Weg?
Der ErrorProvider. Den kann man einfach an ein Control binden und die Meldung ausgeben. Der Provider produziert dann neben dem Fehlerhaften Control einen blinkenden roten Kreis mit einem Ausrufezeichen drin. Im Tooltip wird die Meldung angezeigt.

Na dann weiss ich was ich in Zukunft anwenden sollte.

VB6 und eine komische Eigenart

 Allerlei  Kommentare deaktiviert für VB6 und eine komische Eigenart
Jul 232008
 

Ich bin nicht unbedingt Fan von VB6. Kommt wahrscheinlich
daher das ich mit C# zu programmieren gelernt habe und
es für mich einfach ein Rückschritt ist.

Dann kommt es immer mal wieder vor das irgend etwas
nicht will. Erklärbar ist das dann aber nicht. Hier ein Beispiel.

If (g_objRAdEx.Fakultaet.Key = "KSF") And (mod ...

Wenn dieser Code im Visual Studio 6 ausführt wurde war Key
immer leer b.z.w. Nothing. Wenn ich dann einen Haltepunkt auf
diese Zeile setzte war die Variable Key nicht mehr Nothing. Es
war der richtige, gewünschte Wert drin. Haltepunkt weg, und es
stimmte nichts mehr.

Das kann doch jetzt wirklich nicht sein.

Also ging ich mich bei den VB Crack’s ausweinen. 1’er konnte mir nicht
helfen, der Andere hatte ein Allerweltsheilmittel.

Das hier.

DoEvents
DoEvents
DoEvents
DoEvents
DoEvents

If (g_objRAdEx.Fakultaet.Key = "KSF") And (mod

Einfach ein paar mal DoEvents auslösen und es tut.

WAS SOLL DAS? 🙁

Wegen sowas kann man an Herzinfarkt sterben. Ich will
wieder mit C# …

dasBlog – Eigene Makros wollten nicht mehr

 Allerlei, Entwicklung, Software  Kommentare deaktiviert für dasBlog – Eigene Makros wollten nicht mehr
Jul 172008
 

Ich lade regelmässig den Source von dasBlog und passe ihn
für mich ein wenig an. Zudem habe ich auch einige Makros selber
gemacht.

Seit einiger Zeit wollen meine Makros einfach nicht mehr. Die selben
Makros, die auf dem Liveserver ihren Dienst verrichten, liefen
lokal auf einen Fehler wenn ich z.B.: auf die Login Seite wollte.

Fehlermeldung in dasBlog

Ich glaube, ich habe die Source rund 1’355 mal runtergeladen
und alles wieder Schritt für Schritt eingerichtet. Immer
blieb ich hier hängen.

Gestern habe ich dann mal alle Makros auskommentiert. Danach
funktionierte alles wieder. Jetzt habe ich Makro für Makro
wieder “einkommentiert” bis der Fehler wieder kam.

Bemerkung des Autors: Das hätte ich schon vor Wochen machen können.

Irgend wann, bei einem Makro das mir den Text des ersten Postings
in kurzer Form zurückgibt, machte es wieder bum. Wie so nur?
Früher lief es doch.

Die Lösung war ganz einfach.

Der Grundaufbau eines Makros ist immer der Selbe.

public virtual Control Foo()
{
	LiteralControl lit = new LiteralControl();

	return lit;
}

Bei mir war das Makro im HEAD Bereich in Gebrauch. Dort

darf das LiteralControl in der Eigenschaft Text nicht den Wert

null haben.

Also, man initialisiere alle LiteralControl mit “”.

Und schon klappt es wieder.

Vote for GENiALi’s Blog 🙂

SvnBridge – Dateien löschen

 Allerlei  Kommentare deaktiviert für SvnBridge – Dateien löschen
Jul 062008
 

dasBlog ist seit einiger Zeit auf CodePlex zuhause. Meiner
Meinung nach ein Fehler. Aber was soll’s.

Um jetzt mit TortoiseSVN den Source zu laden muss
man ein Programm laufen lassen das zwischen SVN und TFS
übersetzt. Dazu gibt es SvnBridge.

Das Teil will bei mir aber nicht. Es dauert und dauert, irgend
wann bekommt man ein schlechtes Gewissen und bricht ab.
Das macht man jetzt ein paar mal und schaut dann weiter.

Ich wollte also jetzt alle Dateien im SvnBridge Verzeichnis
löschen. Was muss ich da feststellen?!

image

Ohne das ich auch nur etwas synchronisiert habe muss ich schon
378’491 Dateien löschen. Und das dauert und dauert und dauert …

Selbst unter Vista mit SP1 ist es ein Geduldsspiel. Ich frage
mich jetzt nur für was genau so viele Dateien/Verzeichnisse gebraucht
werden.

OK. Ich werde jetzt alles nochmals starten und warten und warten und …

Jul 022008
 

 

Ich versuche krampfhaft den Einstieg in das Thema NHibernate zu
finden. Scheint mir gar nicht mal so einfach zu sein.

Schwierig wird es wenn ich englischen Quellen aus dem Weg
gehe. Gesucht ist eine deutschsprachige Anleitung zu NHibernate.

Bücher gibt es NOCH keine. In kürze soll eines erscheinen.
NHibernate schnell + kompakt. Das dauert leider noch.

Ich bin gerade dabei für ein neues Projekt den Datenzugriff zu schreiben.
Das ist eine sehr langweilige Arbeit die man eigentlich gut automatisieren
könnte. Da ich gerne alles und jedes in Objekte verpacke käme mir
so ein OR-Mapper doch gerade recht.

Also, wenn jemand ein gutes Tutorial kennt, ich habe noch nichts
gefunden.

Was kann man genau damit machen?
Wie macht man es?
Welche Techniken gibt es? (XML-Mapping Dateien, Attribute)
Macht man zuerst die Datenbank oder die Objekte?
Gibt es Tools die einem immer gleiche Arbeiten abnimmt?
u.s.w

Jun 262008
 

Gestern Nachmittag war ich an diesem Event. Das war mal wieder was
spannendes.

Vor allem die Geschichte mit der Agilen Softwareentwicklung interessierte
mich. Diese Technik würde mich, ehrlich gesagt, mehr ansprechen als die
jetzige Lösung.

Ich fragte mal nach, ob es eine Mindestgrösse von Projekten braucht
um so was zu betreiben. Müssten das Projekte von > 100 Manntage sein,
muss das Team eine Mindestgrösse haben?

Die Antwort von Marcel Baumann (Dipl.-Ing. Inf. EPFL, MBA, Gründer und CTO
der bbv Software Services AG
) war eindeutig.
Nach unten gibt es keine Mindestgrösse an Projekt oder Team. Es kann
im extrem Fall ein 1 Mann Projekt sein das 1 Tag dauert. 🙂 Na ja.
Ab das wirklich Sinn macht weiss ich nicht.

Aber nach oben gibt es Grenzen. Vor allem bei der Teamgrösse. Ein Team,
wo alle Mitglieder im selben Raum sind und NUR diesem Projekt nachgehen,
sollte nicht grösser als 10 Personen werden.

Auch so Techniken wie Test Driven Development (TDD) und Mocking (NMock2)
würden mich als Entwickler auch sehr interessieren. Aber dabei sehe
ich immer wieder das Problem, dass kein Kunde den Mehraufwand bezahlen
will. Der Kunde will einfach eine funktionierende Software. Er will
nicht gleich viel Test-Code wie Produktiv-Code.

Bei mir ist es vielfach so, dass ich ein Projekt in 20-50 Manntage fertig stelle,
ausliefere, und wenn es dann läuft wird es “vergessen”. In der Regel hört man
da nichts mehr von der Software. Was soll ich da also noch viel Test-Code schreiben?

Das sind aber durchaus Themen wo man Stundenlang diskutieren könnte.

Aber cool wäre es trotzdem.

Tags: , , ,

FYI – Visual Studio 2008 Express Editions

 Allerlei, Software  Kommentare deaktiviert für FYI – Visual Studio 2008 Express Editions
Jan 312008
 

Nur so zur Info. Wer die neuen Visual Studio Versionen
ausprobieren will kann das jetzt machen. Gratis.

Die Express Editions sind jetzt auf deutsch erhältlich.

Und zwar hier:

http://www.microsoft.com/germany/express/

Viel Spass. 🙂

es läuft: Nickelback – The Long Road – Feelin‘ Way Too Damn Good