Codedom - Eigene DLL hinzufügen und benutzen

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von schockerjo.

    Codedom - Eigene DLL hinzufügen und benutzen

    Hey,

    ich habe immoment ein Problem an dem ich wirklich zu knabbern habe.
    Und zwar möchte ich mit Codedom eine EXE erstellen und ihr eine DLL hinzufügen.
    Soweit so gut. Das sollte ja ziemlich einfach sein, dachte ich :whistling:

    Folgendes Problem: Die Exe wird erstellt, die DLL hinzugefügt und die Applikation gestartet.
    Ich bekomme die Meldung: "test.exe funktioniert nicht mehr"
    Ich weiß auch, woran es liegt. Sobald ich auf die DLL zugreifen möchte stürtz alles ab.
    Aber wenn ich sie z.B. importiere (also im Code), meckert keiner ?(
    Sie scheint also irgendwie da zu sein. Wenn ich auch eine .dll nenne also z.B. Plugin2.dll, die nicht existiert, bricht der Compiler ab.

    Hier mal mein Code:

    Codedom.vb :
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.CodeDom.Compiler
    2. Public Module Codedom
    3. Public Function Compile(ByVal OutputPath As String, ByVal cSource As String, ByVal debug As Boolean, Optional ByVal ResourceFiles As String() = Nothing, Optional ByVal IconPath As String = "", Optional ByVal Platform As String = "anycpu") As CompilerResults
    4. Dim Parameters As New CompilerParameters
    5. Parameters.GenerateExecutable = True
    6. Parameters.OutputAssembly = OutputPath
    7. Parameters.ReferencedAssemblies.Add("System.dll")
    8. Parameters.ReferencedAssemblies.Add("System.Data.dll")
    9. Parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll")
    10. Parameters.ReferencedAssemblies.Add(Application.StartupPath & "\Plugin.dll")
    11. If ResourceFiles IsNot Nothing Then
    12. For Each rf As String In ResourceFiles
    13. Parameters.EmbeddedResources.Add(rf)
    14. Next
    15. End If
    16. Parameters.CompilerOptions = "/optimize+ /platform:" & Platform
    17. If (debug = False) Then
    18. Parameters.CompilerOptions &= " /debug- /target:winexe"
    19. End If
    20. If IconPath <> "" Then
    21. Parameters.CompilerOptions = Parameters.CompilerOptions & " /win32icon:" & IconPath
    22. End If
    23. Dim options As New Dictionary(Of String, String)
    24. options.Add("CompilerVersion", "v2.0")
    25. Dim Compiler As VBCodeProvider = New VBCodeProvider(options)
    26. Return Compiler.CompileAssemblyFromSource(Parameters, cSource)
    27. End Function
    28. End Module



    Module1.vb (diese wird kompiliert)
    Spoiler anzeigen


    VB.NET-Quellcode

    1. Public Module Module1
    2. Public Sub Main()
    3. Dim cmd As Plugin.Command
    4. End Sub
    5. End Module



    plugin.dll
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Interface Plugin
    2. Sub newCommand(ByRef cmd As Command)
    3. Sub pluginActivated(ByRef path As String)
    4. End Interface
    5. Public Class Command
    6. Public id As String
    7. Public name As String
    8. Public parameter As Dictionary(Of String, String)
    9. End Class


    Wäre super nett, wenn wir jemand helfen könnte :thumbup:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „schockerjo“ ()

    schockerjo schrieb:

    diese wird kompiliert
    Mit welchem Cosde und welchen Parametern rufst Du denn Codedom.Compile() auf?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. Dim c As CompilerResults = Codedom.Compile(sfd.FileName, source, true)


    sfd = SaveFileDialog
    source = Module1.vb als .txt

    Hab ich ja ganz vergessen :D
    Mehr ist da glaube ich nicht relevant. Nur halt der SaveFileDialog wie er eben aufgerufen wird :)

    MfG

    Edit: Hab den Fehler. Oh Got haha :D Hatte total vergessen die Dll in den gleichen Ordner zu packen.


    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „schockerjo“ ()