.NET - was installieren

Richard Wagner

Bekanntes Mitglied
Heute hat Microsoft .NET 6.0 als "fertig" veröffnetlicht.

Da gibt es aber noch mehr "Suppoted Versions":

.NET 6.0 (recommended)
.NET 5.0
.NET Core 3.1

Was installieren? Ich kenne mich da nicht aus. Die meisten Anwendungen brauchen das neue Zeugs doch vermutlich noch nicht, und es gibt ja auch noch die Version, die in Windows 10 sowieso drin ist.

Aber wenn ich denn dan neue installiere. Kann ich dann mit Version 6 die 5er vollständig ersetzten? Und braucht man dann evtl trotzdem die 3.1?
 

dr_tommi

alter Oldie
Du must das installieren was die Anwendungen brauchen.
Und was Versionen angeht haben wir ja gesehen dass die 3er nicht mit der 4 ersetzt wurde, und die 5 auch nicht die 3 oder 4 ersetzt hat.
Mit der 6 wird das vermutlich so ähnlich sein.
Im schlimmsten Fall musst du die 3.x, die 4, die 5 und auch die 6 installieren.
 

Rubb

Rover
Im schlimmsten Fall musst du die 3.x, die 4, die 5 und auch die 6 installieren.

.... mit diesen Rätseln hatte ich auch schon zu Kämpfen .... :o

Dann gab es hier im Board irgenwo einen Hinweis zum Nachlesen --->>
(Wobei ich über die notwendigen Update-Funktionen nichts sagen kann ... vielleicht kann ja noch einmal jemand etwas dazu sagen? Wie am geschicktesten verwenden .... ?? )

https://www.computerbase.de/downloads/systemtools/all-in-one-runtimes/
 

Dorwyn

Bekanntes Mitglied
Als Programmierer legst du fest in welcher .NET Version du dein Programm schreibst. Diese Versionen musst du, wenn sie nicht sowieso nativ im Bauch deines Windows enthalten sind entsprechend nachinstallieren. Das Updaten dieser Versionen übernimmt das Windows Update. Jede einzelne Version ist in ihrem Funktionsumfang fest. D.h. es kommen keine neuen Klassen mit rein oder werden geändert. Die Updates sind i.d.R. nur Sicherheitsupdates.
Es kam aber durchaus schon vor, dass sich bestimmte Funktionen von einer Version zu der nächsten geändert haben. Soll heißen: Wenn du dein Projekt von einer Version in eine andere portierst, kann es sein dass du daran nochmals arbeiten musst und entsprechend anpassen.
Ich bin mir jetzt nicht 100% sicher ob die 4.6x durch die 4.7x ersetzt wurde bzw. ob die Applikationen die in 4.6x geschrieben wurden mit der 4.7x gestartet werden kann. Ich meine das ginge.
Ein Sonderfall war die 3.5. Die war recht populär, wurde aber nicht nativ ins OS übernommen. Konnte aber nachträglich über die Windows CD/DVD nachinstalliert werden.
 

Hedley_HH

Bekanntes Mitglied
Moin,

hängt von der zugrunde liegenden Common Language Runtime (CLR) ab:

.Net 4.0 bis 4.8 CLR 4
.Net 2.0 bis 3.5 CLR 2
.Net 1.1 CLR 1.1
.Net 1.0 CLR 1.0

Wenn ein Programm z.B. mit Visual Studio 2012 (.Net 4.5) entwickelt wurde, kann es auch auf einem Rechner mit .Net 4.8 ausgeführt werden. Innherhalb einer CLR gilt die Abwärtskompatibilität.

Gruß
Hedley
 

dr_tommi

alter Oldie
Innerhalb einer CLR gilt die Abwärtskompatibilität.
Genau da liegt das Problem.
Eben nur innerhalb.
Also müsste man eigentlich wirklich alle Versionen installieren um gewappnet zu sein.

