Laden...

SQLite und C# ohne Entwicklungsumgebung nutzen möglich?

Erstellt von marvel_master vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.846 Views
M
marvel_master Themenstarter:in
3 Beiträge seit 2019
vor 4 Jahren
SQLite und C# ohne Entwicklungsumgebung nutzen möglich?

verwendetes Datenbanksystem: SQLite

Hallo zusammen,

ich bin erst seit kurzem in C# unterwegs und habe quasi
kaum Erfahrungen mit der Sprache.

Eines meiner Ziele welches ich aktuell verfolge ist, dass
C# von der Windows Command Shell auf eine SQLite Datenbank
zugreifen soll.

Ich möchte dabei am liebsten keine Entwicklungsumgebung wie
Visual Studio Code oder Visual Studio verwenden.

Aktuell schreibe ich ganz einfache Programme mit Notepad++
und lasse sie auf der Shell kompilieren. Ungefähr so:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe C:\temp\programm1.cs

Die CSC.exe Datei scheint irgendwie auf jedem Windows Rechner installiert zu sein,
was ich sehr charmant finde.

Jetzt habe ich versucht SQLite in mein Programm einzubinden. Bisher waren
alle meine Anstrengungen mit der Shell erfolglos.

Erst wenn ich eine Entwicklungsumgebung wie Visual Studio Code einsetze und diese
bei sich selber auf die SQLite Daten verweist, die offensichtlich unter
C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.0.1

zu finden sind, dann geht es und ich kann Daten in die SQLite DB schreiben oder
lesen. Vorgegangen bin ich dabei mit Anleitungen die man bei Youtube finden konnte
oder auch in diversen Foren/Blogs zu finden ist.

Ich würde aber es gerne schaffen, dass ich SQLite mit notepad++ nutzen kann.
Es muss doch irgendwie gehen, dass ich c# sagen kann, wo die Bibliotheken
für SQLite liegen, in dem man das referenziert oder ein Verweis auf diese
SQLite Daten setzt.

Die Frage ist nur, wie geht das? Und geht das überhaupt?

Hier mal ein Bsp was ich gerne via Shell kompilieren lassen möchte:

Den Fehler den ich dabei erhalte:
sqlcode.cs(2,19): error CS0234: Der Typ- oder Namespacename 'SQLite' ist im Namespace 'System.Data' nicht vorhanden. (Fehlt ein Assemblyverweis?)

Die csc.exe kann halt die Klasse/Bibliothek SQLite nicht finden. Frage ist jetzt, was macht die Entwicklungsumgebung
da anders, dass sie dem Compiler mitteilen kann, wo diese Bibliothek liegt?

// C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe C:\temp\visual_install\sqlcode.cs

 

using System;
using System.Data.SQLite;

namespace Version
{
    class Program
    {
        static void Main(string[] args)
        {
            string cs = "Data Source=:memory:";
            string stm = "SELECT SQLITE_VERSION()";

            using var con = new SQLiteConnection(cs);
            con.Open();

            using var cmd = new SQLiteCommand(stm, con);
            string version = cmd.ExecuteScalar().ToString();

            // Console.WriteLine($"SQLite version: {version}");
        }
    }
}


16.827 Beiträge seit 2008
vor 4 Jahren

Naja, Du hast ein wenig den Anspruch, dass die Software Runtime Hellsehen kann.
Und bisher ist leider ein Glaskugelverhalten in keiner Programmierumgebung möglich - so funktioniert Software Entwicklung nicht.

Suchst Du evtl. eher eine Low Code Plattform wie die Microsoft Power Plattform?

T
2.222 Beiträge seit 2008
vor 4 Jahren

Wie Abt schon schreibt, wird dies so nicht funktionieren.
Solche Informationen werden bei Visual Studio z.B. in den Projektmappen z.B. den .csproj Dateien gespeichert.
Dort werden auch auch alle Einstellungen für das jeweilige Projekt hinterlegt wie z.B. die .NET Version und alles weiteren Einstellungen.
Ebend auch welche Libs von wo eingebunden werden etc.

Einen Ansatz wie du ihn dir wünscht wirst du mit reinem C# per Editor wie Notepad++ und dem C# Compiler (csc.exe) so nur mit enormen Aufwand umsetzen können.
Es hat schon seinen Grund warum man am besten mit Visual Studio oder VS Code C# entwickeln kann und sollte.

