在 .Net Core 类库中使用 Windows 窗体 - .NET Core 控件库

Cha*_*les 10 c# winforms .net-core

我正在尝试创建一个引用 .net core 3 版本的 winform 的 .net core 3 类库(因此该程序集本身可以被 .net core 3 WinForm 程序集引用)。

一个新的 .net 核心 WinForm 项目引用了 Microsoft.WindowsDesktop.App.WindowsForms,但是我找不到任何具有该名称的 nuget 包。

我需要做什么来引用 .net core 3 winform?

Rez*_*aei 18

更新:在 VS 2019 的更高版本中(我尝试了 16.8.2 版),有一个适用于 .NET Core 的Windows 窗体控件库的项目模板。

目前Windows Forms .NET Core处于预览模式,我不知道 VS 2019 16.2.2 中 .NET Core 中 Windows Forms Control Library 的任何官方 Nuget 包或项目模板。

但是要创建Windows 窗体控件库,您可以使用以下说明:

  1. 添加类库 (.NET Core)类型的新项目
  2. 创建项目后,右键单击项目文件并选择编辑项目文件
  3. 将项目 SDK 更改为 <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  4. 通过添加<UseWindowsForms>true</UseWindowsForms>.

现在项目文件应该如下所示:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  <PropertyGroup>
    <OutputType>Library</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

现在,您可以将类似Form或 的Windows 窗体元素添加UserControl到此项目中,并且可以毫无问题地构建项目。


J R*_*J R 6

目前接受的答案似乎有些过时了。最近的语法要求在 TargetFramework 标签中指定目标,而不是在 Sdk 标签中:

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

  <PropertyGroup>
    <OutputType>Library</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

更多信息请点击此处


Rus*_*nro 5

我有一个核心 3.1 Web 应用程序,指的是一个依赖于 System.Windows.Forms 的 Framework 4.5.2 项目。我的解决方法是将以下行添加到 Web 应用程序 csproj 文件中:

FrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms"

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

  <PropertyGroup>
    <TargetFrameworks>netcoreapp3.1</TargetFrameworks>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

  <ItemGroup>
    <FrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)