Platz 1 bei Google ;)

Heute habe ich meine Zugriff auf mein Blog mal wieder seit langem kontrolliert und ich war über die hohe Anzahl an Zugriffen erstaunt, die über die Suchbegriffe „VS2010 SP1“ und „VS 2010 SP1“ auf meiner Seite landeten.

Eine Suche über Google ergab, dass mein Blog für diese Suchbegriffe auf Platz 1 steht, und das ganz ohne Werbung und Optimierung 😉

Aufstellung aller Änderungen an der MFC durch VS-2010 SP1

Ich habe mir mal die Mühe gemacht alle Änderungenan der MFC, die im VS-2010 SP1 enthalten sind, hier im Detail aufzuführen.

Viele Änderungen sind es nicht, wie man schnell sieht. Ich empfehle als weitere Quelle für Infos über den SP1 die bekannten Blogs des MS-C++ Teams und die KB.
http://blogs.msdn.com/b/vcblog/archive/2011/03/10/10139062.aspx
http://support.microsoft.com/kb/983509

Neue Samples finden sich nach dem SP1 Setup auf der Festplatte im folgenden Ordner:
C:\Program Files\Microsoft Visual Studio 10.0\Samples\1033\VC2010SP1Samples.zip

Für entsprechende bekannte Fixes habe den Text aus den Blogs übernommen. Alle anderen Änderungen habe ich durch einen Vergleich des Sourcecode mit WinMerge ermittelt. Codeänderungendie ich nicht direkt einem Fehler zuordnen konnte habe ich mit dem Prefix Change, markiert und natürlich die neuen Features entsprechend.

In einem späteren Artikel werde ich mich noch die Änderungenan CRT und STL genauer unter die Lupe nehmen.

Neues Feature: Direct2D Unterstützung (dokumentiert)

Direct2D, a hardware-accelerated, immediate-mode, 2-D graphics API that provides high performance and high-quality rendering for 2-D geometry, bitmaps, and text. For more information, visit the following Microsoft website: Direct2D.
http://msdn.microsoft.com/en-us/library/dd370990.aspx
http://msdn.microsoft.com/en-us/library/gg482719.aspx

Geänderte Dateien:

  • afx.h, afxglobals.h, afxrendertarget.h, afxwin.h
  • afxglobals.cpp, afxrendertarget.cpp, appui3.cpp, wincore.cpp

Anmerkung: Die Verwendung von Direct2D führt dazu, dass CoInitialize ausgeführt wird.

Neues Feature: Windows Animation Manager Unterstützung (dokumentiert)

Windows Animation Manager, which enables rich animation of user interface elements. For more information, visit the following Microsoft website: Windows Animation Manager.
http://msdn.microsoft.com/en-us/library/gg482719.aspx

Geänderte Dateien:

  • afxanimationcontroller.h, afxanimationhelper.h, afxwin.h
  • afxanimationcontroller.cpp

Bugfix: Korrektur eines Fehlers in den RDX Kompontenten (dokumentiert)

In the CDatabase/Crecordset MFC, the „DoFieldExchange“ variable does not work correctly in Visual Studio 2010.
http://connect.microsoft.com/VisualStudio/feedback/details/574974

Geänderte Dateien:

  • dbrfx.cpp

Bugfix:  Umgang mit SPI_GETNONCLIENTMETRICS in unterschiedlichen Windows Versionen (nicht dokumentiert)

Der interne Umgang mit unterschiedlichen Windows Versionen und SPI_GETNONCLIENTMETRICS wurde gefixed.

Geänderte Dateien:

  • afxglobals.cpp, afxribbonbar.cpp, afxvisualmanageroffice2007.cpp, afxvisualmanagerwindows7.cpp

Change: Cleanup der MFCNext Klassen (nicht dokumentiert)

Das Cleanup für die neuen MFC-Next Klassen wurde geändert.

Geänderte Dateien:

  • afxcontrolbarutil.h
  • afxglobals.cpp, afxwinappex.cpp, ctlmodul.cpp

Bugfix: Fehler bei Anzeige in CFormView Klassen (nicht dokumentiert)

