我已经创建了.NET Core类库并尝试针对net40框架构建它。我想从System.Windows.Forms程序集中使用Clipboard类。我怎么能这样做?
我的project.json文件:
{
"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下定义。有什么想法吗?
答案 0 :(得分:24)
对于VS2019 .NET Core 3.1:
Microsoft.NET.Sdk
更改为Microsoft.NET.Sdk.WindowsDesktop
以便也可以使用wpf。<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>
...
答案 1 :(得分:13)
您需要的是"frameworkAssemblies"
,例如:
"frameworks": {
"netstandard1.6": {
"dependencies": {
"NETStandard.Library": "1.6.0"
}
},
"net40": {
"frameworkAssemblies": {
"System.Windows.Forms": {}
}
}
}
使用Clipboard
还需要将主要线程设置为STA,因此不要忘记在应用程序中将[STAThread]
添加到Main()
。
答案 2 :(得分:1)
混合框架无疑是一种方法-但是,为什么要使用.NET Core?
但是您可以做的是将System.Windows.Forms的单声道实现移植到NetStandard。
如这里:
https://github.com/ststeiger/System.CoreFX.Forms