Domino 9 und frühere Versionen > ND8: Entwicklung
Quellcode in 8.5.1 ausblenden funktioniert nicht mehr!
Jens Winkelmann:
Ich habe folgendes herausgefunden:
Man muss unter Options immmer alle Libraries angeben die man benötigt.
Nicht nur die direkten (wir früher) auch die indirekten.
Ein Beispiel:
Lib_A benötigt Lib_B und
Lib_B benötigt Lib_C
In Lib_A steht also Use "Lib_B" und in Lib_B steht Use "Lib_C"
Hierbei hat man mit dem DDE 8 ein Problem.
Wenn man jetzt aber in Lib_A auch alle indirekt genutzten Libraries einträgt gibt es kein Problem.
Also im Beispiel muss bei Lib_A Use "Lib_B" und zusätzlich die Zeile Use "Lib_C" stehen.
Jetzt kann man die Library Lib_A kompilieren.
Das ist natürlich eine mortz Arbeit alle indirekten Libraries zusätzlich in den Options einzutragen.
Maureen Leland hat im Business Partner Forum dieses Problem als 'confirmed as a bug' kommentiert.
Ich warte also bis das Problem beseitigt ist.
In der Zwischenzeit kann man sich mit dem oberen Workaround helfen.
Übrigens lösche ich nicht das Feld $ScriptLib sondern tausche den Feldwert aus.
Der neue Code enthält ein %INCLUDE auf eine nicht existierende LSS Datei.
Hierbei wird das Kompilieren der Library unterbunden.
Somit kann Recompile All Lotus Script nichts kaput machen.
dirk_2909:
--- Zitat ---Somit kann Recompile All Lotus Script nichts kaput machen.
--- Ende Zitat ---
Hast Du das auch ausprobiert?
Wenn bei einem Include das File nicht vorhanden ist klappt es nicht ...
Jens Winkelmann:
Moment - es gibt doch eigentlich 2 Probleme
Problem 1: Im DD8 gibt es jetzt die Fehlermeldung "Error loading Use or USELSX module"
Der Grund hierfür ist, dass man eine Library ohne Source Code einbindet die ihrerseitz eine Library ohne Source Code verwendet.
Also: Lib_A benötigt Lib_B und Lib_B benötigt Lib_C und gleichzeitig haben Lib_B und Lib_C keinen Source Code.
Wenn man jetzt aber in Lib_A nicht nur Use "Lib_B" schreibt sondern zusätzlich auch Use "Lib_C" dann funktioniert es.
Die Fehlermeldung verschwindet.
Problem 2: Bei 'Recompile All Lotus Script' geht der ausführbare Code verloren, falls man den Source Code über das Feld $ScriptLib bzw $AssistAction_Ex gelöscht hat
Gab es das Problem nicht schon immer? Weiß ich nicht, da ich die Felder noch nie gelöscht habe.
Ich weiß nur, dass wenn man schon früher die Felder $ScriptLib bzw $AssistAction_Ex gelöscht hat und anschließend in die Library bzw.
den Agenten gegangen ist und diesen gespeichert hat, so ging der ausführbare Code verloren.
Ist ja auch klar. Kompiliert man einen nicht vorhanden Source Code so erhält man einen ausführbaren Code der nichts macht.
Um dieses zu verhindern, habe ich nicht die Felder gelöscht sondern den Source Code in eine LSS Datei exportiert und ihn anschließend via
%INCLUDE eingebunden. Da dieses aber zu viel Arbeit macht, habe ich einen Agenten geschrieben der die $ScriptLib und $AssistAction_Ex
Felder durch vorgefertigte $ScriptLib und $AssistAction_Ex Felder ersetzt, die ihrerseitz eine nicht vorhandene LSS Datei einbinden.
Speichert der Kunden jetzt eine so behandelte Library bzw Agenten, so wird nicht der ausführbare Code vernichtet sondern aufgrund der
fehlenden LSS-Datei erhält er eine Fehlermeldung.
Im neuen DDE 8 gibt es das Feature 'Enable automatic recompilation of all dependencies'. Kann es sein, dass hierdurch Libraries
kompiliert werden, bei denen der Source Code komplett durch Löschen der Felder entfernt wurde.
So passiert dass, was ich oben als Problem beschrieben habe, wenn der Kunde die Library manuell öffnet und speichert, jetzt
automatisch im Hintergrund. Dann müsste ein %INCLUDE dieses aber auch verhindern.
Jedenfalls kann ich auf meinen Datenbanken 'Recompile All Lotus Script' ausführen, ohne dass etwas kaputt geht.
Mir ist jedenfalls nichts aufgefallen.
pram:
Hier kann ich auch noch was dazu sagen: Der neue Designer erlaubt ja jetzt das (zwischen)speichern von fehlerhaften code. (Ging mit Tricks beim alten auch schon)
Allerdings speichert er den fehlerhaften Code nun in einem extra Item "$ScriptLib_Error" ab und lässt das $ScriptLib unangetastet. Insbesonders ärgerlich ist wenn man "prompt me on save if there are LotusScript errors" nicht aktiviert hat. Dann editiert man wo rum und drückt CTRL+S und wundert sich, warum die Änderung keine Wirkung zeigt. Bei genauem Hinsehen sieht man dann, dass die Lib einen Fehler hat.
Weitere "lustige" Effekte treten auf, wenn man mit verschieden Designern arbeitet.
Angenommen ich erweitere mit 8.5.1 eine lib und speicher diese zwischen. Da ich noch nicht ganz fertig bin und der Code noch nicht fehlerfrei compiliert, kommen die Änderungen in $ScriptLib_error
Nun kommt ein Kollege und schaut sich meine "Erweiterungen" mit einem 8.0er an. Sieht aber davon nichts weil sein Designer das $ScriptLib_error Item nicht beachtet. Er beginnt ebenfalls etwas zu ändern und speichert. Diese Änderungen landen in $ScriptLib
Öffne ich die lib wieder mit 8.5.1, so sehe ich den Code, der im $scriptLib_error (also meinen letzten Stand) und frage mich, was der Kollege die ganze Zeit gemacht hat ???
Nun bessere ich meine letzten Fehler aus und voilà, alles compiliert und wird in das $ScriptLib-Item geschrieben... Die Änderungen, welche in der zwischenzeit mit älteren Designern durchgeführt wurden, sind WEG :-[
Also ich frage mich, warum sie hier überhaubt die Auftrennung $ScriptLib/$scriptLib_error gemacht haben...
Gruß
Roland
koehlerbv:
Da ich de facto ausschliesslich mit dem Domino Designer meinen Lebensunterhalt bestreite (und dies auch will), kommt mir der 8.5.1 nicht ins Haus. Ich warte auf den 8.5.3, ich habe auch Zeit, bis zum 8.5.5 zu warten.
Der neue Designer hat ja nicht einfach nur eine neue Versionsnummer, er ist von vorn bis hinten komplett neu gemacht. Das ist ein schwieriger Prozess, für Probleme habe ich vollstes Verständnis . Kein Verständnis habe ich angesichts des Stands der Dinge aber, dass das Teil schon eine Versionsnummer hat - das Ding ist bestenfalls eine Beta-Version. Und damit kann ich keine Kunden bedienen.
Bislang hat uns IBM Lotus aber noch nie (grundlegend) enttäuscht, ich warte also - und das sehr zuversichtlich. Und auf das irgendwann fertige Produkt freue ich mich.
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln