如何在.NET核心类库中使用System.Windows.Forms
我已经创建了.NET核心类库,并尝试根据net40框架构建它。我想使用System.Windows.Forms程序集中的剪贴板类。我该怎么做 My project.json文件:如何在.NET核心类库中使用System.Windows.Forms,.net,.net-core,project.json,.net,.net Core,Project.json,我已经创建了.NET核心类库,并尝试根据net40框架构建它。我想使用System.Windows.Forms程序集中的剪贴板类。我该怎么做 My project.json文件: { "version": "1.0.0-*", "dependencies": { "NETStandard.Library": "1.6.0" }, "frameworks": { "netstandard1.6": { "i
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.6.0"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50",
"buildOptions": {
"define": [
"NETCORE"
]
},
"dependencies": {
"System.Threading": "4.0.11",
"System.Threading.Thread": "4.0.0",
"System.Threading.Tasks": "4.0.11"
}
},
"net40": {
"buildOptions": {
"define": [
"NET40"
]
},
"dependencies": {
// dependency should be here but there is no such dll
}
}
}
}
我所有的net40特定代码都在net40定义下。有什么想法吗?您需要的是,例如:
"frameworks": {
"netstandard1.6": {
"dependencies": {
"NETStandard.Library": "1.6.0"
}
},
"net40": {
"frameworkAssemblies": {
"System.Windows.Forms": {}
}
}
}
使用
Clipboard
还需要将主线程设置为STA,因此不要忘记将[STAThread]
添加到应用程序中的main()
。注意:下面是针对.NET Core<3的,Windows上没有WinForms
但是,如果您需要在Linux上使用WinForms编译某些东西,它仍然有效,因为.NET核心WinForms仅在Windows上运行
混合框架当然是一种方法——但是,为什么要使用.NETCore呢
但您可以将System.Windows.Forms的mono实现移植到NetStandard。例如:
对于VS2019.NET Core 3.1:
Microsoft.NET.Sdk
更改为Microsoft.NET.Sdk.WindowsDesktop
,以便能够同时使用wpf
萨克
萨克
萨克
萨克
netcoreapp3.1
真的
真的
...
是的,你说得对。但您也可以使用.NET核心创建简单的控制台应用程序。我尝试使用复制/粘贴功能为我的需要创建自定义控制台,因此我需要从剪贴板复制数据并将其粘贴到我的控制台。因此,您必须找到另一个属于.NET Core的类才能使用剪贴板或切换到目标为“Legacy.NET”的控制台应用程序@MarcoGuignard这正是
net40
框架的用途。它允许您编写在.Net Core和.Net Framework上工作的库和应用程序,同时尽可能利用.Net Framework的特定功能。如何在新的配置文件格式.csproj中做到这一点?@ZEE您知道.csproj中的任何示例吗?@ZEE查看此答案谢谢。使用不带WPF的Windows窗体还需要设置
。
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
...