VC-2010 MFC CFormViewzeichnet Buttons beim Rollenfalsch, es erscheinen schwarze Blöcke
http://blog.m-ri.de/index.php/2010/08/28/bug-vc-2010-cformview-zeichnet-buttons-beim-rollen-falsch-es-erscheinen-schwarze-bloecke/

Geänderte Dateien:

  • afxext.h
  • viewform.cpp

Bugfix: CImageList::DrawIndirect wurde korrigiert (nicht dokumentiert)

CImageList::DrawIndirect funktioniert nicht korrekt weil cbSize nicht initialisiert wurde
http://blog.m-ri.de/index.php/2010/07/21/bug-in-der-mfc-von-vc-2010-in-cimagelistdrawindirect/

Geänderte Dateien:

  • winctrl7.cpp

Change: Änderung des Suchalgorithmus für MFC Satellite DLLs (nicht dokumentiert)

Das Handling des Suchalgorithmus für die MFC Resource DLLs wurde geändert

Geänderte Dateien:

  • appcore.cpp, dllinit.cpp

 

PS:
Erstaunlich, dass zwei der Bugs, die ich zur MFC gemeldet habe auch direkt in diesem SP1 gefixed wurden. Das ist eine Quote, die ich in den letzten 12 Jahren bei einem SP noch nie hatte 🙂

Nachtrag und Ergänzungen am 18.03.2011
durch Sven von http://www.speedproject.de

Infos zum Laden der dwmapi.dll

Die Datei dwmapi.dll wird nun explizit aus dem Systemverzeichnis geladen.

Geänderte Dateien:

  • afxglobals.cpp

Infos zum Suchalgorithmus der MFC DLLs

Die Änderung des Suchalgorithmus für die zusätzlichen Sprachressourcen ist ebenfalls eine Schutzmaßname gegen das ‘Binary Planting’. Die Dlls werden jetzt nur noch aus dem Verzeichnis geladen, in dem sich die MFC-Dll befindet.

Infos zu dem geänderten Clennup der MFCNext Klassen

Der Grund für die Änderung beim Aufräumen ist wohl ein mögliches Speicherleck beim Beenden:
http://connect.microsoft.com/VisualStudio/feedback/details/577870/cmfcbutton-causes-memory-leak

Danke Sven!

Massive Probleme mit ADO auf Windows 7 SP1

Windows 7 SP1 scheint einige Probleme in Bezug auf ADO zu haben. So jedenfalls hat dies Mike Ryan gemeldet.
Hier die beiden Threads in den MSDN Foren, die von den Problemen berichten:

  1. Massive Thread-Handle Leaks bei asnychronen Operationen:
    ADO, adAsyncExecute and Windows 7 SP1 handles leaking
    http://social.msdn.microsoft.com/Forums/en/sqldataaccess/thread/68e23681-f6b5-4ed5-b963-e63e34eeac2f
    Dieser Bug wurde bereits von Microsoft bestätigt.
    Wer einen Fix braucht muss sich an den Microsoft Support wenden.
  2. Das zweite Problem betrifft die COM Registrierung für Applikationen, die auf Windows 7 SP1 Maschinen gebaut werden.
    Breaking change in MDAC ADODB COM components in Windows 7 Service Pack 1
    http://social.msdn.microsoft.com/Forums/en-US/windowsgeneraldevelopmentissues/thread/3a4ce946-effa-4f77-98a6-34f11c6b5a13
    Siehe auch:
    http://blogs.technet.com/b/asiasupp/archive/2011/03/14/changes-in-mdac-adodb-com-components-in-windows-7-service-pack-1.aspx

PS: Ich bin ziemlich froh, dass ich direkt auf OLD-DB arbeite… 😉

BUG: Breaking Change durch VS-2010 SP1 für manche C++/CLI Projekte

Am 09.03. wurde im US-VCGeneral Forum ein Bug öffentlich, der durch SP1 verursacht wurde.
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/4b8f353d-8153-45d6-b286-10403cdf159a

Nachdem die Produktgruppe auf diesen Fehler aufmerksam gemacht wurde, hat sie einen entsprechenden Workarround veröffentlicht:
http://blogs.msdn.com/b/vcblog/archive/2011/03/11/10140139.aspx

