Search code examples
.net.net-coreproject.json

How to use System.Windows.Forms in .NET Core class library


I've created .NET Core class library and try to build it against net40 framework. I want to use Clipboard class from System.Windows.Forms assembly. How can I do this?

My project.json file:

{
    "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
            }
        }
    }
}

All my net40 specific code is under NET40 define. Any thoughts?


Solution

  • What you need is "frameworkAssemblies", for example:

    "frameworks": {
      "netstandard1.6": {
        "dependencies": {
          "NETStandard.Library": "1.6.0"
        }
      },
      "net40": {
        "frameworkAssemblies": {
          "System.Windows.Forms": {}
        }
      }
    }
    

    Working with Clipboard also requires setting the main thread as STA, so don't forget to add [STAThread] to Main() in your application.