none
DLL in DLL einbinden RRS feed

  • Frage

  • Hallo!

    Ich habe ein UserControl welches ich als DLL kompiliere (na klar, was sonst :-)). In diesem UserControl habe ich Verweise auf andere DLL's (Verweis-DLL).

    Wie kann ich angeben, dass die Verweis-DLL's mit in die UserControl-DLL eingebunden werden?

    Fred.

    Donnerstag, 9. Juni 2016 09:02

Antworten

  • Hallo Fred,

    Ich hätte das so gemacht:

    SUB-DLL in der Resource in einer DLL einbinden und dann in einer Methode z.B.: InstallAllComponents installieren

    Um resourcen zu erstellen sieh dir mal diesen Thread an: https://msdn.microsoft.com/de-de/library/7k989cfy(v=vs.90).aspx

    Das könnte so aussehen:

    public static void InstallAllComponents()
    {
    System.IO.File.WriteAllBytes(Application.StartupPath + @"\SUB-DLL.dll", Properties.Resources.SUB_DLL);
    }

    Dann in der Program.cs Datei also vor dem Start aller anderen Funktionen kurz diese Methode aufrufen und du hast automatisch deine DLL mitgeliefert.

    Das soll natürlich nur anregen wenn dir Wege einfallen dies zu verbessern bist du herzlich eingeladen sie auszuprobieren^^

    Hoffe ich konnte helfen

    Eure DragonSkills99


    My website: http://www.dragonskills99.16mb.com


    Donnerstag, 23. Juni 2016 13:45

Alle Antworten

  • Hallo Fred,

    sobald du Verweise in einer DLL angelegt hast reicht das aus. Ich vermute jedoch, dass du ein Problem beim Verteilen der Anwendung hast. Denn sobald du deine UserControl-DLL in weiteren Anwendungen verweist, wird die verwendete DLL im Usercontrol nicht mehr mitgeführt und das führt zur Exception.

    Du musst als in deinem Hauptprogramm die verwendeten DLLs in der UserControl-DLL hineinkopieren und mit ausgeben lassen.

    #Hauptprogramm
    - UserControl-DLL (Verweis)
    - SUB-DLL (Kopie)

    #UserControll-DLL
    - SUB-DLL (Verweis)

    Donnerstag, 9. Juni 2016 10:37
  • Hallo David!

    Danke für deine Antwort.

    Genau das will ich ja verhindern: SUB-DLL (Kopie) deshalb suche ich nach einer Möglichkeit, die SUB-DLL's in die UserControl-DLL einzubinden.

    #Hauptprogramm
    - UserControl-DLL (Verweis)
     

    #UserControll-DLL
    - SUB-DLL (Verweis +=  Resource)

    Fred.

    Donnerstag, 9. Juni 2016 11:20
  • Hi,

    schau mal hier:

      http://derpturkey.com/embedding-dlls-or-resources-in-c-executable/

      https://visualstudiogallery.msdn.microsoft.com/a7196a81-67fc-4a26-a88a-b68ef31c2266


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 9. Juni 2016 11:30
    Moderator
  • Hallo Stefan!

    Ja, das ist genau das, was ich gesucht hatte :-))

    Leider habe ich den Vitevic Assembly Embedder noch nicht zum "laufen" gebracht. Die AWSSDK.dll gibt es niergens auf dem PC und auch eine AWSSDK.Core-DLL nicht. Ich kann zwar den Eintrag in der Projekt-Datei machen,

      <ItemGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'" >
        <Reference Include="AWSSDK">
          <HintPath>...</HintPath>
          <EmbedAssembly>true</EmbedAssembly>
        </Reference>
      </ItemGroup>
      <ItemGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'" >
        <Reference Include="AWSSDK">
          <HintPath>...</HintPath>
        </Reference>
      </ItemGroup>
    // Habe auch den Pfad so eingestellt:
    
    <HintPath>..\..\AWS SDK for .NET\bin\Net35\AWSSDK.dll</HintPath>


    unter Advanced wird mir dann auch Ambed Assembly angezeigt, aber ohne die DLL ist das ja eine Luftnummer ;-)

    Hat das schon mal Jemand gemacht?

    Trotzdem vielen Dank für deine Hilfe!

    Fred.


    • Bearbeitet perlfred Donnerstag, 9. Juni 2016 13:28
    Donnerstag, 9. Juni 2016 13:24
  • Hallo Fred,

    Ich hätte das so gemacht:

    SUB-DLL in der Resource in einer DLL einbinden und dann in einer Methode z.B.: InstallAllComponents installieren

    Um resourcen zu erstellen sieh dir mal diesen Thread an: https://msdn.microsoft.com/de-de/library/7k989cfy(v=vs.90).aspx

    Das könnte so aussehen:

    public static void InstallAllComponents()
    {
    System.IO.File.WriteAllBytes(Application.StartupPath + @"\SUB-DLL.dll", Properties.Resources.SUB_DLL);
    }

    Dann in der Program.cs Datei also vor dem Start aller anderen Funktionen kurz diese Methode aufrufen und du hast automatisch deine DLL mitgeliefert.

    Das soll natürlich nur anregen wenn dir Wege einfallen dies zu verbessern bist du herzlich eingeladen sie auszuprobieren^^

    Hoffe ich konnte helfen

    Eure DragonSkills99


    My website: http://www.dragonskills99.16mb.com


    Donnerstag, 23. Juni 2016 13:45