Forum: PC-Programmierung Woher weiß Visual Studio, dass das in eine Dll gepackt werden soll


von Paul (Gast)


Lesenswert?

Hi,
ich habe hier eine Konsolenanwendung in C# unter Visual Studio 2019 
gemacht. Dafür habe ich mir aus einem Projekt von jemand anderem eine 
Klasse dazu kopiert. Ursprünglich steckte die Klasse in einer Dll. Ich 
hätte aber gerne nur eine Exe. Obwohl ich nur die CS-Dateien in mein 
Projekt mit reinkopiert habe, erstellt mir Visual Studio eine Exe und 
eine Dll im Ausgabeverzeichnis. Woher weiß er, dass das mal eine Dll 
war?

von Sven L. (sven_rvbg)


Lesenswert?

Kann es denn sein, das du davor mit der ursprünglichen DLL 
experimentiert hast und vergessen hast den Verweis wieder zu entfernen?

von Paul (Gast)


Lesenswert?

Nachdem ich die .dll erstellt hatte, habe ich ein komplett neue Solution 
mit einem Projekt Konsolenanwendung in einem neuen Verzeichnis erstellt.
Dahinein habe ich nur .cs-Dateien kopiert.
Wenn ich dort die Ordner BIN und OBJ lösche, wird die Dll immer wieder 
erzeugt.

von Adam P. (adamap)


Angehängte Dateien:

Lesenswert?

Paul schrieb:
> Wenn ich dort die Ordner BIN und OBJ lösche, wird die Dll immer wieder
> erzeugt.

Und die *.exe ebenfalls?

Eigentlich stellt man das in den Projekteinstellungen ein:
Projekt -> Eigenschaften -> Anwendung -> Ausgabetyp

von Schlaumaier (Gast)


Lesenswert?

NEIN.

Du musst (jedenfalls bei VB) VORHER entscheiden was du erstellst.

In deinen FOTO eine Klassenbibliothek.

Wenn du nun einen EXE erzeugen willst, die eine Libs hat, musst du das 
wei folgt machen.

Du stellst in den Fenster aus deinen Foto die EXE ein (Sollte schon da 
stehen wenn du den Assistenten nutzt. Dann klickst du auf VERWEISE und 
gibst dort !!! die DLL o.ä. an.  Und den Pfad.

Nun muss du die in JEDER Form wo du auf diese DLL zugreifen willst, sie 
via INCLUDE einbinden.  Und kannst dann in der Form auf die Befehle 
zugreifen.


z.b. du erstellst eine DLL wo nur Funktionen drin sind z.b. 
Datum_in_Monat(monat as integer).  Die speicherst du unter FUNKI ab.

In deinen EXE-Programm gibst du unter VERWEISE die Datei FUNKI.DLL an.

ALS ERSTE ZEILE deiner FORM gibst du #INCLUDE FUNKI ein (Syntax VC 
mäßig)

Aufrufen tust du das dann so.

Monatsname = funki.Datum_in_Monat(3)
Dann ist Monatsname = "März".

Nur ein einfaches Beispiel eine von > 100 Funktionen die ich in meinen 
eigenen Dll's habe.  Darin habe ich übrigens auch Formen die verbesserte 
MSG-BOXEN zurück liefern. die MSGBOX ist einfach klein + Hässlich ;)

Meine passt sich aufgrund der Schriftgröße automatisch an. ;) Und lässt 
bis zu 4 Buttons zu, Mehrzeiligen Text etc.

Pro Programm brauche ich dann nur noch Verweise und Include machen, und 
habe Meterlangen Code zu verfügung. Das der Vorteil von DLL's die man 
selber schreibt.

Ich habe allein über 20 Datums-Funktionen selbst geschrieben. ;)

Macht richtig Spass und spart mega Zeit wenn man das Rad nicht x-mal 
erfinden muss.;:)


Hinweis noch : VB (ich denke auch VC) verlinkt JEDE DLL in seine 
Projekte die im Verweis stehen. Ich vermute (ist mir nie passiert) das 
es sogar Stress macht wenn es was nicht findet).

von dll (Gast)


Lesenswert?

Schlaumaier schrieb:
> über 20 Datums-Funktionen
Für jeden Monat eine?;) scnr

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Ich glaube, Paul wollte nur die Klasse haben und nicht die
anderen Funktionen der DLL nutzen. Den Quellcode der ganzen
DLL (Projekt) scheint er ja zu haben.
Da müßte er doch nur den Ausgabetyp ändern.

von Schlaumaier (Gast)


Lesenswert?

dll schrieb:
> Schlaumaier schrieb:
>> über 20 Datums-Funktionen

Nein.  :)  Das Problem ist die TODAY Funktion die so lausig zu tippen 
ist.

z.b.

heute = lib.datum_falsch(today.now)
liefert Heute = "2021-09-13"

Datum_beschreibung  = lib.datum_text(today.now, "tmj", ".")
Datum_beschreibung = "9. September 2021"

Datum_wochentag = lib.datum_wochentag(today.now)
Datum_wochentag = "Montag"

Datum_wochentag_klein = lib.datum_wochentag_klein(today.now)
Datum_wochentag_klein = "Mo"

Das selbe mit den Namen des Monats.

U.s.w.

Und JA ich hätte diese Funktionen alle in 1 packen können.
Aber es ist halt so gewachsen. ;)

Und ich mag keine Optionalen Parameter.
Weil man dann die Funktionen in anderes Software anpassen muss, wenn man 
mehr als einen Optionalen Parameter hat.

So wähle ich in der liste nur noch aus wenn in LIB.D getippt habe. :)

Ich muss sehr oft mit Datumsangaben arbeiten.  Für Überschriften + Stand 
bei Dokumenten. In Datenbanken etc.  Wenn man z.b. das Datum falsch 
herum in einen Textfeld im Format jjjj-mm-tt  abspeichert in eine 
Abfrage eine Zeitraum 10 x einfacher als wenn man sich mit 
Datumsfunktionen herum plagt.

Davon abgesehen sind diese Datums global lesbar, ohne die Localen 
Eigenschaften des Landes. Ergo hat man ein Datumsbackup.

Und wenn ich irgend eine Schreibweise aus einen Datum brauche, fummele 
ich die mir 1 x zusammen und dann wird das eine Funktion.


Ich habe seit ich Programmiere z.b. noch NIE eine Systemfunktion direkt 
aufgerufen, sondern IMMER durch eine eigene Lib oder durch einen 
Funktion im Programm.

Grund : Wenn MS die Aufrufparameter / Typen der Funktion ändert muss ich 
das nur 1 x ändern.  Wenn sie die Funktion entfernen, schreibe ich sie 
halt neu.  Mir doch egal.

Davon abgesehen bin ich viel zu faul, Codes in jede Menge Programmen zu 
pflegen wenn ich mal ein Logischen Fehler in einer Funktion habe.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.