Warum du aber nicht mit VS Code oder Visual Studio arbeiten willst, ist mir etwas schleierhaft.
Gerade als C# Entwickler würde ich nur damit arbeiten wollen, alles andere wäre sogar unsinnig für mich..
Die Vorstellung nur mit einem Editor wie Notepad++ zu arbeiten, wäre bei den meisten meiner Projekte nicht mal sinnvoll möglich oder eben zu aufwändig um überhaupt effektiv zu arbeiten.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

127 Beiträge seit 2015
vor 4 Jahren

Was du vermutlich suchst ist der -reference Kommandozeilenparameter der csc.exe:

Mit dem kannst du die zu referenzierenden DLLs angeben die der Kompiler "benutzen" soll um die von dir angegebenen Namespaces zu "finden".

Wie meine Vorredner schon gesagt haben wäre es natürlich wesentlich einfacher eine CSPROJ Datei anzulegen da das die ganzen Tools ja für genau solche Zwecke geschaffen wurden die du hier versuchst sehr minimalistisch umzusetzen.

Mich würde hier aus reiner Neugier mal interessieren, was ist denn da der Hintergrund?
Was ist dein Use-case das du eine Quellcodedatei auf einem System kompilieren willst anstatt das du dir auf einem anderen Rechner ein Binary kompilierst und das dann einfach auf jedem gewünschten System ausführst.

M
marvel_master Themenstarter:in
3 Beiträge seit 2019
vor 4 Jahren

Hallo zusammen,

Vielen Dank für die Rückmeldungen:
Ich nehme jetzt aber aus euren Antworten mit, dass es doch einfacher ist, Visual Studio Code zu installieren.
Visual Studio habe ich mir auch angeschaut, aber das Programm wollte direkt mehrere GB installieren. Das
ist dann wohl eher etwas für echter Programmierer.

> Mich würde hier aus reiner Neugier mal interessieren, was ist denn da der Hintergrund?

Ein relativ trivialer.
Der erste Grund ist, dass ich dann Software auf Rechnern entwickeln kann, wo ich nichts installieren kann.
Der zweite Grund ist, dass ich immer nur dann Programme installiere, wenn es nicht anders geht. Ich setze fast nur portable Programme ein, damit meine Systeme möglichst stabil bleiben. Jeder kennt
es ja, dass die Systeme immer langsamer werden, weil sie die Registry voll schreiben oder
Dll Leichen im System bleiben oder sonstige Programm Rückstände, wenn man etwas deinstalliert.
So kann ich ein System mehrere Jahre lang betreiben, ohne es neu installieren zu müssen.
Auch macht man sich damit sein System nicht Installations-technisch kaputt. Ein Bsp dazu. Ich habe
ein Windows 7, wo ich irgendwann mal einen "falschen" Bluetooth Stack installiert habe. Seit dem
ist es auf diesem System nicht mehr möglich, die richtigen Treiber für Bluetooth zu installieren.
Testweise habe ich auf einem frischen Windows (andere Partition) auf derselben Hardware Bluetooth ohne Probleme zum laufen gebracht.
Und solche Situationen versuche ich halt zu vermeiden.

VG

16.827 Beiträge seit 2008
vor 4 Jahren

Der erste Grund ist, dass ich dann Software auf Rechnern entwickeln kann, wo ich nichts installieren kann.

So funktioniert Skripten, aber kein Entwickeln von Software.
Eine Software braucht eine Runtime, damit sie läuft - manche Runtimes sind bereits bei Windows dabei; andere nicht.

Zum einen verweist Du auf den csc von .NET Framework, der mittlerweile bei Windows dabei ist (zumindest in einer alten Version, neue .NET Framework Versionen müssen installiert werden); zum andern zeigst Du aber den Pfad zu einem .NET Core Programm.
.NET Core und .NET Framework sind beides Bestandteile des .NET Ökosystems; aber nicht das gleiche. ⚠

.NET Core kannst Du problemlos mit jedem Editor programmieren, egal ob Visual Studio Code oder Visual Studio IDE.
Bei .NET Framework ist das Setup aber noch nicht so schlank; sehr legacy. Hier ist es sehr mühsam ohne IDE zu arbeiten.

Wenn Du aber den Ansatz hast, dass Du eher scripten willst; dann bist Du mit C#/.NET eh völlig auf dem falschen Dampfer.

Jeder kennt es ja, dass die Systeme immer langsamer werden, weil sie die Registry voll schreiben oder
Dll Leichen im System bleiben oder sonstige Programm Rückstände, wenn man etwas deinstalliert.

Ich möchte Dir nicht zu nahe treten; bin aber gerne recht deutlich.
Dein Idee geht absolut Richtung Aluhut 🙂