Ich hatte heute das Problem dass ich auf einer frischen Windows11-Installation ein Programm hatte was eine mfc100.dll erforderte.
Das Programm war frisch heruntergeladen.
Die gehört zu den "Visual C++ Redistributables" allerdings zu der seit 2018 nicht mehr supporteten Version für Visual Studio 2010.
Also bleibt eigentlich nur auf neuen System alle Bibliotheken zu installieren.

Zum Glück ist die Verwendung der vbrun300.dll etwas seltener geworden. ;)
 

Dorwyn

Bekanntes Mitglied
Also es ist früh am Morgen und ich bin daher ggf. tief verwirrt, aber ich meine dass Visual C++ Redistributables != .NET Framework ist. Das schreibt sich ja auch schon ganz anders :)
Die C++ Redist ist eben eine Bibliothek für C++ und wird nicht automatisch mit einem der Frameworks mitinstalliert.
 

dr_tommi

alter Oldie
Also es ist früh am Morgen und ich bin daher ggf. tief verwirrt, aber ich meine dass Visual C++ Redistributables != .NET Framework ist. Das schreibt sich ja auch schon ganz anders :)
Die C++ Redist ist eben eine Bibliothek für C++ und wird nicht automatisch mit einem der Frameworks mitinstalliert.
Im Prinzip ja, aber.
Es geht hier um Runtime-Bibliotheken, egal ob nun NET, VB, C++ oder was auch immer.
Und die müssen nun mal entweder mit dem jeweiligen Programm mitgeliefert oder vom Anwender nachinstalliert werden.
Microsoft hat uns einen Teil der Arbeit abgenommen weil die Microsoft-Programme ja selbst die Bibliotheken nutzen.
Aber es bleiben da immer noch reichlich Baustellen.
 

Dorwyn

Bekanntes Mitglied
100% ACK @dr_tommi . Normalerweise ist das eben das Versäumnis des Softwareherstellers wenn sie sonderbare Lib's nutzen und nicht mitliefern. Kann ja auch mal passieren dass da was kaputt geht. Dann sollte das mit einer Neuinstallation des Programms aber erledigt sein.
 

Richard Wagner

Bekanntes Mitglied
Manche Programme bringn mit, was sie brauchen und installieren das "still und heimlich". Und oft ist es eine bereits veraltete Version, selbst bei einem neuen Programm. Wäre es da nicht sinnvoller, selbst zuvor die aktuelle Version zu installieren...
 

adhome

Bekanntes Mitglied
Es geht hier um Runtime-Bibliotheken, egal ob nun NET, VB, C++ oder was auch immer.

Ich würde das .NET System nicht vermischen mit Runtime Bibliotheken.
Beim Framework gibt es keine festen Adressen, die bei einer anderen dll nicht mehr gültig sind. Alles ist wesentlich kompatibler noch oben und unten.
Hier nachzulesen:
 

dr_tommi

alter Oldie
Es geht hier um Runtime-Bibliotheken, egal ob nun NET, VB, C++ oder was auch immer.
Ich würde das .NET System nicht vermischen mit Runtime Bibliotheken.
Doch.
Net ist auch nur ein System von Runtimebibliotheken.
Beim Framework gibt es keine festen Adressen, die bei einer anderen dll nicht mehr gültig sind.
Ob der Aufruf nun über feste Adressen oder Funktionsaufrufe gesteuert wird ist Sache der Programmierer der Anwendungen.

Alles ist wesentlich kompatibler noch oben und unten.
Wesentlich ist etwas anderes.
Und kompatibel auch nur soweit wie der Programmierer das vorgesehen hat.
Hier nachzulesen:
Besonders interessant sind dabei die Abschnitte die beginnen mit "Migrationsprobleme"
Und übrigens ist dieser Artikel mehr für Programmierer gedacht.
Fügen Sie der Konfigurationsdatei der App mindestens ein <supportedRuntime>-Element hinzu, um die Versionen zu definieren, in denen die App ausgeführt werden kann. Jedes <supportedRuntime>-Element führt eine unterstützte Version der Laufzeit auf. Dabei gibt das erste Element die bevorzugte Version der Laufzeit an und das letzte die am wenigsten bevorzugte Version.
Code:
XML
<configuration>
   <startup>
      <supportedRuntime version="v2.0.50727" />
      <supportedRuntime version="v4.0" />
   </startup>
