Laden...

DLL mit Form-Vererbung läßt sich von VS nicht laden

Erstellt von UHM vor 3 Jahren Letzter Beitrag vor 3 Jahren 532 Views
U
UHM Themenstarter:in
22 Beiträge seit 2009
vor 3 Jahren
DLL mit Form-Vererbung läßt sich von VS nicht laden

Hallo,

ich habe versucht aus einer bestehenden App ein Basisformular herauszuziehen, damit ich das in zukünftigen Projekten verwenden kann. Die Durchführung habe ich gemäß Exemplarische Vorgehensweise: Demonstrieren der visuellen Vererbung - Windows Forms .NET Framework versucht.
Das Bauen der DLL hat jetzt soweit geklappt - oder auch nicht. Beim Versuch die als geerbtes Formular in ein anderes Projekt hinzuzufügen kommt die Meldung > Fehlermeldung:

Die Assembly ...dll kann nicht geladen werden. Stellen Sie sicher, dass die Datei eine gültige .Net Framework-Assembly ist

Welche Einstellung ist denn da falsch?

Gruß
Udo

4.938 Beiträge seit 2008
vor 3 Jahren

Hallo,

du hast also das Projekt mit dem Basisformular als Verweis (reference) zu dem Hauptprojekt hinzugefügt und dann bei einer Form die Basisklasse entsprechend geändert? Und beim Ausführen kommt dann die Fehlermeldung?

Ist die DLL denn beim Bauen in das Ausgabeverzeichnis ("bin/debug" bzw. "bin/release") kopiert worden? Ansonsten gibt es beim Verweis dafür eine Einstellung ("Copy local").

U
UHM Themenstarter:in
22 Beiträge seit 2009
vor 3 Jahren

Hallo Th69,

Äh, nein.
Die Fehlermeldung kommt dann, wenn ich versuche die DLL mit der Basisklasse zu dem anderen Projekt im VS über "Hinzufügen -> neues Element -> Windows Forms -> Geerbtes Formular" hinzufügen will. Dabei kann man auch die DLL direkt über einen Datei-öffnen-Dialog im BIN/debug-Verzeichnis auswählen. Klickt man die an und dann OK, dann kommt die Fehlermeldung. Nicht erst beim Ausführen, soweit kommt man garnicht, da es schon nicht funktioniert die DLL zum Projekt hinzuzufügen.

Gruß
Udo

Edit: Ich probiere mal die DLL in das andere Projekt zu kopieren und dort hinzuzufügen.
Edit2: Nein, funktioniert dann auch nicht.

2.298 Beiträge seit 2010
vor 3 Jahren

Das klingt von der Fehlermeldung her, als ob du eine Unmanaged DLL z. B. in C++ vorliegen hast.

Eine normal in C# oder C++/CLI Assembly (DLL) sollte sich Problemlos einbinden lassen.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

U
UHM Themenstarter:in
22 Beiträge seit 2009
vor 3 Jahren

Geschrieben ist die DLL ausschließlich in C#. Gäbe es eine Einstellung, mit der sich die DLL derart verhunzten ließe?

2.298 Beiträge seit 2010
vor 3 Jahren

Huh, sehe grade das scheint ein Bug in VS zu sein. Hab einfach mal versucht ein geerbtes Formular zu erstellen. Und siehe da. Gleicher Fehler (hier: VS Professional 2017).

Ich empfehle dir ohnehin: Verweise auf die Bibliothek mit dem BaseForm, erstelle ein neues Formular und ändere den Basistyp von Form auf dein BaseForm.

Damit solltest du allen ärger aus dem Weg gehen.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

U
UHM Themenstarter:in
22 Beiträge seit 2009
vor 3 Jahren

Bzw. als Ressource ist ein Bild mit drin. Kann es an dem liegen?

U
UHM Themenstarter:in
22 Beiträge seit 2009
vor 3 Jahren

Ok, jetzt waren wir gleichzeitig, guten Morgen
Ich schau mal.
Hier VS2019

U
UHM Themenstarter:in
22 Beiträge seit 2009
vor 3 Jahren

Also den Link konnte ich hinzufügen, die Klassen der DLL sind jetzt im Hauptprojekt auch bekannt. Allerdings bekomme ich jetzt fast überall Fehlermeldungen wie :

Fehler CS1705 Assembly "xxxdll" mit Identität "...dll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" verwendet "System.Runtime, Version=4.2.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" mit einer höheren Version als die referenzierte Assembly "System.Runtime" mit Identität "System.Runtime, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".

Wo stelle ich denn die Runtime-Version ein?
Hauptprogramm ist derzeit Framework 4.8 (hatte es auch mit 4.7 am Anfang) und DLL ist .NET Core 3.1
Gibt's da noch eine andere Einstellung oder fehlt mir da gerade etwas?

F
10.010 Beiträge seit 2004
vor 3 Jahren

Du kannst keine Core-DLL in eine Framework-DLL einbinden, musst dich schon für eins von beiden entscheiden

U
UHM Themenstarter:in
22 Beiträge seit 2009
vor 3 Jahren

Ich habe keine Möglichkeit etwas anderes auszuwählen.
Bei der DLL gibt es nur Core-Auswahlen, im Hauptprogramm nur Framework-Auswahlen. Sollte das an anderer Stelle entschieden werden?

U
UHM Themenstarter:in
22 Beiträge seit 2009
vor 3 Jahren

Ok, war wohl schon die Erstellung des DLL-Projekts falsch.