C# etwas importieren?

2 Antworten

Ich hab ein Konsolen Projekt erstellt. In dieses Konsolen Projekt will ich jetzt Wpf WebView Fenster erstellen.

Geht nicht.

Naja - geht schon, aber dann hast Du am Ende auch nur das per Hand geschrieben, was das Template ("dotnet new winforms" oder "dotnet new wpf") für dich generiert.

Dafür ist das SDK-Konzept von Microsoft da. Du erstellst kein Konsole-Projekt und bindest WinForms ein, sondern verwendest das WinForms-SDK - oder nutzt das Template, was es für dich tut. Gleiches für WPF.

Dann ist es auch kein Problem mehr, es einzubinden, es ist ja schon eingebunden.
Allerdings hast Du dann keine Konsole mehr, die musst Du dir erst dazu holen - aber wozu?

Such nach WebView2 - Microsoft erklärt es mit einem neuen Projekt, sowohl für WinForms als auch WPF.

Woher ich das weiß:Berufserfahrung
(...) In dieses Konsolen Projekt will ich jetzt Wpf WebView Fenster erstellen. Aber ich kriege dabei raus: Der Typ- oder Namespacename "Form" wurde nicht gefunden (...)

Windows Forms und WPF sind zwei unterschiedliche Frameworks zum Erstellen grafischer Oberflächen. Vermische sie nicht miteinander.

Anfängern würde ich zu Windows Forms raten. C#-Grundlagenkenntnisse werden dennoch vorausgesetzt.

(...) wie geht das in Visual Studio Code?

Ich würde dir eher dazu raten, Visual Studio zu verwenden, wenn du Windows Forms- oder WPF-Projekte erstellen möchtest. Im Gegensatz zu VS Code ist die Anwendung dafür konzipiert und stellt dir hilfreiche Tools (wie einen Designer) zur Verfügung.

Zu einem Vorgehen in VS Code: Du benötigst das dotnet SDK.

Lege einen neuen Ordner an. Über die Konsole kannst du ein Windows Forms-Projekt via

dotnet new winforms

erstellen. Für ein WPF-Projekt würde der Template-Parameter wpf lauten.

Deinen bisherigen Code kannst du anschließend in das Projekt einbinden.

iNeedHelp961 
Fragesteller
 07.08.2022, 00:22

Erstmal danke für die Antwort. Vorwissen über C# direkt hab ich nur wenig. Aber ich kann die meisten Mainstream Sprachen, daher ist mir der Syntax dennoch relativ vertraut und die Grundlagen kenne ich.

Was dieses "dotnet new winforms" angeht:

Ich will/muss eine Klasse schreiben in der es eine CreateWindow(string title, string url) Methode und eine start() methode gibt. Aber diese Templates dort sind irgendwie super umständlich. Gibt es keinen Weg einfach nur das Zeug importiert zu haben?

0
Palladin007  07.08.2022, 00:50
@iNeedHelp961
Anfängern würde ich zu Windows Forms raten. C#-Grundlagenkenntnisse werden dennoch vorausgesetzt.

Dazu sei noch erwähnt, dass Win Forms schon vor Jahren für tot erklärt wurde.
Für den Einstieg ok, aber lieber früher als später zu WPF (oder modernere Alternativen) umsteigen. WPF ist zwar auch quasi tot, allerdings hat es viele Konzepte eingeführt, die noch heute top aktuell sind - zum Lernen ist das also immer noch gut geeignet und wird auch immer noch produktiv genutzt.

Win Forms mag einfacher sein, als WPF, sobald man aber konkretere Vorstellungen hat, wird Win Forms schwieriger, weil es für vieles einfach keinen direkten Weg bietet, schnell landet man vor der Aufgabe, selber zu zeichnen und wenn es darum geht, ist WPF deutlich einfacher als WinForms.

Und generell würde ich Anfängern von Win Forms *und* WPF abraten. Beides sind sehr komplexe Frameworks, die zumindest beim Einstieg viel dieser Komplexität verbergen. Aber das kommt recht zügig doch noch auf einen zu und dann sollte man die C#-Grundlagen drauf haben.

Daher wäre es klüger, erst mit der Konsole zu arbeiten und mit den Grundlagen sicher zu werden.

Aber ich kann die meisten Mainstream Sprachen, daher ist mir der Syntax dennoch relativ vertraut und die Grundlagen kenne ich.