Ein PC und ein Betriebssystem ist ein Gebrauchsgegenstand: wo gehobelt wird, da fallen Späne.
Wenn Du Software entwickelst und das System nach einem Jahr noch so funktioniert wie am ersten Tag: dann machst Du was falsch.
Man lernt durch Fehler - und einer diese Fehler kann durchaus sein, dass man sein System zerschießt. Das gehört dazu.
Das ist der Alltag von Software-Entwicklern. 😉

Und wenn Du wegen nem falsch installierten Treiber so ein Trauma hast..... puh. 🤔
Dann vielleicht den PC doch besser aus lassen und einfach von Außen anschauen 🙂

Das Schöne ist: in Zeiten von Chocolatey und OneGet brauche ich ca. 1.5h für das gesamte Neuaufsetzen meiner Maschine. Und das passiert ca alle 3 Monate - mindestens.
Und das ist gut so: mein PC ist mein Arbeitsgerät und wird eben manchmal dreckig. =)

M
marvel_master Themenstarter:in
3 Beiträge seit 2019
vor 4 Jahren

Wenn Du aber den Ansatz hast, dass Du eher scripten willst; dann bist
Du mit C#/.NET eh völlig auf dem falschen Dampfer.

Da mag sein. Ich benutze C#, weil ein anderes Programm nur damit umgehen kann. In dem Fall tatsächlich
einen Macro Editor, welcher als Add-On C# einbinden kann. Leider nur C# und nichts anderes. Daher
habe ich leider wirkliche Alternative.
Aktuell fraglich ist aber eh, ob dieser "Macro-Editor" überhaupt mit C# und SQLite umgehen kann. Die Shell kann es ja auch nicht.
Ich weiß aktuell nicht einmal, wie er C# Programmcode in Echtzeit verarbeiten kann. Meine
Vermutung ist ja, dass er den Programmcode so kompiliert, wie ich es händisch mache.

> Und wenn Du wegen nem falsch installierten Treiber so ein Trauma hast..... pu h.

Ein Trauma habe ich nicht. 😉 Bin nur eher deswegen genervt, weil ich seit 3 Jahren etwas
mit Bluetooth nicht machen kann.
Eine Neuinstallation von dem System würde Wochen dauern und das versuche ich einfach
zu vermeiden. Neben der Tatsache, dass ich es wohl nicht mehr schaffen würde, dass
System so aufzubauen, wie es aktuell ist.

> Das Schöne ist: in Zeiten von Chocolatey und OneGet brauche ich ca. 1.5h für das gesamte
> Neuaufsetzen meiner Maschine. Und das passiert ca alle 3 Monate - mindestens.

Ich verfolge eher einen anderen Weg. Ich benutze virtuelle Maschinen und teste dort erst Software. So mache ich mir mein Hauptsystem nicht kaputt. Wenn die Software dann meinen Ansprüchen gerecht wird, würde ich sie
im Bedarfsfall auf mein Hauptsystem installieren.
Leider unterliegen virtuelle Maschinen gewissen Beschränkungen. Auch leidet die Performance darunter. Visual Studio Code habe ich zum Bsp in so einer Maschine ausprobiert.

Die Programme : Chocolatey und OneGet
werde ich mir aber auch noch anschauen.

Vielen Dank für den Tipp. Alleine dafür, hat es sich wohl gelohnt hier im Forum nachzufragen, auch wenn man ursprüngliches Anliegen nicht realisiert werden kann.

Laut Forum Regeln darf man ja immer nur eine Frage zu einem Thread schreiben. Ich hätte nämlich direkt noch etwas anderes wo mir bisher keine Suchmaschine weiterhelfen konnte.
Ich würde gerne testweise 2 CS Dateien haben und Programmcode so aufteilen. Datei 1 müsste Kenntnis von Datei 2 haben.
Auf der Shell habe ich das bisher nicht hinbekommen und auch keine Lösung im Netz dazu gefunden. Stichwörter wie partial, interface, package etc. haben alle nichts gebracht. Include so wie in Java gibt es in C# nicht.

Muss ich dafür auch wieder eine Entwicklungsumgebung einsetzen?

VG

U
69 Beiträge seit 2019
vor 4 Jahren

Command-line build with csc.exe

Mit *.cs kannst du alle Dateien in einem Verzeichnis kompilieren.

“Knowledge cannot replace friendship. I'd rather be an idiot than lose you.”

  • Patrick to Spongebob
16.827 Beiträge seit 2008
vor 4 Jahren

