Announcement

Collapse
No announcement yet.

SQLite ohne Installation

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

  • #16
    Originally posted by Ralf Jansen View Post
    PS. Warum benutzt du überhaupt die ProviderFactory? Willst du SqLite austauschen können? Du würdest dir das leben deutlich einfacher machen wenn du die SqLite assemblies einfach referenzierst.
    Das wollte ich auch gerade schreiben. Mach dir es dir nicht unnötig kompilziert.


    Gruss

    Comment


    • #17
      Was kann das dann noch sein?
      Keine Ahnung. Ich kann heute Abend nochmal checken warum ich zwischenzeitlich ebenfalls ConfigurationErrorsException(s) hatte.
      Ich hatte glaube ich versucht das Deployment nachzustellen und hatte die Dateien aus dem Ausgabeordner woanders hinkopiert. Möglicherweise hat es doch was damit zu tun welche Dateien deployed (oder nicht) werden.

      Um Phantomfehler auszuschließen und wir einfach einem defekten .Net Framework aufsitzen könntest du mal die .Net Installation checken.
      http://blogs.msdn.com/b/astebner/arc...3/8999004.aspx

      Comment


      • #18
        Hallo,

        ich habe das Tool mal durchlaufen lassen.
        Sieht alles gut aus, bis auf der Eintrag:
        [12/11/15,15:16:42] Not running action 'Files - .NET Framework 4 Full (32-bit)' for product '.NET Framework 4 Full' because the OS condition does not match
        sollte der die 32Bit nicht auch prüfen?
        wenn ich die Application als x86 laufen lasse, so sollte doch eigentlich die 32Bit Version verwendet werden?

        Comment


        • #19
          Hallo Leute,
          ich hatte die System.Data.SQLite als Referenz drin, obwohl ich die ja nicht Spezifisch verwende.
          Habe die Referenz entfernt und erhallte jetzt auf meinem Entwichlungssystem den selben Fehler, obwohl ich den Provider in die Config geschrieben habe.
          ^^ Fehler von mir! in dem Ausgabeverzeichniss hat die dll gefehlt.

          Hilft das weiter?
          Zuletzt editiert von 10110010; 11.12.2015, 20:11.

          Comment


          • #20
            Hilft das weiter?


            in dem Projekt habe ich angegeben, dass x86 verwendet werden soll und in dem Appverzeichniss liegen
            - System.Data.SQLite.dll
            - System.Data.SQLite.EF6.dll
            - System.Data.SQLite.Linq.dll
            Wenn diese Aussage gelogen wahr ja

            Comment


            • #21
              Das war nicht gelogen.
              Die 3 DLL's liegen in dem Appverzeichniss.

              Comment


              • #22
                Hallo Leute,

                habe weitere Informationen, die euch vielleicht weiter helfen.

                Ich habe im Netz folgende Methode gefunden:
                Code:
                private static string CreateDbProviderFactoryEntry(string assemblyPath)
                        {
                            Assembly assembly = Assembly.LoadFile(assemblyPath);
                            AssemblyName assemblyName = assembly.GetName();
                
                            AssemblyTitleAttribute assemblyTitleAttribute = (AssemblyTitleAttribute)Attribute.GetCustomAttribute(assembly, typeof(AssemblyTitleAttribute));
                            string title = (assemblyTitleAttribute != null) ? assemblyTitleAttribute.Title : assemblyName.Name;
                            AssemblyDescriptionAttribute assemblyDescriptionAttribute = (AssemblyDescriptionAttribute)Attribute.GetCustomAttribute(assembly, typeof(AssemblyDescriptionAttribute));
                            string desciption = (assemblyDescriptionAttribute != null) ? assemblyDescriptionAttribute.Description : assemblyName.Name;
                
                            foreach (Type type in assembly.GetTypes())
                                if (type.IsSubclassOf(typeof(System.Data.Common.DbProviderFactory)))
                                    return "<add name=\"" + title + "\" invariant=\"" + type.Namespace + "\" description=\"" + desciption + "\" type=\"" + type.AssemblyQualifiedName + "\" />";
                
                            throw new Exception("DbProviderFactory not found");
                        }
                damit erhallte ich alle Infos aus der Assembly.
                Jetzt habe ich festgestellt, dass diese nicht mit meiner Angabe übereinstimmen.

                mein Eintrag:
                <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />

                Was mir die Methode zurück gibt:
                <add name="System.Data.SQLite Core" invariant="System.Data.SQLite" description="ADO.NET Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.93.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />

                Müssen die Angaben aus der Assembly übereinstimmen?

                Wenn ich das mache (Die Daten aus der Assembly übernehmen) bekomme ich den selben Fehler!

                Jetzt hoffe ich Ihr könnt mir helfen.

                Comment


                • #23
                  Auf meinem privaten Rechner läuft die "SQLite-Test.exe" ohne Fehler. Dort habe ich weder Visual Studio noch SQlite installiert.

                  Gruss

                  Comment


                  • #24
                    Das ist total kurios!
                    Ich hab das auch nur auf den einem PC!
                    Der ist gerade frisch gekauft. Windows 10 drauf und das neue Office.
                    Das .Net Framework ist angeblich auf dem neusten Stand.
                    Es handelt sich dabei auch um ein 64 Bit System.
                    Aber in der Anwendung hab ich ja strikt 32 Bit angegeben.

                    Könntest du mir mal sagen, was du für ein System hast? am besten auch was so für relevante Software installiert ist. Vieleicht fehlt einfach was.

                    Comment


                    • #25
                      So, ich habe jetzt einfach Spaßeshalber SQLite auf besagtem Rechner Installiert. Dabei fügt er die DLL*s auch in den GAC ein.
                      Dann funktioniert die Anwendung auch einwandfrei.
                      Der Processmanager zeigt auch, dass die System.Data.SQLite.dll geladen wird.
                      Da kommt auch das Entity-Framework vor. Das Problemist, dass das Setup auch noch einiges mitinstalliert hat.

                      Würde mich trotzdem mal interessieren was da das Problem ist.

                      Comment


                      • #26
                        Würde mich trotzdem mal interessieren was da das Problem ist.
                        Ein Tool was noch helfen könnte wäre fuslogvw gewesen. Gehört zum Framework und liefert dir einen Report was er wo wann wie geladen hat.
                        Aber jetzt wo das funktioniert wird dir fuslogvw nicht mehr viel anzeigen.

                        Ich erwähne nochmal das hier eine virtuelle Machine hilfreich wäre/gewesen wäre. Um das Deployment zu testen sind Rechner von Entwicklern absolut ungeeignet da ist meistens Zeug drauf das sonst keiner hat. Auch wen zum Beispiel mein Rechner völlig unberührt von SQLite ist habe ich doch verschiedenste Entwicklungsumgebungen/Windows SDKs/Framework SDKs/C++ Runtimes etc. drauf was hier möglicherweise hilft aber ein ~normaler~ Rechner nicht hat. Deployments sollten man auf allen Windowsversionen die man supporten will testen. Und dafür eignen sich virtuelle Machinen hervorragend. Da man die auf jeden beliebigen Zustand (mit/ohne SPs etc.) denn es zu testen gilt zurücksetzen kann.

                        Comment

                        Working...
                        X