Nimm's mir nicht übel, aber ich bezweifle, dass Du die meisten Mainstream Sprachen "kannst" ;)
Ich weiß nicht wie lange Du das schon machst, aber bis man mit einer Sprache und den wichtigsten Basics aus den wichtigsten Frameworks halbwegs sattelfest ist, gehen locker ein/zwei/drei Jahre ins Land, mal mehr mal weniger, je nachdem, wie schnell Du lernst.
Wie Du schreibst, klingt für mich eher so, dass Du für die meisten Mainstream Sprachen YouTube-Tutorials (oder vergleichbares) durch gearbeitet hast - nur verschweigen dir diese Tutorials gerne, dass es dahinter noch einen gewaltigen Berg mehr gibt.

Deine nächste Frage bestätigt meine Vermutung:

Ich will/muss eine Klasse schreiben in der es eine CreateWindow(string title, string url) Methode und eine start() methode gibt. Aber diese Templates dort sind irgendwie super umständlich. Gibt es keinen Weg einfach nur das Zeug importiert zu haben?

Das "dotnet new winforms" erstellt ein vollständig startfähiges Projekt aus einem Template. Umständlich ist da nichts, aber Du musst dich auch damit auseinander setzen und nicht erwarten, dass alles zufällig genau so ist, wie Du es erwartest.
Wenn Du das Template nicht verstehst, dann lese dich in die Doku von Microsoft ein und verwende Visual Studio, das dir noch eine ganze Reihe weiterer Tools bietet.

Und was Du suchst, gibt es da auch, es heißt bloß anders:

// Kopie aus dem Template, nur Kommentare entfernt
static class Program
{
    [STAThread]
    static void Main() // <= start() Methode
    {
        ApplicationConfiguration.Initialize();
        Application.Run(new Form1()); // <= CreateWindow()
    }    
}

Titel kannst Du da als Eigenschaft oder in der Form selber setzen.

Und für die WebView: such nach WebView2, das basiert auf der Edge-Engine und sollte das bieten, was Du brauchst.

0
iNeedHelp961 
Fragesteller
 07.08.2022, 00:53
@Palladin007

Danke erstmal. Ich hab mich anscheinend schlecht ausgedrückt. Also erstmal: Ob ich WPF oder WinForms verwende ist was die komplexität angeht relativ egal. Ich klatsch da eh nur ein WebView Widget rein.

Und klar, niemand kann jede Sprache "komplett". Aber z.B. wer die Basics von Java kann der versteht ziemlich gut wie C# funktioniert. Hab btw. diese Sprachen durch nen Studenten gelernt nicht durch YouTube Videos. Was jetzt meine CreateWindow und Start Methode angeht. Die hab ich gerade so halbwegs gut hinbekommen. Für jeden Screen wird jetzt ein Fenster erstellt in die größe gesetzt die ich brauche und hinter die Icons geschoben. Und morgen mach ich dann den Socket Server rein. Vielen dank euch allen für die Hilfe und ausführlichen Antworten/Kommentare!

0
Palladin007  07.08.2022, 01:07
@iNeedHelp961
Ob ich WPF oder WinForms verwende ist was die komplexität angeht relativ egal. Ich klatsch da eh nur ein WebView Widget rein.

Ich hatte mich auf die Antwort von regex9 bezogen.
Aber es stimmt, wenn es nur dabei bleibt, ist es ziemlich egal - falls es dabei bleibt ;)

Aber z.B. wer die Basics von Java kann der versteht ziemlich gut wie C# funktioniert

Nö.
Gut, die rudimentärsten Grundlagen sind sehr ähnlich, nur geht es dir hier nicht darum. C# geht schon seit Jahren einen eigenen Weg und wenn man mit sowas wie Methoden, if und for fertig ist, dann unterscheiden sich beide Sprachen und Frameworks doch schneller als Du denkst.

Was jetzt meine CreateWindow und Start Methode angeht. Die hab ich gerade so halbwegs gut hinbekommen.

Dein Student hat es dir nicht richtig beigebracht und Du scheinst die Hälfte zu überlesen. Du musst nichts halbwegs hinbekommen, es ist schon fertig, Du musst es dir nur generieren lassen. In Visual Studio sind das ein paar Klicks, mit dem dotnet cli ein Befehl.

Danach hast Du ein frisches Projekt, in dem Du jederzeit ein Window bzw. eine Form erstellen und anzeigen kannst. Wenn Du eine Konsole haben willst, dann stelle in der csproj den OutputType von WinExe in Exe um. Oder Du verwendest nur WinForms und startest das Projekt aus einem Batch-Skript mit Parametern, je nachdem, was Du brauchst. Oder ein zweites Konsolenprojekt, was das WebView2-Projekt startet. Oder oder oder

0