DLL in C-Sharp Assembly einbetten
Hallo @ All!
Ich versuche via Visual Studio 2013 Professional eine C# Dll (Dot.Net 4 und derzeit noch leer) in ein C#- Forms Assembly über "Verweise" einzubetten (ebenfalls Dot.Net 4 und auch noch leer). Ich möchte nicht den Weg über "Embedded Resources" gehen so wie es z.B. hier (https://www.youtube.com/watch?v=x-KK7bmo1AM) beschrieben wird, weil die DLL auch noch in Entwickluung ist. So muss ich nicht jedesmal die DLL kopieren und es können beide Projekte parallel entwickelt und geprüft werden.
Ich scheitere aber immer an so einer bescheuerten Meldung von Visual Studio (verstehe sie nicht):
Interoptypen aus Assembly "meine.dll' können nicht eingebettet werden, da entweder das 'ImportedFromTypeLibAttribute'-Attribut oder das PrimaryInteropAssemblyAttribute-Attribut fehlt. (Hä??)
Zum Einbetten, also in die Exe streamen beim Build gebe ich in den Eigenschaften der DLL im Ziel-Assembly an: Interopt-Typen einbetten. Das sollte laut MS reichen, wenn ich das richtig verstanden habe.
Warum will ich das machen, man könnte ja einfach die DLL neben der EXE liegen lassen und gut ist's? Ja könnte man, ich möchte es aber so machen.
Hat jenand einen Tipp für mich was ich da genau machen muss?
Vielen Dank für die Hilfe!
Mayho
Ich versuche via Visual Studio 2013 Professional eine C# Dll (Dot.Net 4 und derzeit noch leer) in ein C#- Forms Assembly über "Verweise" einzubetten (ebenfalls Dot.Net 4 und auch noch leer). Ich möchte nicht den Weg über "Embedded Resources" gehen so wie es z.B. hier (https://www.youtube.com/watch?v=x-KK7bmo1AM) beschrieben wird, weil die DLL auch noch in Entwickluung ist. So muss ich nicht jedesmal die DLL kopieren und es können beide Projekte parallel entwickelt und geprüft werden.
Ich scheitere aber immer an so einer bescheuerten Meldung von Visual Studio (verstehe sie nicht):
Interoptypen aus Assembly "meine.dll' können nicht eingebettet werden, da entweder das 'ImportedFromTypeLibAttribute'-Attribut oder das PrimaryInteropAssemblyAttribute-Attribut fehlt. (Hä??)
Zum Einbetten, also in die Exe streamen beim Build gebe ich in den Eigenschaften der DLL im Ziel-Assembly an: Interopt-Typen einbetten. Das sollte laut MS reichen, wenn ich das richtig verstanden habe.
Warum will ich das machen, man könnte ja einfach die DLL neben der EXE liegen lassen und gut ist's? Ja könnte man, ich möchte es aber so machen.
Hat jenand einen Tipp für mich was ich da genau machen muss?
Vielen Dank für die Hilfe!
Mayho
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 276299
Url: https://administrator.de/forum/dll-in-c-sharp-assembly-einbetten-276299.html
Ausgedruckt am: 02.04.2025 um 04:04 Uhr
6 Kommentare
Neuester Kommentar

Moin,
das läuft so nur über Interfaces, du benötigst zusätzlich zur deiner DLL ein entsprechendes Interface mit dem ImportedFromTypeLib Attribut.
Siehe: Exemplarische Vorgehensweise: Einbetten von Typen aus verwalteten Assemblys (C# und Visual Basic)
Hierbei liegen die DLLs trotzdem noch extern. Eine Möglichkeit ohne Ressource ist mir so nicht bekannt.
Gruß jodel32
das läuft so nur über Interfaces, du benötigst zusätzlich zur deiner DLL ein entsprechendes Interface mit dem ImportedFromTypeLib Attribut.
Siehe: Exemplarische Vorgehensweise: Einbetten von Typen aus verwalteten Assemblys (C# und Visual Basic)
Hierbei liegen die DLLs trotzdem noch extern. Eine Möglichkeit ohne Ressource ist mir so nicht bekannt.
Gruß jodel32

Zitat von @mayho33:
Noch eine Frage zur Schnittstelle:
Habe verstanden, dass eine Schnittstelle da sein muss damit eine DLL in ein Assembly eingebunden werden kann. Aber was muss/Kann
in der Schnittstelle vorhanden sein? Kannst du mir das noch erklären @jodel? oder irgend jemand anderer?
Siehst du doch in der verlinkten Anleitung... Im Interface stehen immer die Definitionen der Funktionen, also nur der Körper ohne Funktionsinhalt, wie bei den Header-Dateien eines C Programms.Noch eine Frage zur Schnittstelle:
Habe verstanden, dass eine Schnittstelle da sein muss damit eine DLL in ein Assembly eingebunden werden kann. Aber was muss/Kann
in der Schnittstelle vorhanden sein? Kannst du mir das noch erklären @jodel? oder irgend jemand anderer?
Aber wie bereits geschrieben, die DLL damit "einbetten" wirst du mit diesem Verfahren auch nicht erreichen.

Hast du einen Tipp?
Hmm habe das Beispiel aus meinem Link nachgebaut und funktioniert einwandfrei ...Vermutlich hast du da eine Kleinigkeit vergessen, da übersieht man gerne etwas wenn man nur so drüber fliegt.