Visual Studio 2015 - Probleme mit alten Projekten?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von EaranMaleasi.

    Visual Studio 2015 - Probleme mit alten Projekten?

    Moin,

    habe in den letzten Tagen mir die neuen Produkte von Microsoft geholt (Win 10 und Visual Studio 2015 Enterprise) und habe direkt mal versucht ein mit Visual Studio 2013 erstellten Projekt zu laden.
    Dabei gab es noch keine Probleme, allerdings beim Debuggen schon. Diese Zeile wird markiert:

    VB.NET-Quellcode

    1. ​wecStart.DownloadStringAsync(New Uri(...))


    Mit diesem Hinweis:
    ​Ein Ausnahmefehler des Typs "System.NullReferenceException" ist in Tool.exe aufgetreten.

    Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.


    Also hab ich mir den besagten WebClient mal angeschaut, angeblich sollte er ja keine Methoden beinhalten. Eigentlich sollte Visual Studio schon vor dem Debuggen so einen Fehler, falls es denn einer sein sollte, erkennen und melden.
    Komisch nur, dass der Client tatsächlich gar keine Methoden oder sonst was hatte, witzig erweise der eine von den dreien schon:

    Jetzt frag ich mich, was soll das? Habe nichts an dem Projekt geändert, in VS 2013 ging alles noch ohne Probleme.
    Moin,

    Updater - Warum sollte man eigene Updater vermeiden?

    Dann solltest Du Variablen nie öffentlich machen, das verstößt gegen Kapselung und somit die OOP. Wenn das so nicht geht, einzeln deklarieren.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Private löst das nicht, aber das ist dann richtig.
    Ich meinte, einzeln deklarieren, nicht lokal und nicht mehrere auf einmal. Kann ja gut sein, dass das nur mit Werte-, nicht aber Referenztypen geht.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Funzt das Projekt denn in VS2013?
    Das täte mich nämlich wundern.

    DasDing schrieb:

    Eigentlich sollte Visual Studio schon vor dem Debuggen so einen Fehler, falls es denn einer sein sollte, erkennen und melden.
    Nein, eine NullReference kann der Compiler nicht vorhersehen. Er kann ja nicht zur CompileZeit wissen, ob zur Laufzeit was drinne sein wird in einer Variablen oder nicht.

    Dein Bildle sieht mir ganz logisch aus, und zeigt auch deutlich, dass so, wie du Deklaration und Initialisierung handhabst, dass das total uneindeutig ist:
    Da werden drei WebClient-Variablen deklariert, und eine WebClient-Instanz wird erstellt und somit zugewiesen.
    Aber an welche der 3 WebClient-Variablen?
    Ok, die Bildle zeigens: die Instanz wird an die erste Variable von den dreien zugewiesen.

    Aber sicherlich findest du nun eine Lösung fürs das.

    Aber wie gesagt: Ich glaube nicht, dass VS2013 sich da anders verhält, oder mach davon auch mal diese 3 Bildle.

    ErfinderDesRades schrieb:

    Aber wie gesagt: Ich glaube nicht, dass VS2013 sich da anders verhält, oder mach davon auch mal diese 3 Bildle.


    Da muss ich dich leider enttäuschen, es ging 100% in VS 2013 habe daran ja nichts geändert beim Wechsel. Habe aktuell auch nur noch VS 2015 drauf, dann bleibt es wohl ein Mysterium. Die einzelne Zuweisung geht dann, zur Laufzeit ändert sich bis dahin aber nichts an den Clients.

    DasDing schrieb:

    Mysterium
    Hast Du zufällig auch das Betriebssystem gewechselt?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    DasDing schrieb:

    (Win 10 und Visual Studio 2015 Enterprise)
    OK, war im Kleingedruckten. ;(
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    DasDing schrieb:

    Da muss ich dich leider enttäuschen
    Schade, ich war so gespannt auf die Bildle.

    Aber ansonsten hast du das Prob aber doch gelöst, oder?



    Edit: Ich habs jetzt in vs2013 nachgestellt - verhält sich tatsächlich anders als auf deim Bildle.

    Also in vs2013 kriegt jeder der 3 WebClients dieselbe WebClient-Instanz zugewiesen.
    Was mindestens ebenso schwachsinnig ist, wie in 2015, wo die Instanz nur an die erste Variable in der Liste geht.

    Insgesamt kannste solch einfach nicht bringen, weil wie gesagt (und wie es sich ganz praktisch erwiesen hat): der Code ist uneindeutig.

    In dem Sinne hast du recht, dass solch eiglich der Compiler verhindern sollte - vlt. kommt das ja in vs2020.

    EditEdit:
    Potzblitz! - in vs2013 kriegt jede der Variablen ihren eigenen webClient!
    Also mit einmal As New WebClient() geschrieben sind 3 WebClientse erstellt und an 3 Variablen zugewiesen! 8|

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „ErfinderDesRades“ ()

    DasDing schrieb:

    Versteh nicht was daran uneindeutig ist, aber ok.
    Ich könnte es dir erklären, vermutlich würdest du was bei lernen.
    Aber ich hasse es, Code von Bildle abschreiben zu müssen, wo wir doch so einen schönen vbnet-tag im Forum haben.

    Und viel interessieren scheints dich auch nicht - aber ok.
    also bei Interesse poste die Zeile nochmal richtig, dann gebe ich eine Erklärung ab.