Wichtig ❗
Betroffen sind nur Projekte bei denen C++/CLI Assemblies im Linker Prozess signiert werden.
Normale native C++ Projekte sind von diesem Fehler nicht betroffen.

BUG: VC-2010 regex liefert falsche Ergebnisse bei Verwendung von Repetitions/Wiederholungen

In der regex Implementierung von VS-2010 ist ein relativ fataler Bug drin, der auftritt, wenn man Repetitions (Wiederholungen, {n}) verwendet.
Wie zum Beispiel hier in diesem Beispiel.

#include <stdio.h>
#include <ios>
#include <iostream>
#include <ostream>
#include <regex>
#include <string>
using namespace std;

void test(const string& s, const string& reg)
{
  cout << "---------------" << endl;
  cout << "s: " << s << endl;
  cout << "r: " << reg << endl;

  const regex r(reg);
  cout << boolalpha << regex_match(s, r) << endl;
}

int main()
{
 printf("%02d.%02d.%05d.%02d\n",
          _MSC_VER / 100,
          _MSC_VER % 100,
          _MSC_FULL_VER % 100000,
          _MSC_BUILD);

  test("56." , "(([0-9]{1,2})\\.){1}");
  test("1." ,  "(([0-9]{1,2})\\.){1}");
  test("56.1.", "(([0-9]{1,2})\\.){2}");

}

Der erste und zweite Ausdruck führt zu einem Match. Der dritte Ausdruck ist eigentlich nur der kombinierte Test, der beide Ausdrücke in einem testet.
Der Fehler wird auch in SP1 nicht gefixed sein.

Meine Tests ergaben, dass in VS-2008 SP1 bei der das ganze tr1-Zeugs in VisualStudio Einzug genommen hat, noch alles korrekt funktioniert hat.

Nachtrag (07.03.2010): Es gibt auch einen entsprechenden Bug auf Connect:
https://connect.microsoft.com/VisualStudio/feedback/details/648543/tr1-regex-doesnt-match-a-valid-pattern-with-repetition#tabs

MSDN/Technet/Answers-Community: Quo vadis? Answers 2.0 steht vor der Tür

Vor nicht mal einem Jahr hat Microsoft die NNTP Foren geschlossen.
MSDN-Foren, Technet-Foren und Microsoft-Answers sind der Weg, den sich Microsoft für die Community vorstellt.

Aber auch bei der gemeinsamen Plattform blieb es nicht lange. Ursprünglich liefen MSDN, Technet und Answers auf der selben Plattform. Dabei blieb es nicht lange. Answers wurde von den MSDN und Technet-Foren getrennt. Die Technik blieb erst einmal fast die selbe. Vor einiger Zeit wurde Answers in einen eigenen Bereich ausgekoppelt. D.h. Microsoft machte aus einem Community Bereich und aus einer Softwarelösung 2.

Nun wird es noch mal ganz anders. Answers 2.0 wird an diesem Wochenende seine Türen auf machen.
Wie immer:  Alles wird besserwerden! Es wird schneller, übersichtlicher, besser für die Fragesteller. Auch das Bewertungssystem wird sich ändern. Es wird keine Medaillen und keine Punkte mehr geben. BTW: Wer ist ernsthaft eigentlich auf so etwas wirklich scharf, oder wer braucht das? 😉
Gut wir werden sehen.

Leider hat dies für die Viel-Poster (z.B. MVPs), die in diesen Foren oft genug einen Löwenanteil an Antworten liefern, einen faden Beigeschmack.
Für die Viel-Poster wurde in den bisherigen Foren MS-NNTP Bridge angeboten und dank Jochen Kalmbach haben wir ein noch besseres Produkt, die Community Forums NNTP Bridge. So, dass man bisher auf einfache Art und Weise die HTML Foren wie gewohnt aus seinem Newsreader lesen und Fragen beantworten.
Auch mit der Trennung vom Answers und MSDN Foren blieb zumindest die NNTP Bridge erhalten.
Damit ist nun in Answers 2.0 Schluss. Die neuen Answer Foren werden keine Unterstützung für eine NNTP-Bridge haben.

