如何在.NET Core类库

时间:2016-07-19 13:38:20

标签: .net .net-core project.json

我已经创建了.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下定义。有什么想法吗?

3 个答案:

答案 0 :(得分:24)

对于VS2019 .NET Core 3.1:

  1. 右键单击项目,然后选择卸载项目
  2. 右键单击项目,然后选择“编辑foobar.csproj”
  3. 在.NET Core 3.1中使用WPF和Winforms的示例:我在其中添加了UseWPF和UseWindowsForms标记。我也将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. 保存并右键单击该项目,然后再次选择重新加载项目

答案 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