如何在.NET Core3.1 类库项目中使用System.Windows.Forms

news/2024/5/19 23:24:24 标签: .netcore, WinForm, 类库

网上说法大多都是直接添加对.Net Framework框架的引用,但是这种方法打包很不友好。于是开始了网络搜索,翻到了微软的文档,才找到直接引用 System.Windows.Froms 程序集的方法。还隐藏的很深,地址:Upgrade a Windows Forms app to .NET 7 - Windows Forms .NET | Microsoft Learn

很明显没有这个System.Windows.Forms程序集,要求 .Net Core 版本 >= 3.0,其实只要修改项目的csproj文件就好了:

可以使用记事本或在项目上直接左键双击:

初始化文件内容大致如下:

修改第一行的SDK,注意多的这个WindowsDesktop

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

修改PropertyGroup:

<PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <OutputType>Library</OutputType>
    <UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>

在.NET Core 3.1中使用WPF或Winforms的示例:需要添加UseWPF和UseWindowsForms标记:

<UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms>

修改完成之后,代码显示即正常了:

生成项目也是成功的:

如果使用net6.0的话,可以直接写 <TargetFramework>net6.0-windows</TargetFramework> 即可。

针对.NET Core < 3,它在Windows上没有WinForms,但是,如果您需要在Linux上使用WinForms进行编译,则仍然有效,因为.NET Core WinForms仅在Windows上运行。

混合框架当然是解决问题的一种方法-但是,为什么要使用.NET Core?

但是您可以做的是将System.Windows.Forms的单声道实现移植到NetStandard。
如这里:https://github.com/ststeiger/System.CoreFX.Forms

希望本文对你有帮助。


http://www.niftyadmin.cn/n/5080902.html

相关文章

Apache Spark 的基本概念和在大数据分析中的应用 103.219.31.8

Apache Spark是一款基于内存的通用大数据处理框架&#xff0c;旨在加速数据处理速度。它包含了大规模数据处理&#xff0c;机器学习&#xff0c;图计算等组件。以下是几个 Apache Spark 的基本概念&#xff1a; Resilient Distributed Datasets (RDDs)&#xff1a;RDDs是一个分…

MySQL中的SHOW FULL PROCESSLIST命令

在MySQL数据库管理中&#xff0c;理解和监控当前正在执行的进程是至关重要的一环。MySQL提供了一系列强大的工具和命令&#xff0c;使得这项任务变得相对容易。其中&#xff0c;SHOW FULL PROCESSLIST命令就是一个非常有用的工具&#xff0c;它可以帮助我们查看MySQL服务器中的…

扩展表空间(PDB数据库):add_tbs.sh

#!/bin/bash source ~/.bash_profile export pdb_namepdb #PDB名称 export ts_namedefault_tbs #表空间 export inc_size_gb1 #需要增加的GB数,单位G #单次增长上限 inc_size_mb_threshold$((32 * 1024)) inc_size_mb$((${inc_size_gb} * 1024)) pdb_name$(ec…

渗透测试怎么入门?(超详细解读)

1. 什么是渗透测试 渗透测试就是模拟真实黑客的攻击手法对目标网站或主机进行全面的安全评估&#xff0c;与黑客攻击不一样的是&#xff0c;渗透测试的目的是尽可能多地发现安全漏洞&#xff0c;而真实黑客攻击只要发现一处入侵点即可以进入目标系统。 一名优秀的渗透测试工程…

网络爬虫实践小结

背景 近期工作中要解决两个问题&#xff0c;一个是数据组需要网爬一些图片数据&#xff0c;另外一个是要批量爬取公司用于文档协同的一个网站上的附件。于是乎&#xff0c;就写了两个脚本去完成任务。 爬虫思路 第一步&#xff1a;向确定的url发送请求&#xff0c;接收服务器…

力扣第98题 验证二叉搜索树 c++ 与上一篇文章相似

题目 98. 验证二叉搜索树 中等 相关标签 树 深度优先搜索 二叉搜索树 二叉树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当…

#IIC 通信协议

IIC简介 I2C 通讯协议 (Inter &#xff0d; Integrated Circuit) 是由 Phiilps 公司开发的 物理层 它的物理层有如下特点&#xff1a; (1) 它是一个支持设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中&#xff0c;可连接多个 I2C 通讯设备&#xff0c;支…

COCO格式json切分为labelme可识别json

coco数据格式相关内容参考之前博客 切分的关键在于将coco_json中的annotation信息转化为labelme中shape的坐标信息 labelme中shape需要的是多边形的点坐标&#xff0c;存储格式为[[x1,y1], [x2,y2]......] import os import json import pycocotools.mask as mask_utils fr…