Vor einem Jahr hieß es, dass die Community durch das Abschalten der NNTP Foren gestärkt werden sollte. Die dort existierende C++ Community wurde dadurch restlos zerstört. Scheinbar stellt sich jetzt heraus, dass die HTTP Foren in der jetzigen Form doch nicht die Community-Lösung sind, die notwendig ist. Eigentümlich, denn es gab schon damals genug Leute, die dies angezweifelt haben.
Irgendwie kommt mir das alles nicht mehr so durchdacht vor wie es sein könnte, und leider kommt es mir auch so vor, dass diejenigen, die die Community maßgeblich mittragen wieder die sein werden, die die größten Nachteile erfahren werden.

Auch wenn Answers nicht mein Bereich ist bleibt für mich irgendwie ein fader Beigeschmack und die Befürchtung, dass die Answers Foren nur der Anfang waren und das auch die MSDN-Foren bald eine Neugestaltung erfahren könnten und die Bridge auch hier kippen wird.
Für mich als Vielschreiber und Vielleser wäre dies ein echter Rückschritt, wie es schon die Abschaltung der NNTP Foren war, denn mit dem Browser Interface alleine, kann man unmöglich so schnell wie heute, so viele Informationen und Foren sichten.

TFS-2010 Umzug: Probleme mit dem Reporting Services

Beim Umzug meines bisherigen TFS 2010 in seine neue virtuelle Umgebung bin ich streng nach dem folgenden (leider nicht ganz fehlerfreien) Artikel vorgegangen: Move Team Foundation Server from One Hardware Configuration to Another

Ich habe brav die Report-Services Datenbanken wie auch alle anderen Datenbanken zurückgespielt (ReportServer und ReportServerTempDB) und natürlich auch den Verschlüssellungsschlüssel (eine unmögliche Übersetzung) oder besser den Encryption Key vom alten Server übernommen.
Danach habe ich kontrolliert ob die entsprechenden Reports alle wieder verfügbar sind. Aber Pustekuchen.

Beim Öffnen der entsprechenden Site der Reporting-Services erhielt ich im Browser die folgende (mir absolut unverständliche) Fehlermeldung:

Reporting Services-Fehler
Die Funktion Bereitstellung für horizontales Skalieren wird in dieser Edition von Reporting Services nicht unterstützt. (rsOperationNotSupported) Onlinehilfe

Nach etwas Grübeln und vergeblichem googeln bin ich wieder im Reporting Services Configuration Manager gelandet, und siehe da, der letzte Einstellungspunkt lautet: Bereitstellung für horizintales Skalieren.

Nachdem ich diesen Punkt aufgerufen habe war das Problem schnell entdeckt:
In der Liste der hier aufgeführten Server stand sowohl, der neue Server, als auch der alte Servernamen, den ich natürlich bereits vom Netz genommen hatte. Nachdem der Eintrag mit dem alten Namen entfernt war, konnten Reports auf dieser Site zumindest aufgelistet werden.

Leider funktionierte nicht einer der Reports, aber dazu mehr in einem der nächsten Artikel…

TFS-2010 Umzug auf andere Hardware und Dokumentation, die sich irrt

Mein TFS-2010 muss umziehen. Zum Glück ist auch dieser Vorgang in der MSDN ausgiebig beschrieben: 
Move Team Foundation Server from One Hardware Configuration to Another

In der Anleitung steht unter zwei Warnungen, die mich irritierten und die sich eigentlich beide als falsch bzw. teilweise falsch herausstellten:

1. SharePoint

You can choose to change versions or editions of some software, such as SharePoint Products, but not others. Changing versions or editions might complicate the restoration. For optimal results, consider restoring to exactly the same software and then upgrading after the restoration is completed.

Bei der Installation des TFS-2010 habe ich eine Upgradeinstallation gewählt und dabei wurde auch der SharePoint Portal Server 3.0 mit installiert. Mittlerweile lief dort auch schon SharePoint 3.0 SP2.

OK, denke ich. Also SharePoint 3.0 SP2 herunterladen und installieren. Pustekuchen! Bei der Einrichtung und dem hinzufügen der SharePoint Site in den TFS kam es zu mehreren Fehlern. Es hat immer gesagt, dass dieser Name nicht hinzugefügt werden dürfte.

