.NET Core 3.x + VB에서도 WinForms를 원합니다!

소개



이것은 Visual Basic Advent Calendar 2019의 15 일째 기사입니다.

※.NET Core 3.x 라는 타이틀입니다만, .NET Core 3.1 을 사용하고 있습니다.

【2019/12/21 추가】
Visual Studio의 미리 보기 버전 Visual Studio 16.5 Preview 1에서 WinForms(.NET Core)를 디자이너에서 미리 볼 수 있습니다.
Updates to .NET Core Windows Forms designer in Visual Studio 16.5 Preview 1

템플릿에 VB가 없음



@t 후쿠모리의 "VB.NET의 .NET Core에서 WinForms, WPF 지원은 어떻게됩니까?"기사에서와 같이 템플릿에 VB가 없습니다.

아래 사이트에 따르면 VB 지원은 불행히도 .NET 5가 된 것 같습니다. .NET 3.1 그래도 안돼.
  • .NET Core 3.0 VB WPF/Winforms Templates are disappeared
  • Remove WPF VB Templates #1734

  • 기존 프로젝트 템플릿이라면 VB는 지원하지 않지만 .csproj와 같은 형태로 .vbproj 파일을 다시 쓰면 VB에서도 Windows Forms 응용 프로그램을 만들 수 있습니다.
    .NET Core 3.0 + F#에서도 WinForms를 원합니다!

    환경


  • Visual Studo 2019 Version 16.4.0 → 16.5 Preview 1
  • .NET Core SDK 3.1

  • 프로젝트 파일



    VB에서도 해 보았습니다. 템플릿에 대해서는 아직 이해가 부족한지 조금 해 보았습니다만 쓸모 없었습니다.

    VBWinFormApp.vbproj
    <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
    
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <UseWindowsForms>true</UseWindowsForms>
        <StartupObject>VBWinFormApp.Form1</StartupObject>
      </PropertyGroup>
    
    </Project>
    

    특별한 점은 특별히 없을 수도 있지만 Sdk"Microsoft.NET.Sdk.WindowsDesktop"로, <OutputType>をWinExe로, <UseWindowsForms>true로 설정하는 것입니까?

    VBWinFormApp.vbproj.user
    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup />
      <ItemGroup>
        <Compile Update="Form1.vb">
          <SubType>Form</SubType>
        </Compile>
      </ItemGroup>
    </Project>
    

    시작 개체를 Sub Main에서 Form1로 설정합니다.

    출처



    Form1.vb
    Public Class Form1
    
    End Class
    

    Form1.Designer.vb
    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    Partial Class Form1
        Inherits System.Windows.Forms.Form
    
        'フォームがコンポーネントの一覧をクリーンアップするために dispose をオーバーライドします。
        <System.Diagnostics.DebuggerNonUserCode()> _
        Protected Overrides Sub Dispose(ByVal disposing As Boolean)
            Try
                If disposing AndAlso components IsNot Nothing Then
                    components.Dispose()
                End If
            Finally
                MyBase.Dispose(disposing)
            End Try
        End Sub
    
        'Windows フォーム デザイナーで必要です。
        Private components As System.ComponentModel.IContainer
    
        'メモ: 以下のプロシージャは Windows フォーム デザイナーで必要です。
        'Windows フォーム デザイナーを使用して変更できます。  
        'コード エディターを使って変更しないでください。
        <System.Diagnostics.DebuggerStepThrough()> _
        Private Sub InitializeComponent()
            components = New System.ComponentModel.Container()
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
            Me.ClientSize = New System.Drawing.Size(800, 450)
            Me.Text = "Form1"
        End Sub
    
    End Class
    

    결과



    Windows Forms 디자이너는 표시되지 않았지만 빌드하면 양식이 나왔습니다.



    C#에서도 Windows Forms 디자이너가 표시되지 않았으므로 .NET Core Windows Forms Designer 별도 설치가 필요할 수 있습니다. 나중에 확인해 둡니다.

    2019/12/21 추가



    Visual Studio 16.5 Preview 1에서 선택적으로 미리 보기 기능을 사용하도록 설정해야 하지만 Windows Forms 디자이너가 표시됩니다.
    여러분 기다리세요! WinForms가 디자이너에서 포토 페타 가능하게! !

    C#에서 포토 페타를 할 수 있는지 확인한 후 VB에서도 포토 페타를 할 수 있음을 확인했습니다.


    유감스럽게도, 버튼을 배치해 클릭 이벤트의 제휴인 Handles 구가 자동으로 기술되게 되어 있지 않았습니다. 여기는 수동으로 작성해야합니다.
    추가하면 이벤트 처리가 호출되고 메시지 상자가 표시됩니다.

    버튼 이벤트
    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            MessageBox.Show("Hello! .NET Core 3.0")
        End Sub
    
        Private Sub Button2_Click(sender As Object, e As EventArgs)
    
        End Sub
    End Class
    



    마지막으로



    Microsoft 담당자의 발언에 따르면

    Microsoft는 애플리케이션 이벤트, 애플리케이션 모델, 싱글 인스턴스 애플리케이션 등의 VB 기능을 완벽하게 만든 다음 템플릿을 추가하고 싶다는 의향이 있다.

    개인 프로젝트라면 무리하게도 프로젝트를 작성하는 것으로 VB를 사용할 수 있습니다만, 일로서는 Microsoft가 공식적으로 작성해 주지 않는 것에는 현재는 사용할 수 없네요.

    좋은 웹페이지 즐겨찾기