Ich wollte es heute einfach nicht glauben, als ich einen Bug in SharePoint Designer fand. Nicht das Bugs dort jetzt was neues wären oder allgemein unverzeihlich, aber die Art ließ mich an sämtlicher Erfahrung des beteiligten Entwicklers oder Qualitätskontrolle von Seiten des Teams oder Microsofts zweifeln.
Aber fangen wir von Anfang an: Ich hatte gerade ein bestehendes BDC Model auf der Entwicklungsumgebung mit dem Designer angepasst und exportiert um es auf der Stage installieren zu lassen. Mit folgender Nachricht kam der Admin auf mich zu:
Application definition import failed. The following error occurred: The BDC Model file is not well-formed. Data at the root level is invalid.
Aber das Model hatte doch bei mir funktioniert, was konnte schief gegangen sein? Ich untersuchte die BDCM-Datei mit einem Editor (BDCM-Dateien enthalten XML) und stellte erstaunt fest, das das XML tatsächlich nicht valide war: Nach dem schließenden Model-Tag (also nach dem Root-Element) folgte weiteres verstümmeltes XML.
Ich bekam einen grausamen Verdacht und erstellte eine neue Datei mit dem Texteditor: 1500 Zeilen „DIES IST EIN TEST“ und benannte sie „test.bdcm“.
Danach exportierte ich noch einmal das BDC Model und wies den Designer an, die Datei zu ersetzen. Das Ergebnis war das folgende:
Ja genau: die bestehende Datei wird nicht ersetzt (also mit FileMode.Create / CreateNew geöffnet) sondern mit FileMode.Open geöffnet und ab dem nullten Byte überschrieben. Ist die alte Datei also größer als das Ergebnis des Exports, bleiben die alten Inhalte nach dem exportierten Inhalt stehen.
Wer macht so etwas? Sorry, aber mich hat das einfach nur ungläubig schauend stehen lassen…
Also: alte BDCM-Dateien nicht überschreiben, sondern immer löschen, bzw. einen neuen Namen wählen.