.NET Standard - Introduction
Why Stack Overflow recommends it
Stack Overflow users link it when answering questions about referencing .NET Framework, .NET Core and PCL projects from each other, since it explains what .NET Standard is straight from the person who runs it.
Recommended by 4 people across 5 different months, 2016 to 2018.
What it is
A ten-minute introduction to .NET Standard by Immo Landwerth, the program manager responsible for it at Microsoft. He explains what the specification is, how it relates to .NET Framework, .NET Core, Xamarin and Mono, and why library authors should target it. Slides are linked from the description.
What people said
Recommends Travis Boatman · 2016-12 · Stack Overflow · on “Are .NET Core projects referencing PCLs cross-platform?”
Since your F# project targets the .NET Framework it will not run cross platform. If you modify your F# project to target the .NET Standard library it will. Here [this video] is a video by Immo Landwerth explaining how the .NET Standard Library works. You should be able to just to reference the .NET standard library and not have to change anything. However the current version, which is 1.6, is missing a lot of API's from .NET Framework. This is fixed in 2.0. Infact since your using .NET Core 1.1 I think you are already using 2.0, but I'm not certain. Here [LINK] is another video by Immo explaining how it should work. That being said, I'm not sure what the F# support is like with .NET Standard.
Recommends LxL · 2017-07 · Stack Overflow · on “Referencing between NetStandard and .Net Framework”
According to this page [LINK] you should be able to achieve your purpose because .NET Standard 1.2 support .NET Framework 4.5.1 ( UPDATE : This statement is not 100% correct. Please see the Update section below.) I tried to set up a solution in VS 2017 and set the references as you described. Here is the result. [LINK] and this is the Class1.cs in NetStandard12.CentralLibrary [LINK] The code compiles fine without any errors. Note : your code may fail if the Framework452.Library uses an API that is not supported by .NET Standard 1.2 (e.g Winforms, Win32 API or any Microsoft proprietary library that does not make sense for cross platform). I recommend this youtube playlist on the .NET standard
Recommends Jamie Taylor · 2017-11 · Stack Overflow · on “Reference a .Net 4.6.2 project in a .NetCore project (VS2017 15.4.4)”
As user magicandre1981 said, you should downgrade from .NET Framework version 4.6.2 to 4.6.1. Taking a look at the .NET Standard version table [LINK] , you can see that version 4.6. 1 is supported by .NET Standard 2.0 (and thus .NET Core 2.0), but 4.6. 2 is not listed (therefore not supported). For those unable to click through, I took the following screen shot of the table presented on the above linked page: [LINK] (image is correct as on Nov 17, 2017) I'd also recommend taking a look through the documentation for the .NET Standard [LINK] or at the videos that Immo Landwerth [this video] (who is the PM in charge of .NET Standard) has put out about it.
Recommends Jamie Taylor · 2017-11 · Stack Overflow · on “.Net Core and Full Framework projects in one solution”
You want to be looking into .NET Standard [LINK] - I'd also take a look at the videos put out by Immo Landwerth [this video] about it. The tl;dr is that .NET Standard lists the APIs and methods which you can expect a .NET application (Framework, Core, WPF, Xamarin, etc.) to have access to. Higher version numbers of the standard include more APIs but reduce the number of frameworks you can use (Framework, Core, WPF, Xamarin, etc.). Here's a visual of how .NET Standard is adopted and supported by the different frameworks. [LINK] Along the top are the versions of .NET Standard, and down the left are the versions of the frameworks. Using this chart, you can see that .NET Standard 2.0 is supported by:
Recommends Jamie Taylor · 2017-12 · Stack Overflow · on “Is ConfigurationManager.AppSettings available in .NET Core 2.0?”
@AlexSanséau The NuGet packages aren't poly-fills. When starting work on .NET Core Microsoft took the decision of making the APIs opt-in, meaning that your applications have a smaller footprint. I would recommend taking some time and watching the videos that Immo Landwerth has created on .NET Standard ( [this video] ) - he's the PM on the .NET Standard team
Recommends Jamie Taylor · 2017-12 · Stack Overflow · on “.NET Core project add reference to .NET Framework project. Why it's possible?”
This is the precise reason why the behaviour is supported. I've mentioned it several times in answers and comments, but I would recommend that the question OP takes a look at Immo Landwerth's videos on .NET Standard ( [this video] ) as well as the url that this answer links to
Recommends Jamie Taylor · 2017-12 · Stack Overflow · on “How to reference a .NET Core assembly in a .NET Framework application?”
Everything that @Gusman said is correct. You'll need to re-write your assembly as a .NET Standard one rather than .NET Core. The different ecosystems (Framework, Core, Xamarin, etc.) are implementations of the .NET Standard, so to target some code across all of them you need to create .NET Standard libraries. If you're unsure about the .NET Standard and how it fits, see these videos by Immo Landwerth [this video]
Recommends Wilson Vargas · 2018-01 · Stack Overflow · on “Missing PCL Templates in Xamarin Visual Studio 2017”
.NET Standard libraries are the replacement for Portable Class Libraries (PCL). However, a library that targets .NET Standard is still a PCL, and is referred to as a .NET Standard-based PCL. Certain PCL profiles are mapped to .NET Standard versions, and for profiles that have a mapping, the two library types will be able to reference each other. For more information, see PCL compatibility [LINK] on Microsoft Docs. .NET Standard is a formal specification of .NET APIs that are intended to be available on all .NET runtimes (such as .NET Framework, Mono, and .NET Core). In real terms, you can think of this as a simplified, yet expanded, Portable Class Library. Any code added to a .NET Standard l
Recommends Jamie Taylor · 2018-01 · Stack Overflow · on “.Net Core Assembly issues”
The following is based on a comment I added to the question: System.Web and System.ComponentModel.Composition are both supported and provided for .NET Core version 2.0, as can be seen here [LINK] and here [LINK] . (as a side note: [LINK] is a wonderful resource, provided by Microsoft to aid in figuring out which APIs are available in the different .NET platforms). But System.Runtime.Remoting [LINK] is not supported by .NET Core at this time. The listing for System.ServiceModel [LINK] shows that it is supported in .NET Core, but only when Platform Extensions is included along side it. If you need access to Windows or .NET Framework specific APIs, then it's recommended that you don't use .NET