Visual Studio: Windows Application in Class Library ändern

Programmiert man im Visual Studio (VS) ein Teilprojekt als ausführbare Datei und möchte später dieses Teilprojekt in eine andere Solution einbinden, dann geht das, genauso wie das Umstellen der Sprache, in Visual Studio relativ einfach und ist sehr praktisch, da dieses Teilprojekt in mehreren anderen Projekten eingebunden werden kann.

Nachteil ist, wenn man das Teilprojekt als ausführbare Anwendung (Windows Application)erstellt hat, dass dann eine exe-Datei erzeugt wird, welche aber nicht unbedingt Bestandteil des Hauptprojekt werden sollte. Aus diesem Grund muss man seine Windows Application in eine Class Library ändern.

Dies macht man über die Properties => Application => Output Type. Den Output Type setzt man auf Class Library. Und dann kommen erstmal viele Fehlermeldungen.

Screenshot Visual Studio Properties Output Type Einstellung
Output Type auf Class Library setzen

Anwendungsbeispiel

Ein Beispiel könnte sein, dass man ein FTP-Programm programmiert hat und nun die FTP-Funktionen auch in anderen Anwendungen integrieren möchte. In diesem Fall sollte in der anderen Anwendung keine *.exe-Dateien vom FTP-Programm landen, sondern nur Libraries in Form von *.dll-Dateien.

Fehlermeldung

Nach der erstmaligen Änderung in VS von “Windows Application” zu “Class Library” werden jede Menge Fehlermeldungen erzeugt

Steht die Datei “App.xaml” noch die Eigenschaft “Build Action = Application Definition” dann kommen jede Menge Fehlermeldungen von diesem Typ:

Bestseller Nr. 1

Fehlermeldung 1:

The name ‘…’ does not exist in the current context

Da es keine ausführbare Application mehr sein soll, habe ich einfach die Build Action auf Page gesetzt und die folgenden Fehlermeldungen erhalten:

Fehlermeldung 2:

The project file contains a property value that is not valid.
Library project file cannot specify ApplicationDefinition element.

Screenshot Visual Studio Error List shows project file contains a property value that is not valid

Wenn man direkt versucht die App über Start zu starten, kommt die folgende Fehlermeldung, was aber logisch ist, da es sich ja nicht mehr um eine ausführbare App handelt. Und in unserem Fall wollen wir dies auch nicht.

Fehlermeldung 3:

A project with an Output Type of Class Library cannot be started directly.
In order to debug this project, add an executable project to this solution which references the library project. Set the executable project as the startup project.

Visual Studio zeigt error project with output type of class library cannot be started directly

Lösung

Einige Foren schreiben, dass man die Datei App.xaml löschen soll und das man im MainWindow.xaml Windows auf UserControl ändern soll.

Screenshot Visual Studio MainWindow.xaml auf UserControl ändern
Windows zu UserControl ändern

Die Änderung auf UserControl kann oder sollte man vornehmen, wenn man das User-Interface von MainWindow.xaml auch in den anderen Anwendungen ,wo die Library eingebunden wird, weiterverwenden möchte.

Die App.xaml muss man nicht zwingend löschen. Man kann einfach die Eigenschaft Build Action auf None setzen. Dann wird diese nicht mehr berücksichtigt. Man hat sie aber noch verfügbar, falls man doch mal wieder eine eigenständige, ausführbare Datei (*.exe) kompilieren möchte.

Screenshot Visual Studio App.xaml Build Action
Build Action auf None setzen

3 Kommentare

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert