Partager via


Changements cassants Visual Basic dans .NET Core 3.0

Voici une liste des modifications majeures dans Visual Basic :

.NET Core 3.0

Types dans l’espace de noms Microsoft.VisualBasic.ApplicationServices non disponibles

Les types dans l’espace de noms Microsoft.VisualBasic.ApplicationServices ne sont pas disponibles.

Version introduite

.NET Core 3.0

Description de la modification

Les types dans l'espace de noms Microsoft.VisualBasic.ApplicationServices étaient disponibles dans le .NET Framework. Ils ne sont pas disponibles dans .NET Core 3.0 - 3.1.

Les types ont été supprimés pour éviter les dépendances d’assembly inutiles ou les changements cassants dans les versions suivantes.

Cet espace de noms a été ajouté dans .NET 5, mettez à niveau votre projet vers .NET 5 ou version ultérieure.

- ou -

Si votre code dépend de l’utilisation de Microsoft.VisualBasic.ApplicationServices types et de leurs membres, vous pouvez utiliser un type ou un membre correspondant dans la bibliothèque de classes .NET. Par exemple, certains membres System.Environment et System.Security.Principal.WindowsIdentity fournissent des fonctionnalités équivalentes aux propriétés de la classe Microsoft.VisualBasic.ApplicationServices.User.

Catégorie

Visual Basic

API affectées


Types dans l’espace de noms Microsoft.VisualBasic.Devices non disponibles

Les types dans l’espace de noms Microsoft.VisualBasic.Devices ne sont pas disponibles.

Version introduite

.NET Core 3.0

Description de la modification

Les types dans l'espace de noms Microsoft.VisualBasic.Devices étaient disponibles dans le .NET Framework. Ils ne sont pas disponibles dans .NET Core 3.0 - 3.1.

Les types ont été supprimés pour éviter les dépendances d’assembly inutiles ou les changements cassants dans les versions suivantes.

Cet espace de noms a été ajouté dans .NET 5, mettez à niveau votre projet vers .NET 5 ou version ultérieure.

- ou -

Si votre code dépend de l’utilisation de Microsoft.VisualBasic.Devices types et de leurs membres, vous pouvez utiliser un type ou un membre correspondant dans la bibliothèque de classes .NET. Par exemple, les fonctionnalités équivalentes à la classe Microsoft.VisualBasic.Devices.Clock sont fournies par les types System.DateTime et System.Environment, et les fonctionnalités équivalentes à la classe Microsoft.VisualBasic.Devices.Ports sont fournies par les types dans l’espace de noms System.IO.Ports.

Catégorie

Visual Basic

API affectées


Types dans l’espace de noms Microsoft.VisualBasic.MyServices non disponibles

Les types dans l’espace de noms Microsoft.VisualBasic.MyServices ne sont pas disponibles.

Version introduite

.NET Core 3.0

Description de la modification

Les types dans l'espace de noms Microsoft.VisualBasic.MyServices étaient disponibles dans le .NET Framework. Ils ne sont pas disponibles dans .NET Core 3.0 - 3.1.

Les types ont été supprimés pour éviter les dépendances d’assembly inutiles ou les changements cassants dans les versions suivantes.

Cet espace de noms a été ajouté dans .NET 5, mettez à niveau votre projet vers .NET 5 ou version ultérieure.

- ou -

Si votre code dépend de l’utilisation des types Microsoft.VisualBasic.MyServices et de leurs membres, il existe des types et des membres correspondants dans la bibliothèque de classes .NET. Voici un mappage des types Microsoft.VisualBasic.MyServices à leurs types de bibliothèques de classes .NET équivalents :

Type Microsoft.VisualBasic.MyServices Type de bibliothèque de classes .NET
ClipboardProxy System.Windows.Clipboard pour les applications WPF, System.Windows.Forms.Clipboard pour les applications Windows Forms
FileSystemProxy Types dans l'espace de noms System.IO
RegistryProxy Types liés au registre dans l’espace de noms Microsoft.Win32
SpecialDirectoriesProxy Environment.GetFolderPath

Catégorie

Visual Basic

API affectées


Les modèles À propos et SplashScreen sont cassés

Les fichiers About.vb et SplashScreen.vb générés par Visual Studio contiennent des références aux types dans l'espace de noms My qui ne sont pas disponibles dans l'.NET Core 3.0 et 3.1.

Version introduite

3.0

Description de la modification

.NET Core 3.0 et 3.1 ne contiennent pas de prise en charge complète de Visual Basic My . Les modèles de formulaires About et SplashScreen dans Les applications Visual Studio pour Visual Basic Windows Forms font référence aux propriétés du My.Application.Info type qui ne sont pas disponibles.

La prise en charge de Visual Basic My a été améliorée dans .NET 5, mettez à niveau votre projet vers .NET 5 ou version ultérieure.

- ou -

Corrigez les erreurs du compilateur dans les types About et SplashScreen dans votre application. Utilisez la System.Reflection.Assembly classe pour obtenir les informations fournies par le My.Application.Info type. Un port normal des deux formulaires est disponible ici.

Conseil / Astuce

Il s’agit d’exemples de code et non optimisé. La liste des attributs doit être mise en cache pour réduire le temps de chargement du formulaire.

À propos

Imports System.Reflection

Public NotInheritable Class About

    Private Sub about_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Set the title of the form.
        Dim applicationTitle As String = Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyTitleAttribute)()?.Title

        If String.IsNullOrEmpty(applicationTitle) Then
            applicationTitle = System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().GetName().Name)
        End If

        Me.Text = String.Format("About {0}", applicationTitle)
        ' Initialize all of the text displayed on the About Box.
        ' TODO: Customize the application's assembly information in the "Application" pane of the project
        '    properties dialog (under the "Project" menu).
        Me.LabelProductName.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyProductAttribute)()?.Product, "")
        Me.LabelVersion.Text = String.Format("Version {0}", Assembly.GetExecutingAssembly().GetName().Version)
        Me.LabelCopyright.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyCopyrightAttribute)()?.Copyright, "")
        Me.LabelCompanyName.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyCompanyAttribute)()?.Company, "")
        Me.TextBoxDescription.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyDescriptionAttribute)()?.Description, "")
    End Sub

    Private Sub OKButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OKButton.Click
        Me.Close()
    End Sub

End Class

SplashScreen

Imports System.Reflection

Public NotInheritable Class SplashScreen

    Private Sub SplashScreen1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'Set up the dialog text at runtime according to the application's assembly information.  

        'TODO: Customize the application's assembly information in the "Application" pane of the project
        '  properties dialog (under the "Project" menu).

        'Application title
        Dim appTitle As String = Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyTitleAttribute)()?.Title

        If String.IsNullOrEmpty(appTitle) Then
            appTitle = System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().GetName().Name)
        End If

        ApplicationTitle.Text = appTitle

        Dim versionValue = Assembly.GetExecutingAssembly().GetName().Version

        'Format the version information using the text set into the Version control at design time as the
        '  formatting string.  This allows for effective localization if desired.
        '  Build and revision information could be included by using the following code and changing the
        '  Version control's designtime text to "Version {0}.{1:00}.{2}.{3}" or something similar.  See
        '  String.Format() in Help for more information.
        '
        '    Version.Text = System.String.Format(Version.Text, versionValue.Major, versionValue.Minor, versionValue.Build, versionValue.Revision)

        Version.Text = System.String.Format(Version.Text, versionValue.Major, versionValue.Minor)

        'Copyright info
        Copyright.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyCopyrightAttribute)()?.Copyright, "")
    End Sub

End Class

Catégorie

Visual Basic Windows Forms

API affectées

Aucun