Wieso klappt es nicht in Visual Studio Code aber nicht in Visual Studio 2022?

2 Antworten

Ach jetzt bist Du zu WinForms gewechselt?
Spoiler: Wenn Du dich weigerst, dir die Grundlagen anzuschauen, wirst Du mit WinForms genauso viel Ärger haben, wie mit WPF.
Vor allem hatte ich dir erklärt, wie Du das machen musst ... naja.

Program.cs:

Du versuchst eine Form anzuzeigen, bevor die Anwendung gestartet wurde - klingt wenig sinnvoll, oder? Es funktioniert, allerdings hebelst Du damit andere Funktionen aus, wie z.B. das Handling, was die MainForm ist.
Starte die Anwendung mit einer Form und danach ganz normal die Anderen.

Window.cs:

Deine setName/setUrl/setText-Methoden sind sinnlos. In C# nutzt man für sowas Properties - außerdem setzen sie nur Variablen, doch das hat keine Auswirkungen. Du musst schon die Eigenschaft ändern, die Du ändern willst, also die Text-Property oder der Kram vom WebView.

Und dein Fehler liegt wieder woanders. Ich kriege das Programm mit deinem hier gezeigten Code aus der Kommandozeile gestartet, dann sollte es mit VSCode auch gehen.
Vielleicht hast Du irgendetwas in VSCode falsch eingestellt?

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler

iNeedHelp961 
Beitragsersteller
 08.08.2022, 17:31

Erstmal: Danke für die Antwort. Das Problem mit WPF war, dass ich dort kein Zugriff auf die Screen Klasse (Von WinForms) hatte. Die brauche ich allerdings, wenn ich mich nicht zu Python verbinden will. Was die Anmerkung für die Program.cs angeht, dass weiß ich auch. Ich hab jetzt eine For Loop in die OnLoad von dem ersten Fenster gebaut. Was die Anmerkung von Window.cs angeht, ich glaube ich verstehe was du meinst. Das wollte ich mir aber alles erst noch angucken, zurzeit ist das erste Ziel erstmal das die Fenster ein Funktionierendes WebView haben. In VSCode hab ich aber noch NIE etwas wirklich eingestellt. Also ich hab mir NuGet installiert und füge dadurch halt immer Sachen hinzu. Aber ansonsten hab ich eigentlich nichts gemacht.

0
Palladin007  08.08.2022, 17:52
@iNeedHelp961
Das Problem mit WPF war, dass ich dort kein Zugriff auf die Screen Klasse (Von WinForms) hatte

Hm - gut, unter WPF gibt's meines Wissens nach kein Gegenstück dazu.

Wozu brauchst Du das denn?
Hilft vielleicht das: https://docs.microsoft.com/de-de/dotnet/api/system.windows.systemparameters?view=windowsdesktop-6.0

Ich hab jetzt eine For Loop in die OnLoad von dem ersten Fenster gebaut.

Wichtig ist, dass Du eine MainForm hast und damit die Application startest.
Ob Du das in der Main-Methode oder oder im OnLoad machst, ist erst einmal nicht weiter wichtig, Du darfst nur nicht vergessen, dass in beiden Fällen lang dauernder Code blockiert.

In VSCode hab ich aber noch NIE etwas wirklich eingestellt.

Dann ist das vielleicht der Grund.

Ich hab das selber noch nie mit VSCode versucht (bzw. vor Ewigkeiten mal), daher kann ich da nicht helfen.

Aber Du kannst es mal aus der Kommandozeile versuchen. Geh dazu einfach mit der Kommandozeile in den Projekt-Ordner und führe "dotnet run" aus, das sucht das nächste Projekt (deshalb der Projekt-Ordner), baut es und führt es aus.
Wenn das geht, liegt's definitiv an deinem VSCode bzw. den (fehlenden) Einstellungen.

0
Palladin007  08.08.2022, 17:55
@Palladin007

PS:

Visual Studio bietet im Fehlerfall an, die letzte funktionierende Version zu starten. Hast Du das vielleicht gemacht und irgendwo noch einen Fehler? Dann sieht es nur so aus, als würde es in Visual Studio gehen, geht aber nicht.

0
Palladin007  08.08.2022, 18:09
@Palladin007

PPS wegen der Vollständigkeit:

Die ganzen Funktionen der Screen-Klasse kann man sich auch mit der WinAPI nachbauen:

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-enumdisplaymonitors

(+ die anderen Funktionen)

Hilfreich ist dabei auch die Seite pinvoke.net
Leider scheint die nicht mehr so aktiv gepflegt zu werden, sie ist aber immer noch eine große Hilfe.

Ob man das einem Anfänger zumuten kann ... eher nicht :D
Ein C++ Hintergrund wäre da aber schon die halbe Miete.

0

Visual Studio ist eine IDE. Speziell für C# (und paar andere Sprachen noch).

Visual Studio Code ist nur ein Texteditor wenn man es so will. Um C# Code damit debuggen zu können, kannst du dir aber die C# Erweiterung installieren.


Palladin007  08.08.2022, 17:15

Hat damit nichts zu tun.

Die Kommandozeile ist auch keine IDE und trotzdem kannst Du damit .NET Programme starten.

0
VINC767  08.08.2022, 17:33
@Palladin007

Ich rede eigentlich vom Kompilieren..

Wenn du nichts weiteres herunterladest kannst du auch nicht mit der Kommandozeile einen C# kompilieren. Bei einer IDE wie Visual Studio wird man sofort beim installieren gefragt ob man alle C# Entwicklungsdienste installieren will.

Bei Visual Studio Code muss man es selber machen, oder er fragt kurz wenn man einen C# Code öffnet ob man die Erweiterung herunterladen will.

0
Palladin007  08.08.2022, 17:54
@VINC767

Ich gehe mal stark davon aus, dass hier zumindest die dotnet cli vorhanden ist, immerhin wird die von Visual Studio mit installiert und damit schien es ja zu funktionieren.

Und die reicht eigentlich auch schon aus.

0
VINC767  08.08.2022, 18:40
@Palladin007

Aber das Visual Studio Code es checkt musst du halt die Erweiterung herunterladen. Ansonsten bleibt dir nur Terminal, da musst du aber auch ins Verzeichnis rein. Denke der Fragesteller drückt halt auf Play und wundert sich warum nichts geht.

0
Palladin007  08.08.2022, 19:32
@VINC767

Nach eigener Aussage ist die Extension aber installiert:

Hat aber die C# Extension, die das wiederum kann. Meinst du es könnte daran liegen?

Ich hab die vor Ewigkeiten mal genutzt, daher weiß ich nicht, ob man noch irgendetwas einstellen muss oder nicht.

Allerdings ist die Aussage ja:

Die Fenster werden gezeigt, das WebView nicht.

Das verstehe ich so, dass das Programm startet, aber das Fenster leer ist.
DAS würde ohne installierter Extension sicher nicht passieren ;)

0