Aktuell fraglich ist aber eh, ob dieser "Macro-Editor" überhaupt mit C# und SQLite umgehen kann. Die Shell kann es ja auch nicht.
Ich weiß aktuell nicht einmal, wie er C# Programmcode in Echtzeit verarbeiten kann. Meine
Vermutung ist ja, dass er den Programmcode so kompiliert, wie ich es händisch mache.

Ja, das geht - aber mit .NET Core und der dotnet CLI.
Im Prinzip nicht für .NET Framework; für .NET Framework brauchst Du csc bzw. msbuild.
Die Handhabung über die Kommandozeile ist hier viel komplexer.

Das würde auch Deine Nachfrage beantworten:
.NET Core mit der dotnet cli verwenden.

Eine Neuinstallation von dem System würde Wochen dauern

Dann automatisiert das einfach. "Wochen" hört sich sehr.... manuell an, um es freundlich zu saen.

Ich verfolge eher einen anderen Weg. Ich benutze virtuelle Maschinen und teste dort erst Software.

Absolut legitim - nutze ich genauso.
Trotzdem ist Dein PC ein Gebrauchsgegegenstand.

127 Beiträge seit 2015
vor 4 Jahren

Ich setze fast nur portable Programme ein, damit meine Systeme möglichst stabil bleiben.

Dann solltest du wissen das Visual Studio Code durchaus einen "Portable" Modus hat:
https://code.visualstudio.com/docs/editor/portable

Ich kann deine Argumentation verstehen.
Und auch wenn ich die Ansichten meiner Vorredner nur eingeschränkt teile, so muß ich zumindest zustimmen das es einen Unterschied ist ob ich einen Treiber installiere oder ob ich ein normales Programm installiere.
Selbst da gibt es gewaltige Unterschiede, selbst innerhalb Versionen.
Vergleiche Visual Studio vor 2017 zu VS 2017 ... und Visual Studio zu Visual Studio Code.

Hinzu kommt das seit Windows 7 sich IMHO die Systemstabilität bei Windows durch Programminstallation deutlich gebssert hat. Vor Windows 7 war das wirklich schlecht. Aber ich finde Windows 7 und Windows 10 halten sich da wacker.

Aber ich bin auch ein Freund von Portable Programmen, nicht zuletzt wegen der einfachen Migrierbarkeit auf neue Rechner 😉

M
368 Beiträge seit 2006
vor 4 Jahren

Sowas "zu Fuss" zu programmieren kann durchaus sinnvoll sein, wenn man die dahinterliegenden Zusammenhänge näher kennenlernen will. Sinn und Zweck einer IDE ist aber gerade z.B. Routinetätigkeiten zu reduzieren und Fehler in manuellen Prozessen zu vermeiden (oder zu minimieren). Als IDE könnte man sich auch das -mittlerweile veraltete und nicht mehr gepflegte- SharpDevelop mal anschauen. Und für die neue Frage darf man durchaus einen neuen Thread eröffnen und dort Beispielcode posten.

Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉

16.827 Beiträge seit 2008
vor 4 Jahren

Aber ich bin auch ein Freund von Portable Programmen, nicht zuletzt wegen der einfachen Migrierbarkeit auf neue Rechner 😉

Portable Applications heissen so, weil sie keinen Installer haben.
Das heisst aber nicht, dass auch die Inhalte portable sind. Das ist die schöne, theoretische Welt.

Auch Portable Apps...
... schreiben leider oft in die Registry.
... haben inhaltliche Daten in ProgramData.

Einfach zu sagen, dass Portable Apps einfach migrierbar sind: sehr oberflächlich, wenig realitätsnah.

127 Beiträge seit 2015
vor 4 Jahren

Einfach zu sagen, dass Portable Apps einfach migrierbar sind: sehr oberflächlich, wenig realitätsnah.

Ebenso wie mir zu unterstellen dass ich das, ohne es jemals gemacht zu haben, sagen würde.
Also vertrau mir wenn ich sage das ich meine portablen Programme schon öfter migriert habe und das reibungslos und ohne Probleme funktioniert hat 😉
Your mileage may vary ...

Klar gibt es Programme die sich "portabel" nennen es aber nicht sind.
Aber echte "portable" Programme sind eben tatsächlich so das sie nichts am System verändern außer unterhalb ihres eigenes Stammverzeichnisses.

Wer der portabilität nicht traut kann es ja selbst testen und verifizieren (z. B. Sysinternals System Monitor, "Testmigration" usw.)

16.827 Beiträge seit 2008
vor 4 Jahren

Ebenso wie mir zu unterstellen dass ich das, ohne es jemals gemacht zu haben, sagen würde.

.. was Du getan hast. Musst Dich dann halt anders ausdrücken 😉