IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Migration projet .NET Framework 4.8 vers .NET6.0 [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut Migration projet .NET Framework 4.8 vers .NET6.0
    Bonjour à toutes et à tous,
    J'ai un projet VB.NET qui qui a été crée sous Visual Studio 2022 Community et avec MonoGame version 3.8.0, cette version de Monogame supporte jusqu'au Framework 4.8. En toute logique mon projet cible donc .NET Framework 4.8.

    Mon projet fonctionne parfaitement mais pour plusieurs raison je souhaite cibler celui-ci vers .NET6.0 et en profiter pour mettre à jour Monogame vers la dernière version 3.8.1 qui ne supporte plus que .NET6.0 (et seulement Visual Studio en version 2022 au passage).

    Problème : dans la fenêtre des propriétés de mon projet la liste des Framework disponible s'arrête au .NET Framework 4.8 (.NET6.0 ne s'affiche pas).

    En principe .NET6.0 est bien installé sur ma machine puisque sauf erreur celui-ci s'installe en même temps que Visual Studio et que je n'ai jamais bidouillé l'installation des Frameworks. Les commandes Dotnet pour vérifier l'installation me donne ceci :
    C:\Users\chris>dotnet --list-sdks
    6.0.401 [C:\Program Files\dotnet\sdk]

    C:\Users\chris>dotnet --list-runtimes
    Microsoft.AspNetCore.App 6.0.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
    Microsoft.NETCore.App 3.1.25 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 6.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.WindowsDesktop.App 3.1.25 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
    Microsoft.WindowsDesktop.App 6.0.9 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
    Merci beaucoup si vous avez une idée pour réaliser cette opération car je sèche complétement.

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 988
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 988
    Par défaut
    Il faut partir du principe que Framework et Core sont deux technologies différentes même si souvent tu dois pouvoir écrire le même code.
    D'ailleurs, lorsque tu crées un projet, on te demande si tu veux faire du Framework ou du Core.

    Par contre il existe des solution pour porter framwork vers core ou pour les rendre "compatibles"
    https://learn.microsoft.com/en-us/dotnet/core/porting/
    https://learn.microsoft.com/en-us/ar...k-for-net-core

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut
    Merci beaucoup Popo,
    Cela m'a permis de trouver aussi cette page en Français :
    https://learn.microsoft.com/fr-fr/do...stant-overview

    J'ai pas encore testé mais à priori j'ai la solution pour le faire donc je passe résolu...espérant que je ne rencontre pas d'autres problème m'obligeant à revenir sur ce post .

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut
    Petit retour d'expérience :
    La migration de mon projet c'est passé parfaitement à ceci prés :

    Délai d'exécution des lignes Reader.ReadInt32 (placées entre le sw.Start et sw.Stop) :
    - En .NET Framework 4.8 : 80ms (au total)
    - En .NET 6.0 : 800ms (au total)
    soit 10 fois plus lents en .NET6.0, ce n'est pas rien quand même.....

    Je n'ai pas crée un nouveau post mais cela m'intéresserait beaucoup de savoir si il y a une solution pour retrouver la rapidité d'avant migration.
    Bien sûre, je précise que je suis exactement dans les mêmes conditions d'accès disque dans les 2 cas, (même disque, même fichier).
    Je suis en Mode Debug, j'ai pas mesuré les temps exactes en mode Release mais la lenteur est bien présente dans ce cas aussi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
        Public Function LoadMap(Filename As String) As MapBase
            If Not File.Exists(Filename) Then Return Nothing
            Dim sw As New Stopwatch
     
            Using fStream As FileStream = New FileStream(Filename, FileMode.Open)
                Using zipStream As GZipStream = New GZipStream(fStream, CompressionMode.Decompress)
                    Using reader As New BinaryReader(zipStream)
                        Dim Name As String = reader.ReadString
                        Dim mWidth As Integer = reader.ReadInt32
                        Dim mHeight As Integer = reader.ReadInt32
                        Dim xStart As Single = reader.ReadSingle
                        Dim yStart As Single = reader.ReadSingle
                        Dim Start As New Vector2(xStart, yStart)
                        Dim TileSize As Integer = reader.ReadInt32
     
                        NewMap = New MapBase(Name, mWidth, mHeight, Start, TileSize)
     
                        ' LOAD MAP DATA
                        For x = 0 To NewMap.MapWidth - 1
                            For y = 0 To NewMap.MapHeight - 1
     
                                sw.Start()
                                Dim TileSetId As Integer = reader.ReadInt32
                                Dim Id As Integer = reader.ReadInt32
                                Dim Width As Integer = reader.ReadInt32
                                Dim Height As Integer = reader.ReadInt32
                                sw.Stop()
     
                                NewMap.TileList(x, y) = New Tile(TileSetId, Id, Width, Height)
     
                            Next
                        Next
     
                        reader.Close()
                    End Using
                    zipStream.Close()
                End Using
                fStream.Close()
            End Using
     
            Debug.Print(String.Format("Elapsed Time : {0}ms", sw.ElapsedMilliseconds))
            Return NewMap
        End Function
    Merci beaucoup.

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 988
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 988
    Par défaut
    Si tu testes au premier appel, c'est normal.
    Il y a le temps de chargement de tout ce que tu utilise

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut
    Ben, ma fonction peut être appelé depuis un menu que j'ai exécuté plusieurs fois d'affilé, je constate sensiblement les même temps d'exécutions même si le premier peut être un peu plus long en effet.

    Tous le code est strictement identique entre les 2 versions, cette différence est quand même très étonnante je trouve .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/10/2010, 14h23
  2. Réponses: 8
    Dernier message: 05/07/2009, 12h45
  3. Réponses: 2
    Dernier message: 22/11/2006, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo