Announcement

Collapse
No announcement yet.

NET Framework Servicepack 1.0 zerschiesst D8!?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • NET Framework Servicepack 1.0 zerschiesst D8!?

    Nachdem ich das Servicepack 1 für das NET-Framwork 1.1 installiert habe, läuft bei mir D8 nicht mehr. Alle Projekte die ich probiert habe, werden mit: <BR>
    [Fataler Fehler] MastApp.dpr(1): Package 'Borland$' wird benötigt, konnte aber nicht gefunden werden <BR>
    abgebrochen. Ich habe D8 schon neu installiert - keine Erfolg!<BR>
    Offenbar überschreibt das Servicepack irgend einen zentralen Suchpfad. Wer kann helfen? <BR>
    PMM

  • #2
    Hallo,

    ich habe das SP1 zwar noch nicht installiert, aber auch die Installation vom .NET Framework 2.0 setzt den Delphi 8-Kompiler außer Funktion (der Borland C#Builder 1.0 wird im Gegensatz dazu aber nicht beeinträchtigt).

    &gt;Offenbar überschreibt das Servicepack irgend einen zentralen Suchpfad.

    Das glaube ich nicht, denn alle "wichtigen" Teile sollten im GAC (Global Assembly Cache) bereitliegen - und dort wird jede Version separat archiviert. Ich vermute einmal, dass sich Delphi 8 (Win32-Anwendung, die als Host das .NET Framework nur zusätzlich einbindet) zu eng an <i>mscorlib/mscoree.dll</i> bindet. Wird dann nicht die erwartete Version vorgefunden, scheint es zu Haken.

    Tritt der Effekt auch beim dem folgenden Mini-Projekt auf?
    <pre>
    <b>library</b> Library1;
    <br>
    <font color="#003399"><i>{%DelphiDotNetAssemblyCompiler 'c:\programme\gemeinsame dateien\borland shared\bds\shared assemblies\2.0\Borland.Delphi.dll'}</i></font>
    <br>
    <b>uses</b>
    System.Reflection;
    <br>
    [assembly: AssemblyVersion(<font color="#9933CC">'1.0.0.0'</font>)]
    <br>
    <b>const</b>
    cDATA = <font color="#9933CC">'Testdaten'</font>;
    <br>
    <b>begin</b>
    <b>end</b>.
    </pre>
    &#10

    Comment


    • #3
      Danke Andreas Kosch,
      Das Mini-Projekt lässt sich ohne Fehlermeldung übersetzen. Interessanterweise auch, wenn die {%DelphiDotNetAssemblyCompiler Zeile auskommentiert wird. Was zeigt uns dass? <BR>
      PM

      Comment


      • #4
        Hallo,

        in diesem Fall würde ich das Experiment wiederholen, nachdem der uses-Auflistung die Einträge <b>SysUtils, Classes</b> hinzugefügt wurden und die Library-Assembly irgend eine Funktion aus SysUtils aufruft.

        Das nächste Experiment könnte untersuchen, ob im Objektinspektor der Eintrag <b>Link Units</b> für <i>Borland.Delphi.dll</i> eine Auswirkung auf das Verhalten hat

        Comment


        • #5
          Das Projekt sieht nun so aus: <PRE>
          library Library1;

          {%DelphiDotNetAssemblyCompiler 'c:\programme\gemeinsame dateien\borland shared\bds\shared assemblies\2.0\Borland.Delphi.dll'}

          uses
          System.Reflection,
          SysUtils, Classes ;

          [assembly: AssemblyVersion('1.0.0.0')]

          const
          cDATA = 'Testdaten';
          MyData = sysUtils.fmOpenRead;
          begin
          end
          </PRE>
          und lässt sich immer noch compilieren. <BR>
          Was hasst du mit: <BR>
          "..,ob im Objektinspektor der Eintrag Link Units für Borland.Delphi.dll eine Auswirkung auf das Verhalten hat" genau gemeint?<BR>
          Ich denke, ich sollte das NET Framework de- und dann ohne SP1 neu-installieren. Sind dabei Besonderheiten zu beachten/erwarten?<BR>
          PM

          Comment


          • #6
            Fataler weise hatte auch dies keinen Erfolg. Jetzt bin ich ratlos! Was kann man noch tun? <BR>
            PM

            Comment


            • #7
              Nach dem ich NET und D8 deinstalliert und anschliessend in der Reihenfolge NET / D8 / D8_Upd2 erneut installiert habe, ist der Spuk verschwunden - um einem neuen Problem Platz zu machen: <BR>
              1. Build Versuch für mein zuvor complierbares Projekt ergiebt: <BR>
              [Fataler Fehler] TBuchNet.dpr(1): 'Never-build' Package 'System' muss neu compiliert werden <BR>
              2. Versuch mit dem gleichen, unveränderten Projekt: <BR>
              [Fataler Fehler] TBuchNet.dpr(1): Unit Borland.Delphi.System wurde mit einer unterschiedlichen Version von System.Attribute compiliert <BR>
              Bin wohl von der DLL-Hölle direkt in die NET-Hölle gelangt. Ich weiss noch nicht welche mir besser gefällt :-( <BR>
              Was soll ich tun

              Comment


              • #8
                Leider scheint hier ein grundsätzliches Problem mit dem Net-Framework-Service-Pack und Delphi 8 vorzuliegen. Nach Installation des SP lässt sich nicht einmal eine neue, leere Windows Form-Anwendung ausführen. Versuchr man sie zu starten gibt es den Fehler:
                [Fataler Feler] Project1.dpr(1): Package 'Borland$' wird benötigt, konnte aber nicht gefunden werden.
                Geht man über Projekt compilieren, wird das mit:
                [Fataler Feler] Project1.dpr(1):Unit Borland.Delphi.System wurde mit einer unterschiedlichen Version von System.Diagnostics.Process compiliert quittiert.
                Ich habe das Framework und Delphi deinstalliert und wieder installiert. Leider ohne Erfolg.
                Braucht es vielleicht ein Update von Borland

                Comment


                • #9
                  Don't panic!

                  .NET Framework und BDS deinstallieren ist nicht nötig.

                  1. Versuch:
                  Alle Referenzen aus dem Projekt entfernen und dieses komplett neu erzeugen, d.h. alle DCUIL, EXE u.ä. Dateien vorher löschen.
                  Notwendige Referenzen wieder einfügen.

                  2. Versuch:
                  Alle Referenzen aus der Projektdatei mittels Editor entfernen.

                  3. Versuch:
                  Ein neues Projekt erstellen und alle Source (PAS-Dateien) hinzufügen

                  Comment


                  • #10
                    Methode 3 scheint hier zu funktionieren - ich bin allerdings noch nicht durch. <BR>
                    Bei mir ist es nur ein Hobby / Übungsprojekt. Wenn ich mir aber vorstelle, so was passiert in einem kommerziellen Projekt kann schon Panik aufkommen. Insgesamt zeigt das doch, das MS mit einem kleinen Update die Entwicklungsumgebung der Konkurrenz aushebeln kann. Ob bewusst oder unbewusst ist dabei schon fasst egal.<BR>
                    Wenn ich demnächst eine Empfehlung für eine NET - Entwicklungsplattform in unserer Firma aussprechen soll, komm mir "Borland D8" vermutlich nur sehr zögerlich über die Lippen...<BR>
                    PM

                    Comment


                    • #11
                      Hallo,

                      &gt;..das MS mit einem kleinen Update die Entwicklungsumgebung der Konkurrenz aushebeln kann...

                      hier ist nicht MS der Übertäter. Delphi 8 generiert *.<b>dcuil</b>-Dateien, um sich beim Kompilieren einen Geschwindigkeitsvorteil zu verschaffen. Das hat allerdings auch Nebenwirkungen. In meinem Crashkurs-Buch liest sich das so: "<i>Wird nun ein Programm compiliert, so muss der Compiler alle Daten nicht erst mühsam zur Laufzeit ermitteln, sondern er greift statt dessen sofort auf die bereits in binärer Form vorliegenden Informationen zurück. Der Haken an der Sache ist nur der, dass dieser Weg immer dann in die Irre führt, wenn sich die Versionsnummer einer der betroffenen Assemblies in der Zwischenzeit geändert hat. Während die Microsoft-Compiler diese Daten erst zur Laufzeit beim Compilierungsvorgang ermitteln und somit nicht von einer anderen Versionsnummer betroffen sind, hat die von Borland gewählte „Abkürzung“ zwangsläufig die Nebenwirkung, dass diese Dateien nach jedem Versionswechsel vorher aktualisiert werden müssen."</i>.

                      P.S: Zum Beispiel verzichtet der Delphi.NET-Konkurrent <i>Chrome</i> (http://chrome.remobjects.com) völlig auf die vorkompilierten DCUIL-Dateien, so dass dieses Problem dort nicht auftritt. Ich gehe davon aus, dass auch Borland wieder auf den "Pfad der Tugend" zurückkehren wird

                      Comment


                      • #12
                        >..hier ist nicht MS der Übeltäter<BR>
                        Es ist halt für Otto Normalentwickler sehr schwierig, den "Übeltäter" zu ermitteln. Insbesondere wenn, wie in realen Projekten unvermeidlich, noch 3Party Komponenten mit ihren Macken dazu kommen. Hier scheint mir der Unterschied zwischen NET- und DLL-Hölle z.Z. nur marginal zu sein und Borland lässt seine seine Clientel wohl ziemlich im Regen stehen.<BR>

                        >..Der Haken an der Sache ist nur der, dass dieser Weg immer dann in die Irre führt, wenn sich die Versionsnummer einer der betroffenen Assemblies in der Zwischenzeit geändert hat...<BR>

                        Eigentlich sollte dann doch ein "Build" die Sache bereinigen können oder? Tut es bei mir aber definitiv nicht.<BR>
                        PM

                        Comment


                        • #13
                          Läuft überhaupt bei irgend jemand D8 mit dem SP ?

                          Wie bereits gesagt lässt sich nicht mal eine neue, leere WinForm-Anwendung compilieren.
                          Gibt es eigentlich irgend eine Reaktion von Borland ? Ich finde nämlich nichts und dieses Problem müssten doch wirklich eine Menge Entwickler haben.
                          Von der Seite gesehen ist der Support bei Borland wirklich schlecht. Bei BP7 gab es ja auch schon einmal das Problem mit CRT und schnellen Rechnern. Aber da gab es wenigstens zügig einen Patch.

                          Das Ärgerliche ist auch, dass das Problem auch nach einer kompletten Deinstallation und Reinstallation des Frameworks, SDK und D8 weiterhin besteht. Ein Hoch auf ein Immage oder mehrer Rechner aber das kann es doch nicht sein

                          Comment


                          • #14
                            Im Forum: borland.public.delphi.nontechnical gibt es einen Thread zum Thema. Dort wurde folgender Link veröffentlicht: <BR>
                            http://blogs.borland.com/abauer/archive/2004/09/01/1208.aspx <BR>
                            Nutzen tut's nix, aber man fühlt sich nicht so alleine.. <BR>
                            PM

                            Comment


                            • #15
                              Hallo,

                              &gt;Eigentlich sollte dann doch ein "Build" die Sache bereinigen können oder?

                              aus Geschwindigkeitsgründen (das einmalige Generieren der *.dcuil/dcpil-Dateien für externe Assemblies dauert unter Umständen seine Zeit) werden beim Build nur die "eigenen" Units neu kompiliert. Manche Entwickler legen daher immer eine BAT-Datei im Projektverzeichnis an, die regelmäßig aufräumt (d.h. diese und andere temporäre Dateien löscht). Denn auch im regulären Betrieb kommt ja Delphi 8 häufig so außer Tritt, dass man die IDE beenden, über die BAT-Datei aufräumen und dann Delphi 8 neu starten muss.

                              ---

                              &gt;..nach einer kompletten Deinstallation ...

                              Die Frage ist, wie "komplett" die Deinstallation war. Denn neben dem GAC (der u.U. vom Hand aufgeräumt werden muss) gibt es da noch ein kritisches Element. Die in jedem Fall eingebundene DLL <b>mscoree.dll</b> (exportiert die Routine <i>_CorExeMain</i>) liegt nur einmal vor, d.h. hier überschreibt eine neue .NET Framework-Version die alte Version (diese DLL liegt im System32-Unterverzeichnis von Windows und hat nur eine Aufgabe – sie sucht nach der auf dem Rechner installierten CLR-Version, die für die Anwendung benötigt wird)

                              Comment

                              Working...
                              X