Ich habe ein C # -Projekt in Visual Studio, das Console Application
als Ausgabetyp hat.
Aber ich brauche auch ein Class Library
dieses Projekts für eine andere Lösung.
Im Moment muss ich den Ausgabetyp jedes Mal wechseln, aber ich frage mich, ob es möglich ist, exe
und dll
gleichzeitig build-event
zu generieren?
Gibt es post-build-event
dafür?
Nach meinem Wissen gibt es keine Möglichkeit, den Ausgabetyp nach dem Übersetzen zu ändern. Davon abgesehen wäre es möglich, zwei Projekte wie Konsole und Bibliothek in Ihrer Lösung zu haben, die aber dieselben Quellcodedateien verwenden haben unterschiedliche Ausgabetypen. Auf diese Weise hätten Sie unterschiedliche Ausgaben ohne Doppelcode.
Es ist im Allgemeinen möglich, auf eine .net-EXE-Assembly zu verweisen, wie es eine Klassenbibliothek wäre.
Sie können also einfach eine exe-Datei erstellen und auf die exe (klingt seltsam, aber funktioniert) in Ihrem anderen Projekt verweisen.
Dies ist der Dialog zum Suchen nach Referenzen. Wie Sie sehen, können Sie exe-Dateien auswählen.
Aber wie kommentiert, hängt es wirklich davon ab, was Ihr Anwendungsfall ist. Ich empfehle nicht, eine exe mit einem Einstiegspunkt an Ihren Kunden zu versenden, in der Hoffnung, dass der Kunde die exe nicht entdeckt. Aber was Sie tun können, ist, Ihren Einstiegspunkt zu kompilieren.
Zum Beispiel
%Vor%Wenn es einen relevanten Grund gibt, eine ausgelieferte exe und eine ausgelieferte Klassenbibliothek zu haben, würde ich Ihre Lösung wie folgt umgestalten:
Damit ist anderen völlig klar, dass es eine Anwendung gibt, die die Bibliothek und die Bibliothek selbst verwendet.
Sie sollten Ihr Projekt zu einer DLL kompilieren und dann diese DLL in einer Konsolenanwendung verwenden.
Eine Möglichkeit, das zu erreichen, was Sie wollen, ist, das msbuild manuell auf Ihrem Post-Build-Event Ihres Projekts auszuführen.
Siehe: Wie erstelle ich eine Lösung programmatisch in C # ?
oder Erstellen von C # Solution im Release-Modus mit MsBuild .exe
Ich bin nicht wirklich sicher, warum Leute denken, dass es nicht möglich ist, aber es ist tatsächlich.
Der einfachste Weg wäre das Umbenennen von exe
in dll
Klingt dumm, ich weiß. Aber es funktioniert in vielen Fällen. Auch, wie "Peter I" sagte, kann eine .NET-Exe als Assembly in andere Projekte importiert werden. Also brauchst du vielleicht sowieso keine DLL.
Ein anderer Weg wäre die Verwendung von C# command line
wie hier angegeben: / out (C # -Compiler-Optionen)
Sie können Befehlszeilenoptionen in Pre / Post-Build-Ereignissen verwenden Befehlsvorbereitungsdialogfeld für Vorbereitungs-Ereignis / Post-Build-Ereignis
Die übliche Lösung hierfür ist die Verwendung einer Lösung mit zwei Projekten:
Main
nur einige Funktionen aufruft. Weitere Informationen finden Sie auf der MSDN-Seite zu Lösungen .
Codor hat vorgeschlagen, die Dateien manuell zum Console-Projekt hinzuzufügen, aber ein Nachteil ist, dass die Build-Einstellungen nicht zwischen beiden Versionen geteilt werden, so dass es zu Inkonsistenzen kommen kann.
Tags und Links c# visual-studio post-build-event