如何将 System.Windows.Forms 添加到我的 .NET 5.0 项目中?

Tod*_*son 6 .net vb.net visual-studio winforms

对于我缺乏术语和理解,我提前表示歉意,我对 .NET 和 Visual Studio 非常陌生。

我在 Windows 7 64 位上的 Visual Studio Community 2019 版本 16.10.4 中使用 Visual Basic 为 .NET 5.0 制作控制台应用程序。

我正在尝试使用 Windows.Forms.Form 对象并弹出一个小窗口,并要求用户从列表框中选择一个项目。但到目前为止,我还没有成功地将 System.Windows.Forms 添加到我的项目中。

我尝试过Imports System.Windows.Forms,但给出了警告“导入‘System.Windows.Forms’中指定的命名空间或类型不包含任何公共成员或无法找到。”。

我转到“项目”->“添加 COM 引用”->“System_Windows_Forms”(版本 2.0)

该引用有一个警告:“无法为类型库 {215d64d2-031c-33c7-96e3-61794cd1ee61} 创建包装器程序集。类型库“System_Windows_Forms”已从 CLR 程序集导出,无法作为 CLR 程序集重新导入。 ”

我听说直接添加 .dll 可以解决这个问题,所以我删除了 COM 引用并转到“项目”->“添加项目引用”->“浏览”->“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System”。 Windows.Forms.dll”

当我搜索 Forms.dll 时,我发现了大约 10 个文件,因此我只选择了看起来最正确的一个。之后,我可以在脚本中使用这些对象,并且 Visual Studio 可以自动完成对象的属性和功能。但是当我实际进入调试器并尝试运行脚本时,我收到错误:

System.IO.FileNotFoundException
HResult=0x80070002
Message=无法加载文件或程序集“System.Drawing.Common,Version=0.0.0.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”。该系统找不到指定的文件。
源 = System.Windows.Forms
StackTrace:
在 System.Windows.Forms.Control..ctor(Boolean autoInstallSyncContext)
在 System.Windows.Forms.Control..ctor()
在 System.Windows.Forms.ListControl..ctor()
在 System.Windows.Forms.ListBox..ctor()
在 GetNovel.Program.DetermineNovel()

这是导致错误的我的子程序:

Sub DetermineNovel()
    Dim Novels As Object = {{"Moon's Labyrinth", "ML", True, 262, 362}, {"Keyboard Immortal", "KI", False, 254, 254}}

    Dim SelectBox As New Windows.Forms.ListBox
    Dim i As Long
    For i = LBound(Novels) To UBound(Novels)
        SelectBox.Items.Add(Novels(i, 0))
    Next i

    Dim NovelSelect As New Windows.Forms.Form
    NovelSelect.Controls.Add(SelectBox)
    NovelSelect.Text = "Select Novel:"

    NovelSelect.Show()
End Sub
Run Code Online (Sandbox Code Playgroud)

Pau*_*ams 16

手动编辑 .csproj 文件。如图所示设置TargetFramework和。UseWindowsForms

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

  ...
Run Code Online (Sandbox Code Playgroud)

编辑:更新到.NET 6