</configuration>
Der Programmierer muss also schon vorher klären, welche Versionen zulässig sind und welche nicht.
Dafür muss aber de Version auch schon existieren.
Und wenn da eben nur was von Version 3.5 steht, auf dem Zielsystem aber nur die 4.5 installiert ist, dann läuft das Programm vermutlich nicht.
Und wenn die Version direkt abgefragt wird, dann erst recht nicht.
Und warum steht das was von "supportedRuntime" wenn es angeblich keine Runtime-Bibliothek ist? ;)
 

adhome

Bekanntes Mitglied
Es gibt keine festen Bindungen in .NET. Nicht mal durch COM wrapper.
Aber egal. Zu technisch darf man hier nicht werden, da das Thema zu komplex ist, als dass man es erklären könnte.

Einfach: Programme die damals programmiert wurden für Framework 1,2,3 laufen mit der Runtime 3.5.
Version 4,5,6 laufen mit der Runtime 6
Deshalb gibt es als Zusatzfuture zum nachinstallieren auch die Runtime 3.5 in Windows eingebaut.

Und ja: Ist nur 4.5 Framework installiert, läuft auch die 4.0 App. Du musst nicht tausende Frameworks installieren.
 

dr_tommi

alter Oldie
Und ja: Ist nur 4.5 Framework installiert, läuft auch die 4.0 App. Du musst nicht tausende Frameworks installieren.
Eigentlich müsste/sollte man als User gar keine Runtime oder Frameworks installieren.
Sowas sollte das Programm mitbringen bzw. bei der Installation erledigen, zumindest alles für das Programm benötigte.
Um am besten auch noch bei der Installation prüfen ob die passende Version nicht vielleicht doch schon installiert ist, was dann eine nochmalige Installation unnötig machen würde.
 

DrSnuggles

Bekanntes Mitglied
Es geht hier um Runtime-Bibliotheken, egal ob nun NET, VB, C++ oder was auch immer.

Ich würde das .NET System nicht vermischen mit Runtime Bibliotheken.
Beim Framework gibt es keine festen Adressen, die bei einer anderen dll nicht mehr gültig sind. Alles ist wesentlich kompatibler noch oben und unten.
Hier nachzulesen:
Wenn man keine Ahnung hat, einfach mal ...


Hier geht es um .Net Core
 
Zuletzt bearbeitet:

adhome

Bekanntes Mitglied
.NET Standard oder Core haben zwar nichts mit der Fragestellung zu tun, aber natürlich sind diese eingeschlossen. Framework 5 führt Framework 4 Apps aus.
Von 4 auf 5 wurde die Abwärtskompatibilität komplett gebrochen. Aber es geht ja um die andere Richtung. Und der Grund ist nicht eine feste Bindung wie bei c++.
Bei .NET kann ich die Assembly Versionen die ich nehmen möchte umbiegen, solange die Funktionen sich nicht geändert haben. Aber die Zuordnung bleibt grundsätzlich kompatibel.

Ich bleibe bei der Aussage bis du was anderes beweist:
Einfach: Programme die damals programmiert wurden für Framework 1,2,3 laufen mit der Runtime 3.5.
Version 4,5,6 laufen mit der Runtime 6

Und ich finde es richtig gemein aus dem Satz "Du musst nicht tausende Frameworks installieren." rauszuinterpretieren, ich behauapte DU müsstest was installieren. Der Satz hätte auch "es muss installiert Sein". Installationsfunktionen hab ich damit nicht ansprechen wollen.
 

dr_tommi

