Wie kompiliere ich C # -Code als eine Bibliothek anstelle einer ausführbaren Datei?

8

Ich habe eine C # -Konsolenanwendung in Visual Studio 2010. Sie hat eine Main () -Methode sowie eine Reihe von Hilfsklassen. Ich möchte, dass diese Dienstprogrammklassen für andere Lösungen verfügbar sind. Aus dem Lesen von Online scheint es, dass ich es als eine Klassenbibliothek (DLL) kompilieren muss. Also hier ist was ich getan habe:

  • Ging in Visual Studio zu "Projekt & gt; [Projektname] Eigenschaften & gt; Anwendung" und änderte "Ausgabetyp" von "Konsolenanwendung" in "Klassenbibliothek"
  • Umgebaut; ProjectName.dll wurde in bin / Debug erstellt.
  • Eine neue Konsolenanwendung erstellt
  • Lösungs-Explorer & gt; Referenz hinzufügen & gt; Wechseln Sie zu ProjectName.DLL, wählen Sie sie aus.

Weder IntelliSense noch der Objektbrowser können jedoch die Klassen in dieser DLL finden.

Ich habe versucht, mehrere verschiedene Konsolenanwendungen als Klassenbibliotheken neu zu kompilieren und habe das gleiche Ergebnis erhalten. Ich habe auch festgestellt, dass es funktioniert, wenn ich die Lösung zunächst als Klassenbibliothek erstelle, aber nicht, wenn ich sie später in eine andere umwandeln werde.

Irgendwelche Tipps?

    
RexE 22.01.2011, 22:33
quelle

5 Antworten

5

Sie müssen es nicht als DLL erstellen. VS 2010 (und IIRC 2008) ermöglichen das Referenzieren von exe-Assemblys. Alles, was Sie brauchen, ist, dass die relevanten Typen deklariert werden.% Co_de% - Klassen der obersten Ebene default to public , wenn Sie keinen Spezifizierer hinzufügen.

    
Marc Gravell 22.01.2011, 22:57
quelle
1

Was ich immer getan habe (da dies mit statischen C ++ - Bibliotheken geschieht, was ich normalerweise verwende - obwohl ich denke, dass es auch Vorteile für C # hat), füge dann das Projekt der Klassenbibliothek der Lösung hinzu Fügen Sie im Projekt (oder den Projekten), das es verwendet, einen Verweis hinzu. Wenn Sie eine Referenz hinzufügen, enthält die Liste der möglichen Referenzen Elemente aus der Lösung. Es sollte also ziemlich offensichtlich sein, was zu tun ist. Sie sollten dann intellisense für Ihre Bibliothek erhalten.

Ein Vorteil dieser Vorgehensweise besteht darin, dass wenn Sie Dateien im Bibliotheksprojekt bearbeiten müssen, dies sehr einfach ist, da sie in der Nähe sind und das Projekt beim Kompilieren der Lösung automatisch neu erstellt wird.

    
please delete me 22.01.2011 22:38
quelle
1

Sie können den Ausgabetyp auch in den Projekteigenschaften in die Klassenbibliothek umschalten - dann erhalten Sie eine Ausgabe als DLL anstelle der EXE-Datei

    
Jan Brož 23.09.2013 05:39
quelle
0

Stellen Sie sicher, dass die Klassen in Ihrem DLL-Projekt öffentlich sind.

    
Robert Groves 22.01.2011 22:37
quelle
0

Aus der Sicht von verwalteten Bibliotheken ist es zunächst egal, welcher Ausgabetyp Ihre verwaltete Bibliothek ist. Ich meine, dass Sie ConsoleApplication1.exe erfolgreich vom ConsoleApplication2.exe-Projekt referenzieren können (Sie haben also keinen Grund, ConsoleApplication1.exe in ConsoleApplication1.dll zu konvertieren).

Als Zweites habe ich versucht, Ihre Situation zu reproduzieren, aber ... ohne Wirkung. Mein VS zeigt Typen / Methoden von ConsoleApplication1.dll an. Ein Grund, den ich annehmen kann, ist, dass Sie vergessen haben, den Sichtbarkeitsmodifikator (public keyword) für Ihre Utility-Klassen zu setzen.

    
Alex Zhevzhik 22.01.2011 23:00
quelle

Tags und Links