Nach einigem überlegen schwante mir der Unterschied. Ich hatte damals den TFS-2010 in englisch installiert. Jetzt hatte ich die deutsche SharePoint 3.0 SP2 Installation einfach aus Gewohnheit durchgeführt.
Also zurück-marsch-marsch. Die deutsche Version deinstalliert (zwei Snapshots zurück), die englische drauf und siehe da es geht.

Also Achtung: Nach meiner Erfahrung ist der TFS-2010 sehr eigen, wenn es um die Sprachversion des SharePoint Dienstes geht und so einfach kann man also nicht den Dienst wechseln wie man lustig ist. Zumindest nicht die Sprachversion.

BTW: Was sich hier so schnell liest, war eine Fehlersuche von über 2,5 Stunden…

2. SQL Server

Auch hier lesen wie den folgenden Satz:

You must install the same version that you used in the original installation of Team Foundation Server.

Uff! Das kommt gar nicht in die Tüte. Das alte System war ein 32bit System. Der neue virtuelle Server soll komplett in 64bit laufen, inkl. also meinem SQL Server. Auf dem alten Server lief ein SQL 2008 32bit. Der neue Server und das Image, dass ich bereits erzeugt hatte sollte nun SQL 2008 R2 64bit haben.

In diesem Fall habe ich die Warnung ignoriert.
Das erfreuliche Resultat: Keine Probleme

Bis auf Kleinigkeiten beim Einrichten der Dienste und Fehlermeldungen, auf die einen dieses Umstellungsdokument auch nicht hinweist, aber andere Ursachen haben, gab es gar keine Probleme die neue Version zu verwenden und den Sprung von 32bit auf 64bit zu wagen. Also Mut zum Verstoß gegen diesen Hinweis 😉

PS: Ich habe die Umstellung mit entsprechenden Snapshots auf dem virtuellen Server-System abgesichert und konnte somit meine Fehler und Probleme sehr einfach korrigieren und Lösungen austesten, ohne die Neuinstallation zu gefährden.

Und auf einmal ging der Debugger in VS-2010 nicht mehr…

Ich wollte heute morgen einfach ein kleines Testprogramm debuggen. Der Build wurde normale durchgeführt, aber danach ging nichts mehr. VS meldete nurnoch lapidar:

Microsoft Visual Studio is Busy
Microsoft Visual Studio is waiting for an internal Operation to complete. If you regularly encounter this delay during normal usage. please report this problem to Microsoft.

D.h. Visual Studio meldete nur noch, dass es beschäftigt wäre. Nach ein paar überlangen Sekunden/Minuten hatte sich dann zumindest der Bildschirm aufgebaut, wie ich es vom Debugger her gewohnt war.

Im Debug Ausgabefenster konnte ich nur sehen, dass er die Symbole der EXE geladen hat. Mehr nicht.
Also DEVENV.EXE abgeschossen.
Anders Mini-Projekt mit nur einer Consolen Ausgabe, kompiliert, Debuggen… gleiches Problem.
Neustart.
Gleiches Problem.  😯

💡 Ich starte DEVENV.EXE erneut, gehe auf Tools -> Options -> Debugging und sehe den Übeltäter:

Meine Server ziehen um, und ich habe zentral für alle Entwickler einen Symbol-Cache. Nun und dieser Server ist eben nicht mehr da. Also wurde für jede DLL die der Debugger gesucht hat ein Fileshare bemüht der ins Nirwana zeigte.

Wie so oft: Kleine Ursache – Fatale Wirkung!

MVP-Programm: Quo vadis?

Hier ein Link über das MVP Programm, der lesenswert ist:
http://www.riagenic.com/archives/448

Der Artikel ist eine Reaktion auf David Woods Blogpost (http://www.haveyougotwoods.ca/2011/02).
Ich gehe nicht konform mit allem was David über die Produkte schreibt.

Mit dem was beide über das MVP Programm schreiben stimme in großen Teilen überein.
Vielleicht schreibe ich nächsten Tage noch mal etwas dazu… We will see…