alter Oldie
Ich bleibe bei der Aussage bis du was anderes beweist:
Einfach: Programme die damals programmiert wurden für Framework 1,2,3 laufen mit der Runtime 3.5.
Version 4,5,6 laufen mit der Runtime 6
Dann können wir jede Diskussion mit dir an dieser Stelle beenden.
Hier wird dir niemand etwas beweisen, warum auch.
Die Erfahrung widerspricht deiner Aussage.
Und ich finde es richtig gemein aus dem Satz "Du musst nicht tausende Frameworks installieren." rauszuinterpretieren, ich behauapte DU müsstest was installieren. Der Satz hätte auch "es muss installiert Sein". Installationsfunktionen hab ich damit nicht ansprechen wollen.
Irgendjemand muss es installieren wenn es das Programm benötigt. Im Idealfall das Installationsprogramm der gewünschten Anwendung, im Zweifelsfall der User.
 

adhome

Bekanntes Mitglied
Gegenfrage: Ist auf dein Rechner Framework 1.0 installiert?
Oder Framework 1.1 ?
Oder 2.1 ?

Hat dir jemals ein alltes Programm gesagt, "Installier Framework 1.0" oder es manuell installiert oder per Installer oder herrgot worauf du auch rumreitest.
 

dr_tommi

alter Oldie
Gegenfrage: Ist auf dein Rechner Framework 1.0 installiert?
Oder Framework 1.1 ?
Oder 2.1 ?
Nein, so alte Programme nutze ich nicht.
Hat dir jemals ein alltes Programm gesagt, "Installier Framework 1.0" oder es manuell installiert oder per Installer oder herrgot worauf du auch rumreitest.
Wie gesagt, es geht nicht um 1.0.
Aber ich habe öfter Softwareprojekte von Github wo beim Start einiges an Voraussetzungen abgefragt wird.
Und da passiert es schon mal dass eine genau spezifizierte Version notwendig ist. 4.72 ist dann nicht ok wenn 4.7 gefordert wird, Kompatibilität hin oder her.
 

Dorwyn

Bekanntes Mitglied
Ich hatte den Fall tatsächlich mal dass ein von mir geschriebenes Programm mit der nächst höheren Version des .NET Frameworks nicht mehr lief. Ich kann mich nur nicht mehr dran erinnern ob das von 1.1 auf 2 oder von 2 auf 3.5 war. Es handelte sich um ein Programm das eine Datenbank ausgelesen hat und in ein Excel Sheet übertragen hat und dabei dann verschiedene Spalten gesperrt hat. Ging um Sprachdatenbanken die an ein Übersetzungsbüro gingen.
Jedenfalls wurden Office Methoden so geändert, dass mehr Variablen mit übergeben werden mussten und es nicht einfach eine zusätzliche Überladung dazu gab. Ist bestimmt schon 15 Jahre her. Aber ja, Abwärtskompatibilität war damals nicht gegeben. Das mag heute anders sein. Ich programmiere nur noch wenn ich irgendwas kleines brauche das ich auf die Schnelle bei Google nicht finde oder das so nicht finde wie ich das gerne hätte :)
 

Dorwyn

Bekanntes Mitglied
Hat nix mit Office zu tun gehabt. Das Office war dasselbe. Die Methoden innerhalb des Frameworks wurden geändert.
Bsp.: Aus public static void diesesbeispiel(string pfad, string schriftart)
wurde public static void diesesbeispiel(string pfad, string schriftart, string farbe)
ohne die vorherige Version als Überladung mit anzubieten. Dann mussten die ganzen Methoden angepasst werden auch wenn da nachher nur null oder sowas drin stand.
 

adhome

Bekanntes Mitglied
Also hat er eine neueres Framework verwendet, obwohl du es ihm nicht gesagt hast oder von wusstest (gabs ja damals noch nicht). Er hat auch nicht dich gezwungen eine neue Version zu installieren oder?
Zusätzlich ist Microsoft.Office.Tools.Excel Assembyl nicht Teil des Frameworks. Es ist Teil des Office Studios. Das Basis Framework (FCL) selbs hat keine Office Funktionen
 

adhome

Bekanntes Mitglied
Ich konkretisiere: Framework 6.3 kann alles ausführen bis runter zu 4.0


Ist jetzt endlich Ruhe?

Und das die "Standard" Version wieder mit 1 oder 2 anfängt kann ich nichts. Mauschelt die irgendwo zwischen 5 und 6.
 
Oben Unten